integer MPI_DOUBLE_PRECISION, MPI_COMPLEX, MPI_DOUBLE_COMPLEX
integer MPI_2INTEGER, MPI_LOGICAL1, MPI_LOGICAL2, MPI_LOGICAL4
integer MPI_LOGICAL8, MPI_2REAL, MPI_2DOUBLE_PRECISION
- integer MPI_AINT, MPI_OFFSET, MPI_COUNT
- integer MPI_REAL16, MPI_PACKED
+ integer MPI_AINT, MPI_OFFSET, MPI_COUNT, MPI_REAL16
+ integer MPI_PACKED, MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32
integer MPI_MAX, MPI_MIN, MPI_MAXLOC, MPI_MINLOC
integer MPI_SUM, MPI_PROD, MPI_LAND, MPI_LOR, MPI_LXOR, MPI_BAND
parameter(MPI_COUNT=24)
parameter(MPI_REAL16=25)
parameter(MPI_PACKED=26)
-
- parameter(MPI_MAX=27)
- parameter(MPI_MIN=28)
- parameter(MPI_MAXLOC=29)
- parameter(MPI_MINLOC=30)
- parameter(MPI_SUM=31)
- parameter(MPI_PROD=32)
- parameter(MPI_LAND=33)
- parameter(MPI_LOR=34)
- parameter(MPI_LXOR=35)
- parameter(MPI_BAND=36)
- parameter(MPI_BOR=37)
- parameter(MPI_BXOR=38)
+ parameter(MPI_COMPLEX8=27)
+ parameter(MPI_COMPLEX16=28)
+ parameter(MPI_COMPLEX32=29)
+ parameter(MPI_MAX=30)
+ parameter(MPI_MIN=31)
+ parameter(MPI_MAXLOC=32)
+ parameter(MPI_MINLOC=33)
+ parameter(MPI_SUM=34)
+ parameter(MPI_PROD=35)
+ parameter(MPI_LAND=36)
+ parameter(MPI_LOR=37)
+ parameter(MPI_LXOR=38)
+ parameter(MPI_BAND=39)
+ parameter(MPI_BOR=40)
+ parameter(MPI_BXOR=41)
INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
PARAMETER (MPI_ADDRESS_KIND=@CMAKE_SIZEOF_VOID_P@)
#define MPI_STATUS_IGNORE ((MPI_Status*)NULL)
#define MPI_STATUSES_IGNORE ((MPI_Status*)NULL)
+#define MPI_STATUS_SIZE 5
XBT_PUBLIC_DATA const MPI_Datatype MPI_DATATYPE_NULL;
XBT_PUBLIC_DATA const MPI_Datatype MPI_CHAR;
MPI_REAL4->add_f();//MPI_REAL4
MPI_REAL8->add_f();//MPI_REAL8
MPI_DOUBLE->add_f();//MPI_DOUBLE_PRECISION
- MPI_C_FLOAT_COMPLEX->add_f();//MPI_COMPLEX
- MPI_C_DOUBLE_COMPLEX->add_f();//MPI_DOUBLE_COMPLEX
+ MPI_COMPLEX8->add_f();//MPI_COMPLEX
+ MPI_COMPLEX16->add_f();//MPI_DOUBLE_COMPLEX
#if defined(__alpha__) || defined(__sparc64__) || defined(__x86_64__) || defined(__ia64__)
MPI_2INT->add_f();//MPI_2INTEGER
#else
MPI_AINT->add_f();//MPI_COUNT
MPI_REAL16->add_f();//MPI_REAL16
MPI_PACKED->add_f();//MPI_PACKED
+ MPI_COMPLEX8->add_f();//MPI_COMPLEX8
+ MPI_COMPLEX16->add_f();//MPI_COMPLEX16
+ MPI_COMPLEX32->add_f();//MPI_COMPLEX32
MPI_MAX->add_f();
MPI_MIN->add_f();
CREATE_MPI_DATATYPE(MPI_REAL8, 40, double);
CREATE_MPI_DATATYPE(MPI_REAL16, 41, long double);
CREATE_MPI_DATATYPE_NULL(MPI_DATATYPE_NULL, -1);
-CREATE_MPI_DATATYPE_NULL(MPI_COMPLEX8, 42);
-CREATE_MPI_DATATYPE_NULL(MPI_COMPLEX16, 43);
-CREATE_MPI_DATATYPE_NULL(MPI_COMPLEX32, 44);
+CREATE_MPI_DATATYPE(MPI_COMPLEX8, 42, float_float);
+CREATE_MPI_DATATYPE(MPI_COMPLEX16, 43, double_double);
+CREATE_MPI_DATATYPE(MPI_COMPLEX32, 44, double_double);
CREATE_MPI_DATATYPE(MPI_INTEGER1, 45, int);
CREATE_MPI_DATATYPE(MPI_INTEGER2, 46, int16_t);
CREATE_MPI_DATATYPE(MPI_INTEGER4, 47, int32_t);
#define MAX_OP(a, b) (b) = (a) < (b) ? (b) : (a)
#define MIN_OP(a, b) (b) = (a) < (b) ? (a) : (b)
#define SUM_OP(a, b) (b) += (a)
+#define SUM_OP_COMPLEX(a, b) {(b.value) += (a.value);(b.index) += (a.index);}
#define PROD_OP(a, b) (b) *= (a)
+#define PROD_OP_COMPLEX(a, b) {(b.value) *= (a.value);(b.index) *= (a.index);}
#define LAND_OP(a, b) (b) = (a) && (b)
#define LOR_OP(a, b) (b) = (a) || (b)
#define LXOR_OP(a, b) (b) = (not(a) && (b)) || ((a) && not(b))
APPLY_OP_LOOP(MPI_2FLOAT, float_float,op)\
APPLY_OP_LOOP(MPI_2DOUBLE, double_double,op)\
APPLY_OP_LOOP(MPI_LONG_DOUBLE_INT, long_double_int,op)\
-APPLY_OP_LOOP(MPI_2LONG, long_long,op)
+APPLY_OP_LOOP(MPI_2LONG, long_long,op)\
+APPLY_OP_LOOP(MPI_COMPLEX8, float_float,op)\
+APPLY_OP_LOOP(MPI_COMPLEX16, double_double,op)\
+APPLY_OP_LOOP(MPI_COMPLEX32, double_double,op)
#define APPLY_END_OP_LOOP(op) \
{ \
APPLY_BASIC_OP_LOOP(SUM_OP)
APPLY_FLOAT_OP_LOOP(SUM_OP)
APPLY_COMPLEX_OP_LOOP(SUM_OP)
+ APPLY_PAIR_OP_LOOP(SUM_OP_COMPLEX)
APPLY_END_OP_LOOP(SUM_OP)
}
APPLY_BASIC_OP_LOOP(PROD_OP)
APPLY_FLOAT_OP_LOOP(PROD_OP)
APPLY_COMPLEX_OP_LOOP(PROD_OP)
+ APPLY_PAIR_OP_LOOP(PROD_OP_COMPLEX)
APPLY_END_OP_LOOP(PROD_OP)
}
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/typeaints.h.in typeaints.h @ONLY)
foreach(test gaddressf
- # allctypesf hindex1f hindexed_blockf packef typecntsf
- # typem2f typename3f typenamef typesnamef
+ allctypesf hindex1f hindexed_blockf packef typecntsf
+ typem2f typename3f typenamef typesnamef
typesubf)
add_executable(${test} EXCLUDE_FROM_ALL ${test}.f)
add_dependencies(tests ${test})