int mca_pml_yalla_open(void) { mxm_error_t error; PML_YALLA_VERBOSE(1, "mca_pml_yalla_open"); /* Set memory hooks */ if ((OPAL_MEMORY_FREE_SUPPORT | OPAL_MEMORY_MUNMAP_SUPPORT) == ((OPAL_MEMORY_FREE_SUPPORT | OPAL_MEMORY_MUNMAP_SUPPORT) & opal_mem_hooks_support_level())) { PML_YALLA_VERBOSE(1, "enabling on-demand memory mapping"); opal_setenv("MXM_PML_MEM_ON_DEMAND_MAP", "y", false, &environ); ompi_pml_yalla.using_mem_hooks = 1; } else { PML_YALLA_VERBOSE(1, "disabling on-demand memory mapping"); ompi_pml_yalla.using_mem_hooks = 0; } opal_setenv("MXM_PML_SINGLE_THREAD", ompi_mpi_thread_multiple ? "n" : "y", false, &environ); /* Read options */ error = mxm_config_read_opts(&ompi_pml_yalla.ctx_opts, &ompi_pml_yalla.ep_opts, "MPI", NULL, 0); if (MXM_OK != error) { return OMPI_ERROR; } error = mxm_init(ompi_pml_yalla.ctx_opts, &ompi_pml_yalla.mxm_context); if (MXM_OK != error) { return OMPI_ERROR; } return OMPI_SUCCESS; }
int mca_pml_yalla_init(void) { mxm_context_opts_t *ctx_opts; mxm_ep_opts_t *ep_opts; mxm_error_t error; int rc; PML_YALLA_VERBOSE(1, "mca_pml_yalla_init"); /* Set memory hooks */ if ((OPAL_MEMORY_FREE_SUPPORT | OPAL_MEMORY_MUNMAP_SUPPORT) == ((OPAL_MEMORY_FREE_SUPPORT | OPAL_MEMORY_MUNMAP_SUPPORT) & opal_mem_hooks_support_level())) { PML_YALLA_VERBOSE(1, "enabling on-demand memory mapping"); opal_setenv("MXM_PML_MEM_ON_DEMAND_MAP", "y", false, &environ); ompi_pml_yalla.using_mem_hooks = 1; } else { PML_YALLA_VERBOSE(1, "disabling on-demand memory mapping"); ompi_pml_yalla.using_mem_hooks = 0; } opal_setenv("MXM_PML_SINGLE_THREAD", ompi_mpi_thread_multiple ? "n" : "y", false, &environ); /* Read options */ error = mxm_config_read_opts(&ctx_opts, &ep_opts, "PML", NULL, 0); if (MXM_OK != error) { return OMPI_ERROR; } error = mxm_init(ctx_opts, &ompi_pml_yalla.mxm_context); if (MXM_OK != error) { return OMPI_ERROR; } if (ompi_pml_yalla.using_mem_hooks) { opal_mem_hooks_register_release(mca_pml_yalla_mem_release_cb, NULL); } error = mxm_ep_create(ompi_pml_yalla.mxm_context, ep_opts, &ompi_pml_yalla.mxm_ep); if (MXM_OK != error) { return OMPI_ERROR; } mxm_config_free_context_opts(ctx_opts); mxm_config_free_ep_opts(ep_opts); rc = send_ep_address(); if (rc < 0) { return rc; } OBJ_CONSTRUCT(&ompi_pml_yalla.send_reqs, mca_pml_yalla_freelist_t); OBJ_CONSTRUCT(&ompi_pml_yalla.bsend_reqs, mca_pml_yalla_freelist_t); OBJ_CONSTRUCT(&ompi_pml_yalla.recv_reqs, mca_pml_yalla_freelist_t); OBJ_CONSTRUCT(&ompi_pml_yalla.convs, mca_pml_yalla_freelist_t); opal_progress_register(mca_pml_yalla_progress); PML_YALLA_VERBOSE(2, "created mxm context %p ep %p", ompi_pml_yalla.mxm_context, ompi_pml_yalla.mxm_ep); return OMPI_SUCCESS; }