Skip to content

Instantly share code, notes, and snippets.

@hiroyuki-sato
Last active May 27, 2019 13:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiroyuki-sato/8185adc6ef736b322fb945c7b7a01f54 to your computer and use it in GitHub Desktop.
Save hiroyuki-sato/8185adc6ef736b322fb945c7b7a01f54 to your computer and use it in GitHub Desktop.
OpenUCX Memo

Transport interface operations uct_iface_ops_t

Endpoint Put

Name Description
ep_put_short
ep_put_bcopy
ep_put_zcopy

Endpoint Get

Name Description
ep_get_short
ep_get_bcopy
ep_get_zcopy

Endpoint Active message

Name Description
ep_am_short
ep_am_bcopy
ep_am_zcopy

Endpoint atomics

Name Description
ep_atomic_cswap64
ep_atomic_cswap32
ep_atomic32_post
ep_atomic64_post
ep_atomic32_fetch
ep_atomic64_fetch

Endpoint tagged operations

Name Description
ep_tag_eager_short
ep_tag_eager_bcopy
ep_tag_eager_zcopy
ep_tag_rndv_zcopy
ep_tag_rndv_cancel
ep_tag_rndv_request

Interface tagged operations

Name Description
iface_tag_recv_zcopy
iface_tag_recv_cancel

Endpoint pending queue

Name Description
ep_pending_add
ep_pending_purge

Endpoint synchronization

Name Description
ep_flush
ep_fence
ep_check

Endpoint connection establishment

Name Description
ep_create
ep_destroy
ep_get_address
ep_connect_to_ep
iface_accept
iface_reject

Interface synchronization

Name Description
iface_flush
iface_fence

Interface progress control

Name Description
iface_progress_enable
iface_progress_disable
iface_progress

Interface events

Name Description
iface_event_fd_get
iface_event_arm

Interface management

Name Description
iface_close
iface_query

Interface connection establishment

Name Description
iface_get_device_address
iface_get_address
iface_is_reachable

function RDMACM TCP
ep_am_bcopy
ep_am_short
ep_am_zcopy
ep_atomic32_fetch
ep_atomic32_post
ep_atomic64_fetch
ep_atomic64_post
ep_atomic_cswap32
ep_atomic_cswap64
ep_check
ep_connect_to_ep
ep_create Y Y
ep_destroy Y Y
ep_fence Y Y
ep_flush Y Y
ep_get_address
ep_get_bcopy
ep_get_short
ep_get_zcopy
ep_pending_add
ep_pending_purge Y Y
ep_put_bcopy
ep_put_short
ep_put_zcopy
ep_tag_eager_bcopy
ep_tag_eager_short
ep_tag_eager_zcopy
ep_tag_rndv_cancel
ep_tag_rndv_request
ep_tag_rndv_zcopy
iface_accept Y Y
iface_close Y Y
iface_event_arm
iface_event_fd_get
iface_fence Y Y
iface_flush Y Y
iface_get_address Y Y
iface_get_device_address Y Y
iface_is_reachable Y Y
iface_progress Y Y
iface_progress_disable Y Y
iface_progress_enable Y Y
iface_query Y Y
iface_reject Y Y
iface_tag_recv_cancel
iface_tag_recv_zcopy
typedef struct uct_ib_iface_ops      uct_ib_iface_ops_t;


struct uct_ib_iface_ops {
    uct_iface_ops_t         super;
    ucs_status_t            (*create_cq)(struct ibv_context *context, int cqe,
                                         struct ibv_comp_channel *channel,
                                         int comp_vector, int ignore_overrun,
                                         size_t *inl, struct ibv_cq **cq_p);
    ucs_status_t            (*arm_cq)(uct_ib_iface_t *iface,
                                      uct_ib_dir_t dir,
                                      int solicited_only);
    void                    (*event_cq)(uct_ib_iface_t *iface,
                                        uct_ib_dir_t dir);
    void                    (*handle_failure)(uct_ib_iface_t *iface, void *arg,
                                              ucs_status_t status);
    ucs_status_t            (*set_ep_failed)(uct_ib_iface_t *iface, uct_ep_h ep,
                                             ucs_status_t status);
    ucs_status_t            (*create_qp)(uct_ib_iface_t *iface, uct_ib_qp_attr_t *attr,
                                         struct ibv_qp **qp_p);
    ucs_status_t            (*init_res_domain)(uct_ib_iface_t *iface);
    void                    (*cleanup_res_domain)(uct_ib_iface_t *iface);
};
typedef struct uct_rc_iface_ops {
    uct_ib_iface_ops_t   super;
    ucs_status_t         (*init_rx)(uct_rc_iface_t *iface,
                                    const uct_rc_iface_config_t *config);
    ucs_status_t         (*fc_ctrl)(uct_ep_t *ep, unsigned op,
                                    uct_rc_fc_request_t *req);
    ucs_status_t         (*fc_handler)(uct_rc_iface_t *iface, unsigned qp_num,
                                       uct_rc_hdr_t *hdr, unsigned length,
                                       uint32_t imm_data, uint16_t lid,
                                       unsigned flags);
} uct_rc_iface_ops_t;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment