- if(!comm_lookup){
- comm_lookup = xbt_dict_new_homogeneous(NULL);
- smpi_comm_c2f(MPI_COMM_WORLD);
- group_lookup = xbt_dict_new_homogeneous(NULL);
- request_lookup = xbt_dict_new_homogeneous(NULL);
- datatype_lookup = xbt_dict_new_homogeneous(NULL);
- win_lookup = xbt_dict_new_homogeneous(NULL);
- info_lookup = xbt_dict_new_homogeneous(NULL);
- smpi_type_c2f(MPI_BYTE);//MPI_BYTE
- smpi_type_c2f(MPI_CHAR);//MPI_CHARACTER
- #if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
- smpi_type_c2f(MPI_INT);//MPI_LOGICAL
- smpi_type_c2f(MPI_INT);//MPI_INTEGER
- #else
- smpi_type_c2f(MPI_LONG);//MPI_LOGICAL
- smpi_type_c2f(MPI_LONG);//MPI_INTEGER
- #endif
- smpi_type_c2f(MPI_INT8_T);//MPI_INTEGER1
- smpi_type_c2f(MPI_INT16_T);//MPI_INTEGER2
- smpi_type_c2f(MPI_INT32_T);//MPI_INTEGER4
- smpi_type_c2f(MPI_INT64_T);//MPI_INTEGER8
- smpi_type_c2f(MPI_FLOAT);//MPI_REAL
- smpi_type_c2f(MPI_FLOAT);//MPI_REAL4
- smpi_type_c2f(MPI_DOUBLE);//MPI_REAL8
- smpi_type_c2f(MPI_DOUBLE);//MPI_DOUBLE_PRECISION
- smpi_type_c2f(MPI_C_FLOAT_COMPLEX);//MPI_COMPLEX
- smpi_type_c2f(MPI_C_DOUBLE_COMPLEX);//MPI_DOUBLE_COMPLEX
- #if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
- smpi_type_c2f(MPI_2INT);//MPI_2INTEGER
- #else
- smpi_type_c2f(MPI_2LONG);//MPI_2INTEGER
- #endif
- smpi_type_c2f(MPI_UINT8_T);//MPI_LOGICAL1
- smpi_type_c2f(MPI_UINT16_T);//MPI_LOGICAL2
- smpi_type_c2f(MPI_UINT32_T);//MPI_LOGICAL4
- smpi_type_c2f(MPI_UINT64_T);//MPI_LOGICAL8
- smpi_type_c2f(MPI_2FLOAT);//MPI_2REAL
- smpi_type_c2f(MPI_2DOUBLE);//MPI_2DOUBLE_PRECISION
- smpi_type_c2f(MPI_PTR);//MPI_AINT
- smpi_type_c2f(MPI_UINT64_T);//MPI_OFFSET
- smpi_type_c2f(MPI_UINT64_T);//MPI_COUNT
- smpi_type_c2f(MPI_DATATYPE_NULL);//MPI_REAL16
- smpi_type_c2f(MPI_DATATYPE_NULL);//MPI_COMPLEX8
- smpi_type_c2f(MPI_DATATYPE_NULL);//MPI_COMPLEX16
- smpi_type_c2f(MPI_DATATYPE_NULL);//MPI_COMPLEX32
- smpi_type_c2f(MPI_DATATYPE_NULL);//MPI_PACKED
- op_lookup = xbt_dict_new_homogeneous(NULL);
- smpi_op_c2f(MPI_MAX);
- smpi_op_c2f(MPI_MIN);
- smpi_op_c2f(MPI_MAXLOC);
- smpi_op_c2f(MPI_MINLOC);
- smpi_op_c2f(MPI_SUM);
- smpi_op_c2f(MPI_PROD);
- smpi_op_c2f(MPI_LAND);
- smpi_op_c2f(MPI_LOR);
- smpi_op_c2f(MPI_LXOR);
- smpi_op_c2f(MPI_BAND);
- smpi_op_c2f(MPI_BOR);
- smpi_op_c2f(MPI_BXOR);
+ if(comm_lookup == nullptr){
+ comm_lookup = xbt_dict_new_homogeneous(nullptr);
+ smpi_comm_add_f(MPI_COMM_WORLD);
+ group_lookup = xbt_dict_new_homogeneous(nullptr);
+ request_lookup = xbt_dict_new_homogeneous(nullptr);
+ type_lookup = xbt_dict_new_homogeneous(nullptr);
+ win_lookup = xbt_dict_new_homogeneous(nullptr);
+ info_lookup = xbt_dict_new_homogeneous(nullptr);
+ smpi_type_add_f(MPI_BYTE);//MPI_BYTE
+ smpi_type_add_f(MPI_CHAR);//MPI_CHARACTER
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+ smpi_type_add_f(MPI_C_BOOL);//MPI_LOGICAL
+ smpi_type_add_f(MPI_INT);//MPI_INTEGER
+#else
+ smpi_type_add_f(MPI_C_BOOL);//MPI_LOGICAL
+ smpi_type_add_f(MPI_LONG);//MPI_INTEGER
+#endif
+ smpi_type_add_f(MPI_INT8_T);//MPI_INTEGER1
+ smpi_type_add_f(MPI_INT16_T);//MPI_INTEGER2
+ smpi_type_add_f(MPI_INT32_T);//MPI_INTEGER4
+ smpi_type_add_f(MPI_INT64_T);//MPI_INTEGER8
+ smpi_type_add_f(MPI_REAL);//MPI_REAL
+ smpi_type_add_f(MPI_REAL4);//MPI_REAL4
+ smpi_type_add_f(MPI_REAL8);//MPI_REAL8
+ smpi_type_add_f(MPI_DOUBLE);//MPI_DOUBLE_PRECISION
+ smpi_type_add_f(MPI_C_FLOAT_COMPLEX);//MPI_COMPLEX
+ smpi_type_add_f(MPI_C_DOUBLE_COMPLEX);//MPI_DOUBLE_COMPLEX
+#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
+ smpi_type_add_f(MPI_2INT);//MPI_2INTEGER
+#else
+ smpi_type_add_f(MPI_2LONG);//MPI_2INTEGER
+#endif
+ smpi_type_add_f(MPI_UINT8_T);//MPI_LOGICAL1
+ smpi_type_add_f(MPI_UINT16_T);//MPI_LOGICAL2
+ smpi_type_add_f(MPI_UINT32_T);//MPI_LOGICAL4
+ smpi_type_add_f(MPI_UINT64_T);//MPI_LOGICAL8
+ smpi_type_add_f(MPI_2FLOAT);//MPI_2REAL
+ smpi_type_add_f(MPI_2DOUBLE);//MPI_2DOUBLE_PRECISION
+ smpi_type_add_f(MPI_PTR);//MPI_AINT
+ smpi_type_add_f(MPI_OFFSET);//MPI_OFFSET
+ smpi_type_add_f(MPI_AINT);//MPI_COUNT
+ smpi_type_add_f(MPI_DATATYPE_NULL);//MPI_REAL16
+ smpi_type_add_f(MPI_DATATYPE_NULL);//MPI_COMPLEX8
+ smpi_type_add_f(MPI_DATATYPE_NULL);//MPI_COMPLEX16
+ smpi_type_add_f(MPI_DATATYPE_NULL);//MPI_COMPLEX32
+ smpi_type_add_f(MPI_DATATYPE_NULL);//MPI_PACKED
+ op_lookup = xbt_dict_new_homogeneous(nullptr);
+ smpi_op_add_f(MPI_MAX);
+ smpi_op_add_f(MPI_MIN);
+ smpi_op_add_f(MPI_MAXLOC);
+ smpi_op_add_f(MPI_MINLOC);
+ smpi_op_add_f(MPI_SUM);
+ smpi_op_add_f(MPI_PROD);
+ smpi_op_add_f(MPI_LAND);
+ smpi_op_add_f(MPI_LOR);
+ smpi_op_add_f(MPI_LXOR);
+ smpi_op_add_f(MPI_BAND);
+ smpi_op_add_f(MPI_BOR);
+ smpi_op_add_f(MPI_BXOR);