2016-11-22 15:03:20 -08:00
|
|
|
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
|
|
|
/*
|
2018-02-16 23:02:05 -07:00
|
|
|
* Copyright (c) 2012-2018 Los Alamos National Security, LLC. All rights
|
2016-11-22 15:03:20 -08:00
|
|
|
* reserved.
|
|
|
|
* Copyright (c) 2015 Research Organization for Information Science
|
|
|
|
* and Technology (RIST). All rights reserved.
|
2017-06-29 21:18:46 -04:00
|
|
|
* Copyright (c) 2017 IBM Corporation. All rights reserved.
|
2020-04-07 23:56:42 -04:00
|
|
|
* Copyright (c) 2020 The University of Tennessee and The University
|
|
|
|
* of Tennessee Research Foundation. All rights
|
|
|
|
* reserved.
|
2016-11-22 15:03:20 -08:00
|
|
|
* $COPYRIGHT$
|
|
|
|
*
|
|
|
|
* Additional copyrights may follow
|
|
|
|
*
|
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "ompi/mpi/tool/mpit-internal.h"
|
|
|
|
|
2017-06-29 21:18:46 -04:00
|
|
|
opal_mutex_t ompi_mpit_big_lock = OPAL_MUTEX_STATIC_INIT;
|
2016-11-22 15:03:20 -08:00
|
|
|
|
2017-06-29 21:18:46 -04:00
|
|
|
volatile uint32_t ompi_mpit_init_count = 0;
|
2016-11-22 15:03:20 -08:00
|
|
|
|
2017-06-29 21:18:46 -04:00
|
|
|
void ompi_mpit_lock (void)
|
2016-11-22 15:03:20 -08:00
|
|
|
{
|
2017-06-29 21:18:46 -04:00
|
|
|
opal_mutex_lock (&ompi_mpit_big_lock);
|
2016-11-22 15:03:20 -08:00
|
|
|
}
|
|
|
|
|
2017-06-29 21:18:46 -04:00
|
|
|
void ompi_mpit_unlock (void)
|
2016-11-22 15:03:20 -08:00
|
|
|
{
|
2017-06-29 21:18:46 -04:00
|
|
|
opal_mutex_unlock (&ompi_mpit_big_lock);
|
2016-11-22 15:03:20 -08:00
|
|
|
}
|
|
|
|
|
2018-02-16 23:02:05 -07:00
|
|
|
static MPI_Datatype mca_to_mpi_datatypes[MCA_BASE_VAR_TYPE_MAX] = {
|
|
|
|
[MCA_BASE_VAR_TYPE_INT] = MPI_INT,
|
|
|
|
[MCA_BASE_VAR_TYPE_UNSIGNED_INT] = MPI_UNSIGNED,
|
|
|
|
[MCA_BASE_VAR_TYPE_UNSIGNED_LONG] = MPI_UNSIGNED_LONG,
|
|
|
|
[MCA_BASE_VAR_TYPE_UNSIGNED_LONG_LONG] = MPI_UNSIGNED_LONG_LONG,
|
|
|
|
|
|
|
|
#if SIZEOF_SIZE_T == SIZEOF_UNSIGNED_INT
|
|
|
|
[MCA_BASE_VAR_TYPE_SIZE_T] = MPI_UNSIGNED,
|
|
|
|
#elif SIZEOF_SIZE_T == SIZEOF_UNSIGNED_LONG
|
|
|
|
[MCA_BASE_VAR_TYPE_SIZE_T] = MPI_UNSIGNED_LONG,
|
|
|
|
#elif SIZEOF_SIZE_T == SIZEOF_LONG_LONG
|
|
|
|
[MCA_BASE_VAR_TYPE_SIZE_T] = MPI_UNSIGNED_LONG_LONG,
|
|
|
|
#else
|
|
|
|
[MCA_BASE_VAR_TYPE_SIZE_T] = NULL,
|
|
|
|
#endif
|
|
|
|
|
|
|
|
[MCA_BASE_VAR_TYPE_STRING] = MPI_CHAR,
|
|
|
|
[MCA_BASE_VAR_TYPE_VERSION_STRING] = MPI_CHAR,
|
|
|
|
[MCA_BASE_VAR_TYPE_BOOL] = MPI_C_BOOL,
|
|
|
|
[MCA_BASE_VAR_TYPE_DOUBLE] = MPI_DOUBLE,
|
|
|
|
[MCA_BASE_VAR_TYPE_LONG] = MPI_LONG,
|
|
|
|
[MCA_BASE_VAR_TYPE_INT32_T] = MPI_INT32_T,
|
|
|
|
[MCA_BASE_VAR_TYPE_UINT32_T] = MPI_UINT32_T,
|
|
|
|
[MCA_BASE_VAR_TYPE_INT64_T] = MPI_INT64_T,
|
|
|
|
[MCA_BASE_VAR_TYPE_UINT64_T] = MPI_UINT64_T,
|
|
|
|
};
|
|
|
|
|
2016-11-22 15:03:20 -08:00
|
|
|
int ompit_var_type_to_datatype (mca_base_var_type_t type, MPI_Datatype *datatype)
|
|
|
|
{
|
|
|
|
if (!datatype) {
|
|
|
|
return OMPI_SUCCESS;
|
|
|
|
}
|
|
|
|
|
2018-02-16 23:02:05 -07:00
|
|
|
*datatype = mca_to_mpi_datatypes[type];
|
|
|
|
assert (*datatype);
|
2016-11-22 15:03:20 -08:00
|
|
|
|
|
|
|
return OMPI_SUCCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
int ompit_opal_to_mpit_error (int rc)
|
|
|
|
{
|
|
|
|
if (rc >= 0) {
|
|
|
|
/* Already an MPI error (always >= 0) */
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (rc) {
|
|
|
|
case OPAL_ERR_OUT_OF_RESOURCE:
|
|
|
|
return MPI_T_ERR_MEMORY;
|
|
|
|
case OPAL_ERR_VALUE_OUT_OF_BOUNDS:
|
|
|
|
case OPAL_ERR_NOT_BOUND:
|
|
|
|
return MPI_T_ERR_INVALID_HANDLE;
|
|
|
|
default:
|
2020-04-07 23:56:42 -04:00
|
|
|
return MPI_T_ERR_INVALID;
|
2016-11-22 15:03:20 -08:00
|
|
|
}
|
|
|
|
}
|