示例#1
0
static int cray_lookup(const char service_name[],
                       opal_list_t *info,
                       char port[], int portLen)
{
    int rc;

    if (PMI_SUCCESS != (rc = PMI2_Nameserv_lookup(service_name, NULL, port, portLen))) {
        OPAL_PMI_ERROR(rc, "PMI2_Nameserv_lookup");
        return OPAL_ERROR;
    }

    return OPAL_SUCCESS;
}
示例#2
0
static int s2_lookup(opal_list_t *data, opal_list_t *info)
{
#if 0
    int rc;

    if (PMI2_SUCCESS != (rc = PMI2_Nameserv_lookup(service_name, NULL, port, portLen))) {
        OPAL_PMI_ERROR(rc, "PMI2_Nameserv_lookup");
        return OPAL_ERROR;
    }

#endif
    return OPAL_ERR_NOT_IMPLEMENTED;
}
示例#3
0
static char* lookup ( char *service_name, ompi_info_t *info )
{
    char *port=NULL;
    int rc;

#if WANT_PMI2_SUPPORT
    port = (char*)malloc(1024*sizeof(char));  /* arbitrary size */
    if (PMI_SUCCESS != (rc = PMI2_Nameserv_lookup(service_name, NULL, port, 1024))) {
        OMPI_ERROR_LOG(rc);
        free(port);
        return NULL;
    }
#else
    if (PMI_SUCCESS != (rc = PMI_Lookup_name(service_name, port))) {
        OMPI_ERROR_LOG(rc);
        return NULL;
    }
#endif
    return port;
}
示例#4
0
int MPID_NS_Lookup( MPID_NS_Handle handle, const MPID_Info *info_ptr,
                    const char service_name[], char port[] )
{
    int mpi_errno = MPI_SUCCESS;
    int rc;
    MPIU_UNREFERENCED_ARG(info_ptr);
    MPIU_UNREFERENCED_ARG(handle);

#ifdef USE_PMI2_API
    /* release the global CS for PMI calls */
    MPID_THREAD_CS_EXIT(GLOBAL, MPIR_THREAD_GLOBAL_ALLFUNC_MUTEX);
    rc = PMI2_Nameserv_lookup(service_name, info_ptr, port, MPI_MAX_PORT_NAME);
    MPID_THREAD_CS_ENTER(GLOBAL, MPIR_THREAD_GLOBAL_ALLFUNC_MUTEX);
#else
    rc = PMI_Lookup_name( service_name, port );
#endif
    MPIR_ERR_CHKANDJUMP1(rc, mpi_errno, MPI_ERR_NAME, "**namepubnotfound", "**namepubnotfound %s", service_name);

fn_fail:
    return mpi_errno;
}
示例#5
0
int mca_common_pmi_lookup(const char *service_name, char **port_ret)
{
    // FIXME:
    // 1. Why don't we malloc memory for the port for PMI v1?
    // 2. Maybe error handling is needed in pbusub?
    // 3. Is it legal to call OPAL_PMI_ERROR for PMIv2 rc?

    char *port = NULL;
    *port_ret = port;
    int rc;

#if WANT_PMI2_SUPPORT
    if( mca_common_pmi_version == 2 ){
        port = (char*)malloc(1024*sizeof(char));  /* arbitrary size */
        if( port == NULL ){
            return OPAL_ERR_OUT_OF_RESOURCE;
        }
        if (PMI_SUCCESS != (rc = PMI2_Nameserv_lookup(service_name, NULL, port, 1024))) {
            OPAL_PMI_ERROR(rc, "PMI2_Nameserv_lookup");
            free(port);
            return OPAL_ERROR;
        }
    }
    else
#endif
    {
        // Allocate mem for port here? Otherwise we won't get success!
        // SLURM PMIv1 doesn't implement this function

        if (PMI_SUCCESS != (rc = PMI_Lookup_name(service_name, port))) {
            OPAL_PMI_ERROR(rc, "PMI_Lookup_name");
            return OPAL_ERROR;
        }
    }

    *port_ret = port;
    return OPAL_SUCCESS;
}