UCX interfaces - openucx/ucx GitHub Wiki

Placeholder to gather UCX’s interfaces to be used by UCC

UCP: A primary layer for accessing the UCX’s communication routines.

Motivation Collective communication operations are typically implemented using point-to-point communication and synchronization routines. In UCC, the collective routines are primarily implemented using UCX's point-to-point, RMA and atomic routines .i.e., UCP interfaces.

UCS: A set of utilities provided by UCX for implementing communication libraries.

UCS’s Configuration Reading Infrastructure

Interfaces

  • UCS/config/parser.h
  • UCS/config/global_opts.h
  • UCS/config/types.h

Use-case

  • Read library configuration from the environment variables and the config file.

UCG's Requirements (Added by Alex, not yet discussed by the community)

Below is the list of existing functions UCG currently invokes from other UCX layers (by topic, some are actually global variables). UCG also extends UCP with new API, ucp_extend(), but this API is currently not part of the upstream UCX.

UCP

Library initialization

  • ucp_init_version

Worker usage

  • ucp_worker_get_address
  • ucp_worker_progress
  • ucp_worker_release_address

Connection establishment

  • ucp_ep_create
  • ucp_proxy_ep_test
  • ucp_wireup_connect_remote

Adding a custom Active-Message handler

  • ucp_am_handlers

UCT

Interface and endpoint usage

  • uct_iface->ops.am_short/bcopy/zcopy
  • uct_iface->ops.iface_create/progress/destroy
  • uct_iface->ops.iface_create/connect/destroy

Memory registration

  • uct_ib_md_indirect_rkey
  • uct_md_mem_dereg
  • uct_md_mem_reg

UCS

Configuration parsing

  • ucs_global_opts
  • ucs_config_clone_table
  • ucs_config_clone_uint
  • ucs_config_clone_ulong
  • ucs_config_global_list
  • ucs_config_help_generic
  • ucs_config_help_table
  • ucs_config_parser_fill_opts
  • ucs_config_parser_release_opts
  • ucs_config_release_nop
  • ucs_config_release_table
  • ucs_config_sprintf_memunits
  • ucs_config_sprintf_uint
  • ucs_config_sprintf_ulunits
  • ucs_config_sscanf_memunits
  • ucs_config_sscanf_table
  • ucs_config_sscanf_uint
  • ucs_config_sscanf_ulunits

Memory allocation and pools

  • ucs_calloc
  • ucs_realloc
  • ucs_free
  • ucs_mpool_cleanup
  • ucs_mpool_get_grow
  • ucs_mpool_hugetlb_free
  • ucs_mpool_hugetlb_malloc
  • ucs_mpool_init
  • ucs_mpool_put_inline

Pointer-array datastructure

  • ucs_ptr_array_cleanup
  • ucs_ptr_array_init
  • ucs_ptr_array_insert
  • ucs_ptr_array_replace

Profiling and statistics

  • ucs_stats_node_alloc
  • ucs_stats_node_free
  • ucs_profile_record

Strings and error messages

  • ucs_strdup
  • ucs_status_string
  • ucs_snprintf_zero
  • ucs_log_dispatch
  • ucs_fatal_error_format

Modular infrastructure

  • ucs_load_modules

Useful stubs

  • ucs_get_tid
  • ucs_empty_function
  • ucs_empty_function_return_no_resource