static ucs_status_t uct_cuda_md_open(const char *md_name, const uct_md_config_t *md_config, uct_md_h *md_p) { static uct_md_ops_t md_ops = { .close = (void*)ucs_empty_function, .query = uct_cuda_md_query, .mkey_pack = uct_cuda_mkey_pack, .mem_reg = uct_cuda_mem_reg, .mem_dereg = uct_cuda_mem_dereg }; static uct_md_t md = { .ops = &md_ops, .component = &uct_cuda_md }; *md_p = &md; return UCS_OK; } UCT_MD_COMPONENT_DEFINE(uct_cuda_md, UCT_CUDA_MD_NAME, uct_cuda_query_md_resources, uct_cuda_md_open, NULL, uct_cuda_rkey_unpack, uct_cuda_rkey_release, "CUDA_", uct_md_config_table, uct_md_config_t);
static ucs_status_t uct_ugni_md_open(const char *md_name, const uct_md_config_t *md_config, uct_md_h *md_p) { int domain_id; ucs_status_t status = UCS_OK; pthread_mutex_lock(&uct_ugni_global_lock); static uct_md_ops_t md_ops = { .close = uct_ugni_md_close, .query = uct_ugni_md_query, .mem_alloc = (void*)ucs_empty_function, .mem_free = (void*)ucs_empty_function, .mem_reg = uct_ugni_mem_reg, .mem_dereg = uct_ugni_mem_dereg, .mkey_pack = uct_ugni_rkey_pack }; static uct_ugni_md_t md = { .super.ops = &md_ops, .super.component = &uct_ugni_md_component, .ref_count = 0 }; *md_p = &md.super; if (!md.ref_count) { status = init_device_list(&job_info); if (UCS_OK != status) { ucs_error("Failed to init device list, Error status: %d", status); goto error; } status = uct_ugni_init_nic(0, &domain_id, &md.cdm_handle, &md.nic_handle, &md.address); if (UCS_OK != status) { ucs_error("Failed to UGNI NIC, Error status: %d", status); goto error; } } md.ref_count++; error: pthread_mutex_unlock(&uct_ugni_global_lock); return status; } uct_ugni_device_t * uct_ugni_device_by_name(const char *dev_name) { uct_ugni_device_t *dev; unsigned dev_index; if ((NULL == dev_name)) { ucs_error("Bad parameter. Device name is set to NULL"); return NULL; } for (dev_index = 0; dev_index < job_info.num_devices; ++dev_index) { dev = &job_info.devices[dev_index]; if ((strlen(dev_name) == strlen(dev->fname)) && (0 == strncmp(dev_name, dev->fname, strlen(dev->fname)))) { ucs_info("Device found: %s", dev_name); return dev; } } /* Device not found */ ucs_error("Cannot find: %s", dev_name); return NULL; } UCT_MD_COMPONENT_DEFINE(uct_ugni_md_component, UCT_UGNI_MD_NAME, uct_ugni_query_md_resources, uct_ugni_md_open, NULL, uct_ugni_rkey_unpack, uct_ugni_rkey_release, "UGNI_", uct_md_config_table, uct_md_config_t);