1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
commit efe547e8041dc36bb555975e0cb01d2c462b6ab2
Author: François Trahay <francois.trahay@telecom-sudparis.eu>
Date: Tue Aug 23 11:03:07 2022 +0200
MPI: some MPI datatypes are not always defined
diff --git a/src/modules/mpi/mpi_eztrace.h b/src/modules/mpi/mpi_eztrace.h
index f37a6ff0..7d642991 100644
--- a/src/modules/mpi/mpi_eztrace.h
+++ b/src/modules/mpi/mpi_eztrace.h
@@ -303,13 +303,75 @@ int ezt_mpi_is_in_place_(void* buf);
*/
#define CHECK_MPI_IN_PLACE(p) (ezt_mpi_is_in_place_(p) ? MPI_IN_PLACE : (p))
+/* in some cases (eg on some architectures, or with some MPI implementations), some MPI datatypes
+ * are not defined :/
+ */
+#ifdef MPI_INTEGER1
+#define _EZT_MPI_INTEGER1 MPI_INTEGER1
+#else
+#define _EZT_MPI_INTEGER1 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_INTEGER2
+#define _EZT_MPI_INTEGER2 MPI_INTEGER2
+#else
+#define _EZT_MPI_INTEGER2 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_INTEGER4
+#define _EZT_MPI_INTEGER4 MPI_INTEGER4
+#else
+#define _EZT_MPI_INTEGER4 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_INTEGER8
+#define _EZT_MPI_INTEGER8 MPI_INTEGER8
+#else
+#define _EZT_MPI_INTEGER8 MPI_DATATYPE_NULL
+#endif
+
#ifdef MPI_INTEGER16
#define _EZT_MPI_INTEGER16 MPI_INTEGER16
#else
-/* in some cases (eg with OpenMPI by default), MPI_INTEGER16 is not defined :/ */
#define _EZT_MPI_INTEGER16 MPI_DATATYPE_NULL
#endif
+#ifdef MPI_REAL4
+#define _EZT_MPI_REAL4 MPI_REAL4
+#else
+#define _EZT_MPI_REAL4 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_REAL8
+#define _EZT_MPI_REAL8 MPI_REAL8
+#else
+#define _EZT_MPI_REAL8 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_REAL16
+#define _EZT_MPI_REAL16 MPI_REAL16
+#else
+#define _EZT_MPI_REAL16 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_COMPLEX8
+#define _EZT_MPI_COMPLEX8 MPI_COMPLEX8
+#else
+#define _EZT_MPI_COMPLEX8 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_COMPLEX16
+#define _EZT_MPI_COMPLEX16 MPI_COMPLEX16
+#else
+#define _EZT_MPI_COMPLEX16 MPI_DATATYPE_NULL
+#endif
+
+#ifdef MPI_COMPLEX32
+#define _EZT_MPI_COMPLEX32 MPI_COMPLEX32
+#else
+#define _EZT_MPI_COMPLEX32 MPI_DATATYPE_NULL
+#endif
+
#define EZT_DATATYPE_TO_MPI(ezt_datatype) \
ezt_datatype == EZT_MPI_DATATYPE_NULL ? MPI_DATATYPE_NULL: \
ezt_datatype == EZT_MPI_CHAR ? MPI_CHAR : \
@@ -346,17 +408,17 @@ int ezt_mpi_is_in_place_(void* buf);
ezt_datatype == EZT_MPI_2REAL ? MPI_2REAL : \
ezt_datatype == EZT_MPI_DOUBLE_COMPLEX ? MPI_DOUBLE_COMPLEX : \
ezt_datatype == EZT_MPI_2DOUBLE_PRECISION ? MPI_2DOUBLE_PRECISION : \
- ezt_datatype == EZT_MPI_REAL4 ? MPI_REAL4 : \
- ezt_datatype == EZT_MPI_COMPLEX8 ? MPI_COMPLEX8 : \
- ezt_datatype == EZT_MPI_REAL8 ? MPI_REAL8 : \
- ezt_datatype == EZT_MPI_COMPLEX16 ? MPI_COMPLEX16 : \
- ezt_datatype == EZT_MPI_REAL16 ? MPI_REAL16 : \
- ezt_datatype == EZT_MPI_COMPLEX32 ? MPI_COMPLEX32 : \
- ezt_datatype == EZT_MPI_INTEGER1 ? MPI_INTEGER1 : \
- ezt_datatype == EZT_MPI_INTEGER2 ? MPI_INTEGER2 : \
- ezt_datatype == EZT_MPI_INTEGER4 ? MPI_INTEGER4 : \
- ezt_datatype == EZT_MPI_INTEGER8 ? MPI_INTEGER8 : \
- ezt_datatype == EZT_MPI_INTEGER16 ? _EZT_MPI_INTEGER16 : \
+ ezt_datatype == EZT_MPI_REAL4 ? _EZT_MPI_REAL4 : \
+ ezt_datatype == EZT_MPI_COMPLEX8 ? _EZT_MPI_COMPLEX8 : \
+ ezt_datatype == EZT_MPI_REAL8 ? _EZT_MPI_REAL8 : \
+ ezt_datatype == EZT_MPI_COMPLEX16 ? _EZT_MPI_COMPLEX16 : \
+ ezt_datatype == EZT_MPI_REAL16 ? _EZT_MPI_REAL16 : \
+ ezt_datatype == EZT_MPI_COMPLEX32 ? _EZT_MPI_COMPLEX32 : \
+ ezt_datatype == EZT_MPI_INTEGER1 ? _EZT_MPI_INTEGER1 : \
+ ezt_datatype == EZT_MPI_INTEGER2 ? _EZT_MPI_INTEGER2 : \
+ ezt_datatype == EZT_MPI_INTEGER4 ? _EZT_MPI_INTEGER4 : \
+ ezt_datatype == EZT_MPI_INTEGER8 ? _EZT_MPI_INTEGER8 : \
+ ezt_datatype == EZT_MPI_INTEGER16 ? _EZT_MPI_INTEGER16 : \
ezt_datatype == EZT_MPI_INT8_T ? MPI_INT8_T : \
ezt_datatype == EZT_MPI_INT16_T ? MPI_INT16_T : \
ezt_datatype == EZT_MPI_INT32_T ? MPI_INT32_T : \
|