A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix reduce_scatter in place
[simgrid.git]
/
src
/
smpi
/
smpi_mpi_dt.cpp
diff --git
a/src/smpi/smpi_mpi_dt.cpp
b/src/smpi/smpi_mpi_dt.cpp
index
634ecf4
..
91a8ee7
100644
(file)
--- a/
src/smpi/smpi_mpi_dt.cpp
+++ b/
src/smpi/smpi_mpi_dt.cpp
@@
-436,7
+436,11
@@
void smpi_datatype_use(MPI_Datatype type){
#endif
}
#endif
}
-void smpi_datatype_unuse(MPI_Datatype type){
+void smpi_datatype_unuse(MPI_Datatype type)
+{
+ if (type == MPI_DATATYPE_NULL)
+ return;
+
if (type->in_use > 0)
type->in_use--;
if (type->in_use > 0)
type->in_use--;
@@
-444,9
+448,9
@@
void smpi_datatype_unuse(MPI_Datatype type){
static_cast<s_smpi_subtype_t *>((type)->substruct)->subtype_free(&type);
}
static_cast<s_smpi_subtype_t *>((type)->substruct)->subtype_free(&type);
}
- if
(type != MPI_DATATYPE_NULL && type->in_use == 0){
+ if
(type->in_use == 0)
smpi_datatype_free(&type);
smpi_datatype_free(&type);
- }
+
#if HAVE_MC
if(MC_is_active())
MC_ignore(&(type->in_use), sizeof(type->in_use));
#if HAVE_MC
if(MC_is_active())
MC_ignore(&(type->in_use), sizeof(type->in_use));
@@
-1252,6
+1256,10
@@
static void sum_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned short, SUM_OP)
} else if (*datatype == MPI_UNSIGNED) {
APPLY_FUNC(a, b, length, unsigned int, SUM_OP)
APPLY_FUNC(a, b, length, unsigned short, SUM_OP)
} else if (*datatype == MPI_UNSIGNED) {
APPLY_FUNC(a, b, length, unsigned int, SUM_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, SUM_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, SUM_OP)
} else if (*datatype == MPI_UNSIGNED_LONG) {
APPLY_FUNC(a, b, length, unsigned long, SUM_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
} else if (*datatype == MPI_UNSIGNED_LONG) {
APPLY_FUNC(a, b, length, unsigned long, SUM_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
@@
-1289,6
+1297,10
@@
static void prod_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned int, PROD_OP)
} else if (*datatype == MPI_UNSIGNED_LONG) {
APPLY_FUNC(a, b, length, unsigned long, PROD_OP)
APPLY_FUNC(a, b, length, unsigned int, PROD_OP)
} else if (*datatype == MPI_UNSIGNED_LONG) {
APPLY_FUNC(a, b, length, unsigned long, PROD_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, PROD_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, PROD_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, PROD_OP)
} else if (*datatype == MPI_FLOAT) {
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, PROD_OP)
} else if (*datatype == MPI_FLOAT) {
@@
-1326,6
+1338,10
@@
static void land_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned long, LAND_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, LAND_OP)
APPLY_FUNC(a, b, length, unsigned long, LAND_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, LAND_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, LAND_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, LAND_OP)
} else if (*datatype == MPI_C_BOOL) {
APPLY_FUNC(a, b, length, bool, LAND_OP)
} else {
} else if (*datatype == MPI_C_BOOL) {
APPLY_FUNC(a, b, length, bool, LAND_OP)
} else {
@@
-1351,6
+1367,10
@@
static void lor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned long, LOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, LOR_OP)
APPLY_FUNC(a, b, length, unsigned long, LOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, LOR_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, LOR_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, LOR_OP)
} else if (*datatype == MPI_C_BOOL) {
APPLY_FUNC(a, b, length, bool, LOR_OP)
} else {
} else if (*datatype == MPI_C_BOOL) {
APPLY_FUNC(a, b, length, bool, LOR_OP)
} else {
@@
-1376,6
+1396,10
@@
static void lxor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned long, LXOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, LXOR_OP)
APPLY_FUNC(a, b, length, unsigned long, LXOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, LXOR_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, LXOR_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, LXOR_OP)
} else if (*datatype == MPI_C_BOOL) {
APPLY_FUNC(a, b, length, bool, LXOR_OP)
} else {
} else if (*datatype == MPI_C_BOOL) {
APPLY_FUNC(a, b, length, bool, LXOR_OP)
} else {
@@
-1401,6
+1425,10
@@
static void band_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned long, BAND_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, BAND_OP)
APPLY_FUNC(a, b, length, unsigned long, BAND_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, BAND_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, BAND_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, BAND_OP)
} else if (*datatype == MPI_BYTE) {
APPLY_FUNC(a, b, length, uint8_t, BAND_OP)
} else {
} else if (*datatype == MPI_BYTE) {
APPLY_FUNC(a, b, length, uint8_t, BAND_OP)
} else {
@@
-1426,6
+1454,10
@@
static void bor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned long, BOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, BOR_OP)
APPLY_FUNC(a, b, length, unsigned long, BOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, BOR_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, BOR_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, BOR_OP)
} else if (*datatype == MPI_BYTE) {
APPLY_FUNC(a, b, length, uint8_t, BOR_OP)
} else {
} else if (*datatype == MPI_BYTE) {
APPLY_FUNC(a, b, length, uint8_t, BOR_OP)
} else {
@@
-1451,6
+1483,10
@@
static void bxor_func(void *a, void *b, int *length, MPI_Datatype * datatype)
APPLY_FUNC(a, b, length, unsigned long, BXOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, BXOR_OP)
APPLY_FUNC(a, b, length, unsigned long, BXOR_OP)
} else if (*datatype == MPI_UNSIGNED_CHAR) {
APPLY_FUNC(a, b, length, unsigned char, BXOR_OP)
+ } else if (*datatype == MPI_UNSIGNED_LONG_LONG) {
+ APPLY_FUNC(a, b, length, unsigned long long, BXOR_OP)
+ } else if (*datatype == MPI_LONG_LONG) {
+ APPLY_FUNC(a, b, length, long long, BXOR_OP)
} else if (*datatype == MPI_BYTE) {
APPLY_FUNC(a, b, length, uint8_t, BXOR_OP)
} else {
} else if (*datatype == MPI_BYTE) {
APPLY_FUNC(a, b, length, uint8_t, BXOR_OP)
} else {