ucs_status_t uct_ugni_query_tl_resources(uct_pd_h pd, const char *tl_name, uct_tl_resource_desc_t **resource_p, unsigned *num_resources_p) { uct_tl_resource_desc_t *resources; int num_devices = job_info.num_devices; uct_ugni_device_t *devs = job_info.devices; int i; ucs_status_t status = UCS_OK; pthread_mutex_lock(&uct_ugni_global_lock); resources = ucs_calloc(job_info.num_devices, sizeof(uct_tl_resource_desc_t), "resource desc"); if (NULL == resources) { ucs_error("Failed to allocate memory"); num_devices = 0; resources = NULL; status = UCS_ERR_NO_MEMORY; goto error; } for (i = 0; i < job_info.num_devices; i++) { uct_ugni_device_get_resource(tl_name, &devs[i], &resources[i]); } error: *num_resources_p = num_devices; *resource_p = resources; pthread_mutex_unlock(&uct_ugni_global_lock); return status; }
ucs_status_t uct_ugni_query_tl_resources(uct_pd_h pd, uct_tl_resource_desc_t **resource_p, unsigned *num_resources_p) { uct_tl_resource_desc_t *resources; int num_devices = job_info.num_devices; uct_ugni_device_t *devs = job_info.devices; int i; ucs_status_t rc = UCS_OK; assert(!strncmp(pd->component->name, UCT_UGNI_TL_NAME, UCT_PD_NAME_MAX)); pthread_mutex_lock(&uct_ugni_global_lock); resources = ucs_calloc(job_info.num_devices, sizeof(uct_tl_resource_desc_t), "resource desc"); if (NULL == resources) { ucs_error("Failed to allocate memory"); num_devices = 0; resources = NULL; rc = UCS_ERR_NO_MEMORY; goto error; } for (i = 0; i < job_info.num_devices; i++) { uct_ugni_device_get_resource(&devs[i], &resources[i]); } error: *num_resources_p = num_devices; *resource_p = resources; pthread_mutex_unlock(&uct_ugni_global_lock); return rc; }