int mca_spml_yoda_add_procs(oshmem_proc_t** procs, size_t nprocs) { opal_bitmap_t reachable; int rc; size_t i; if (0 == nprocs) { return OSHMEM_SUCCESS; } OBJ_CONSTRUCT(&reachable, opal_bitmap_t); rc = opal_bitmap_init(&reachable, (int) nprocs); if (OSHMEM_SUCCESS != rc) { return rc; } rc = mca_bml.bml_add_procs(nprocs, (ompi_proc_t**) procs, &reachable); if (OSHMEM_SUCCESS != rc) { SPML_ERROR("SPML YODA: shmem error\n"); goto cleanup_and_return; } rc = mca_bml.bml_register_error(mca_spml_yoda_error_handler); if (OMPI_SUCCESS != rc) { goto cleanup_and_return; } /* create btl index and map */ rc = create_btl_list(); if (OSHMEM_SUCCESS != rc) { goto cleanup_and_return; } for (i = 0; i < nprocs; i++) { rc = create_btl_idx(i); if (OSHMEM_SUCCESS != rc) { goto cleanup_and_return; } } cleanup_and_return: OBJ_DESTRUCT(&reachable); return rc; }
int mca_spml_yoda_add_procs(oshmem_proc_t** procs, size_t nprocs) { opal_bitmap_t reachable; int rc; size_t i; if (0 == nprocs) { return OSHMEM_SUCCESS; } OBJ_CONSTRUCT(&reachable, opal_bitmap_t); rc = opal_bitmap_init(&reachable, (int) nprocs); if (OSHMEM_SUCCESS != rc) { return rc; } rc = mca_bml.bml_register_error(mca_spml_yoda_error_handler); if (OMPI_SUCCESS != rc) { goto cleanup_and_return; } /* create_btl_idx requires the proc was add_proc'ed, so do it now */ rc = MCA_PML_CALL(add_procs(procs, nprocs)); if (OMPI_SUCCESS != rc) { goto cleanup_and_return; } /* create btl index and map */ rc = create_btl_list(); if (OSHMEM_SUCCESS != rc) { goto cleanup_and_return; } for (i = 0; i < nprocs; i++) { rc = create_btl_idx(i); if (OSHMEM_SUCCESS != rc) { goto cleanup_and_return; } } cleanup_and_return: OBJ_DESTRUCT(&reachable); return rc; }