コード例 #1
0
ファイル: cma_iface.c プロジェクト: Di0gen/ucx
    iface_attr->overhead               = 50e-6; /* 50 us */
    return UCS_OK;
}

static UCS_CLASS_DECLARE_DELETE_FUNC(uct_cma_iface_t, uct_iface_t);

static uct_iface_ops_t uct_cma_iface_ops = {
    .iface_close         = UCS_CLASS_DELETE_FUNC_NAME(uct_cma_iface_t),
    .iface_query         = uct_cma_iface_query,
    .iface_get_address   = uct_cma_iface_get_address,
    .iface_is_reachable  = uct_cma_iface_is_reachable,
    .iface_flush         = (void*)ucs_empty_function_return_success,
    .ep_put_zcopy        = uct_cma_ep_put_zcopy,
    .ep_get_zcopy        = uct_cma_ep_get_zcopy,
    .ep_flush            = (void*)ucs_empty_function_return_success,
    .ep_create_connected = UCS_CLASS_NEW_FUNC_NAME(uct_cma_ep_t),
    .ep_destroy          = UCS_CLASS_DELETE_FUNC_NAME(uct_cma_ep_t),
};

static UCS_CLASS_INIT_FUNC(uct_cma_iface_t, uct_pd_h pd, uct_worker_h worker,
                           const char *dev_name, size_t rx_headroom,
                           const uct_iface_config_t *tl_config)
{
    UCS_CLASS_CALL_SUPER_INIT(uct_base_iface_t, &uct_cma_iface_ops, pd, worker,
                              tl_config UCS_STATS_ARG(NULL));
    return UCS_OK;
}

static UCS_CLASS_CLEANUP_FUNC(uct_cma_iface_t)
{
}
コード例 #2
0
ファイル: ugni_smsg_iface.c プロジェクト: brminich/ucx
        UCT_TL_EP_STAT_FLUSH_WAIT(ucs_derived_of(tl_ep, uct_base_ep_t));
        status = UCS_ERR_NO_RESOURCE;
    }

    return status;
}

uct_iface_ops_t uct_ugni_smsg_iface_ops = {
    .iface_query           = uct_ugni_smsg_iface_query,
    .iface_flush           = uct_ugni_smsg_iface_flush,
    .iface_close           = UCS_CLASS_DELETE_FUNC_NAME(uct_ugni_smsg_iface_t),
    .iface_get_address     = uct_ugni_iface_get_address,
    .iface_get_device_address = uct_ugni_iface_get_dev_address,
    .iface_is_reachable    = uct_ugni_iface_is_reachable,
    .iface_release_am_desc = uct_ugni_smsg_iface_release_am_desc,
    .ep_create             = UCS_CLASS_NEW_FUNC_NAME(uct_ugni_smsg_ep_t),
    .ep_get_address        = uct_ugni_smsg_ep_get_address,
    .ep_connect_to_ep      = uct_ugni_smsg_ep_connect_to_ep,
    .ep_destroy            = UCS_CLASS_DELETE_FUNC_NAME(uct_ugni_smsg_ep_t),
    .ep_pending_add        = uct_ugni_ep_pending_add,
    .ep_pending_purge      = uct_ugni_ep_pending_purge,
    .ep_am_short           = uct_ugni_smsg_ep_am_short,
    .ep_am_bcopy           = uct_ugni_smsg_ep_am_bcopy,
    .ep_flush              = uct_ugni_smsg_ep_flush,
};

static ucs_status_t ugni_smsg_activate_iface(uct_ugni_smsg_iface_t *iface)
{
    ucs_status_t status;
    gni_return_t ugni_rc;
    uint32_t pe_address;
コード例 #3
0
ファイル: ud_mlx5.c プロジェクト: tonycurtis/ucx
    return UCS_OK;
}


static void UCS_CLASS_DELETE_FUNC_NAME(uct_ud_mlx5_iface_t)(uct_iface_t*);

uct_iface_ops_t uct_ud_mlx5_iface_ops = {
    .iface_close           = UCS_CLASS_DELETE_FUNC_NAME(uct_ud_mlx5_iface_t),
    .iface_flush           = uct_ud_iface_flush,
    .iface_release_am_desc = uct_ib_iface_release_am_desc,
    .iface_get_address     = uct_ud_iface_get_address,
    .iface_is_reachable    = uct_ib_iface_is_reachable,
    .iface_query           = uct_ud_mlx5_iface_query,

    .ep_create             = UCS_CLASS_NEW_FUNC_NAME(uct_ud_mlx5_ep_t),
    .ep_destroy            = UCS_CLASS_DELETE_FUNC_NAME(uct_ud_mlx5_ep_t),
    .ep_get_address        = uct_ud_ep_get_address,

    .ep_create_connected   = uct_ud_mlx5_ep_create_connected,
    .ep_connect_to_ep      = uct_ud_mlx5_ep_connect_to_ep, 

    .ep_put_short          = uct_ud_mlx5_ep_put_short,
    .ep_am_short           = uct_ud_mlx5_ep_am_short,
    .ep_am_bcopy           = uct_ud_mlx5_ep_am_bcopy,

    .ep_pending_add        = uct_ud_ep_pending_add,
    .ep_pending_purge      = uct_ud_ep_pending_purge,

    .ep_flush              = uct_ud_ep_flush
};
コード例 #4
0
ファイル: ud_verbs.c プロジェクト: igor-ivanov/ucx
    ep->ah = ah;
    return UCS_OK;
}


static void UCS_CLASS_DELETE_FUNC_NAME(uct_ud_verbs_iface_t)(uct_iface_t*);

uct_iface_ops_t uct_ud_verbs_iface_ops = {
    .iface_close         = UCS_CLASS_DELETE_FUNC_NAME(uct_ud_verbs_iface_t),
    .iface_flush         = uct_ud_iface_flush,
    .iface_release_am_desc=uct_ib_iface_release_am_desc,
    .iface_get_address   = uct_ud_iface_get_address,
    .iface_is_reachable  = uct_ib_iface_is_reachable,
    .iface_query         = uct_ud_verbs_iface_query,

    .ep_create           = UCS_CLASS_NEW_FUNC_NAME(uct_ud_verbs_ep_t),
    .ep_destroy          = UCS_CLASS_DELETE_FUNC_NAME(uct_ud_verbs_ep_t),
    .ep_get_address      = uct_ud_ep_get_address,

    .ep_create_connected = uct_ud_verbs_ep_create_connected,
    .ep_connect_to_ep    = uct_ud_verbs_ep_connect_to_ep, 

    .ep_put_short        = uct_ud_verbs_ep_put_short,
    .ep_am_short         = uct_ud_verbs_ep_am_short,
    .ep_am_bcopy         = uct_ud_verbs_ep_am_bcopy,

    .ep_pending_add      = uct_ud_ep_pending_add,
    .ep_pending_purge    = uct_ud_ep_pending_purge,

    .ep_flush            = uct_ud_ep_flush
};
コード例 #5
0
ファイル: ugni_udt_iface.c プロジェクト: sergsagal1/ucx
    ucs_mpool_put(self->desc_any);
    ucs_mpool_cleanup(&self->free_desc, 1);
    pthread_mutex_destroy(&self->device_lock);
    uct_ugni_leave_async(&self->super);
}

static UCS_CLASS_DEFINE_DELETE_FUNC(uct_ugni_udt_iface_t, uct_iface_t);

static uct_iface_ops_t uct_ugni_udt_iface_ops = {
    .ep_am_short           = uct_ugni_udt_ep_am_short,
    .ep_am_bcopy           = uct_ugni_udt_ep_am_bcopy,
    .ep_pending_add        = uct_ugni_udt_ep_pending_add,
    .ep_pending_purge      = uct_ugni_udt_ep_pending_purge,
    .ep_flush              = uct_ugni_ep_flush,
    .ep_fence              = uct_base_ep_fence,
    .ep_create_connected   = UCS_CLASS_NEW_FUNC_NAME(uct_ugni_udt_ep_t),
    .ep_destroy            = UCS_CLASS_DELETE_FUNC_NAME(uct_ugni_udt_ep_t),
    .iface_flush           = uct_ugni_iface_flush,
    .iface_fence           = uct_base_iface_fence,
    .iface_close           = UCS_CLASS_DELETE_FUNC_NAME(uct_ugni_udt_iface_t),
    .iface_query           = uct_ugni_udt_iface_query,
    .iface_get_address     = uct_ugni_iface_get_address,
    .iface_get_device_address = uct_ugni_iface_get_dev_address,
    .iface_is_reachable    = uct_ugni_iface_is_reachable
};

static ucs_mpool_ops_t uct_ugni_udt_desc_mpool_ops = {
    .chunk_alloc   = ucs_mpool_hugetlb_malloc,
    .chunk_release = ucs_mpool_hugetlb_free,
    .obj_init      = NULL,
    .obj_cleanup   = NULL
コード例 #6
0
ファイル: dc_mlx5.c プロジェクト: alex--m/ucx
static void UCS_CLASS_DELETE_FUNC_NAME(uct_dc_mlx5_iface_t)(uct_iface_t*);

static uct_rc_iface_ops_t uct_dc_mlx5_iface_ops = {
    {
        {
            .iface_close              = UCS_CLASS_DELETE_FUNC_NAME(uct_dc_mlx5_iface_t),
            .iface_query              = uct_dc_mlx5_iface_query,
            .iface_get_device_address = uct_ib_iface_get_device_address,
            .iface_is_reachable       = uct_ib_iface_is_reachable,
            .iface_release_am_desc    = uct_ib_iface_release_am_desc,
            .iface_get_address        = uct_dc_iface_get_address,

            .iface_flush              = uct_dc_iface_flush,

            .ep_create_connected      = UCS_CLASS_NEW_FUNC_NAME(uct_dc_mlx5_ep_t),
            .ep_destroy               = UCS_CLASS_DELETE_FUNC_NAME(uct_dc_mlx5_ep_t),

            .ep_am_short              = uct_dc_mlx5_ep_am_short,
            .ep_am_bcopy              = uct_dc_mlx5_ep_am_bcopy,
            .ep_am_zcopy              = uct_dc_mlx5_ep_am_zcopy,

            .ep_put_short             = uct_dc_mlx5_ep_put_short,
            .ep_put_bcopy             = uct_dc_mlx5_ep_put_bcopy,
            .ep_put_zcopy             = uct_dc_mlx5_ep_put_zcopy,

            .ep_get_bcopy             = uct_dc_mlx5_ep_get_bcopy,
            .ep_get_zcopy             = uct_dc_mlx5_ep_get_zcopy,

            .ep_atomic_add64          = uct_dc_mlx5_ep_atomic_add64,
            .ep_atomic_fadd64         = uct_dc_mlx5_ep_atomic_fadd64,
コード例 #7
0
ファイル: gdr_copy_iface.c プロジェクト: openucx/ucx
    iface_attr->latency.growth          = 0;
    iface_attr->bandwidth               = 6911 * 1024.0 * 1024.0;
    iface_attr->overhead                = 0;
    iface_attr->priority                = 0;

    return UCS_OK;
}

static uct_iface_ops_t uct_gdr_copy_iface_ops = {
    .ep_put_short             = uct_gdr_copy_ep_put_short,
    .ep_get_short             = uct_gdr_copy_ep_get_short,
    .ep_pending_add           = ucs_empty_function_return_busy,
    .ep_pending_purge         = ucs_empty_function,
    .ep_flush                 = uct_base_ep_flush,
    .ep_fence                 = uct_base_ep_fence,
    .ep_create                = UCS_CLASS_NEW_FUNC_NAME(uct_gdr_copy_ep_t),
    .ep_destroy               = UCS_CLASS_DELETE_FUNC_NAME(uct_gdr_copy_ep_t),
    .iface_flush              = uct_base_iface_flush,
    .iface_fence              = uct_base_iface_fence,
    .iface_progress_enable    = ucs_empty_function,
    .iface_progress_disable   = ucs_empty_function,
    .iface_progress           = ucs_empty_function_return_zero,
    .iface_close              = UCS_CLASS_DELETE_FUNC_NAME(uct_gdr_copy_iface_t),
    .iface_query              = uct_gdr_copy_iface_query,
    .iface_get_device_address = (void*)ucs_empty_function_return_success,
    .iface_get_address        = uct_gdr_copy_iface_get_address,
    .iface_is_reachable       = uct_gdr_copy_iface_is_reachable,
};

static UCS_CLASS_INIT_FUNC(uct_gdr_copy_iface_t, uct_md_h md, uct_worker_h worker,
                           const uct_iface_params_t *params,