/* $Id$tag */
/* smpi_mpi_dt.c -- MPI primitives to handle datatypes */
-
+
/* Note: a very incomplete implementation */
/* Copyright (c) 2009 Stephane Genaud. */
//The following are datatypes for the MPI functions MPI_MAXLOC and MPI_MINLOC.
typedef struct { float value; int index;} float_int;
-typedef struct { long value; int index;} long_int ;
+typedef struct { long value; int index;} long_int ;
typedef struct { double value; int index;} double_int;
typedef struct { short value; int index;} short_int;
typedef struct { int value; int index;} int_int;
-typedef struct { long double value; int index;} long_double_int;
+typedef struct { long double value; int index;} long_double_int;
// Predefined data types
CREATE_MPI_DATATYPE(MPI_CHAR, char);
memcpy(recvbuf, sendbuf, smpi_datatype_size(sendtype) * count);
retval = sendcount > recvcount ? MPI_ERR_TRUNCATE : MPI_SUCCESS;
} else {
- /* FIXME: cases
- * - If receive packed.
+ /* FIXME: cases
+ * - If receive packed.
* - If send packed
* to be treated once we have the MPI_Pack things ...
**/
APPLY_FUNC(a, b, length, long double, MAX_OP);
}
}
-
+
static void min_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, MIN_OP);
APPLY_FUNC(a, b, length, long double, MIN_OP);
}
}
-
+
static void sum_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, SUM_OP);
APPLY_FUNC(a, b, length, long double _Complex, SUM_OP);
}
}
-
+
static void prod_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, PROD_OP);
APPLY_FUNC(a, b, length, long double _Complex, PROD_OP);
}
}
-
+
static void land_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, LAND_OP);
APPLY_FUNC(a, b, length, _Bool, LAND_OP);
}
}
-
+
static void lor_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, LOR_OP);
APPLY_FUNC(a, b, length, _Bool, LOR_OP);
}
}
-
+
static void lxor_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, LXOR_OP);
APPLY_FUNC(a, b, length, _Bool, LXOR_OP);
}
}
-
+
static void band_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, BAND_OP);
APPLY_FUNC(a, b, length, uint8_t, BAND_OP);
}
}
-
+
static void bor_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, BOR_OP);
APPLY_FUNC(a, b, length, uint8_t, BOR_OP);
}
}
-
+
static void bxor_func(void* a, void* b, int* length, MPI_Datatype* datatype) {
if(*datatype == MPI_SHORT) {
APPLY_FUNC(a, b, length, short, BXOR_OP);