Skip to content

Commit

Permalink
Merge pull request #709 from bertwesarg/fix-dart-mpi-type-cont-max
Browse files Browse the repository at this point in the history
dart/mpi: Correctly use `MPI_DATATYPE_NULL` to denote an invalid type
  • Loading branch information
devreal authored Jun 9, 2020
2 parents 22f6487 + 48aca08 commit cf45c2c
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,6 @@ dart_ret_t dart__mpi__op_fini();
*/
#define MAX_CONTIG_ELEMENTS (INT_MAX)

#define DART_MPI_TYPE_UNDEFINED (MPI_Datatype)MPI_UNDEFINED

typedef enum {
DART_KIND_BASIC = 0,
DART_KIND_STRIDED,
Expand Down Expand Up @@ -190,7 +188,7 @@ MPI_Datatype dart__mpi__datatype_maxtype(dart_datatype_t dart_type) {
dart_datatype_struct_t *dts = dart__mpi__datatype_struct(dart_type);
MPI_Datatype res;
if (dart__mpi__datatype_iscontiguous(dart_type)) {
if (dts->contiguous.max_type == DART_MPI_TYPE_UNDEFINED) {
if (dts->contiguous.max_type == MPI_DATATYPE_NULL) {
dts->contiguous.max_type = dart__mpi__datatype_create_max_datatype(
dts->contiguous.mpi_type);
}
Expand Down
4 changes: 2 additions & 2 deletions dart-impl/mpi/src/dart_communication.c
Original file line number Diff line number Diff line change
Expand Up @@ -391,11 +391,11 @@ dart__mpi__put_basic(
CHECK_MPI_RET(
dart__mpi__put(src_ptr,
nchunks,
dart__mpi__datatype_struct(dtype)->contiguous.max_type,
dart__mpi__datatype_maxtype(dtype),
team_unit_id.id,
offset,
nchunks,
dart__mpi__datatype_struct(dtype)->contiguous.max_type,
dart__mpi__datatype_maxtype(dtype),
win,
reqs, num_reqs),
"MPI_Put");
Expand Down
7 changes: 4 additions & 3 deletions dart-impl/mpi/src/dart_mpi_types.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ dart_type_create_custom(
new_struct->contiguous.size = num_bytes;
new_struct->contiguous.mpi_type = new_mpi_dtype;
// max_type will be created on-demand for custom types
new_struct->contiguous.max_type = DART_MPI_TYPE_UNDEFINED;
new_struct->contiguous.max_type = MPI_DATATYPE_NULL;

*newtype = (dart_datatype_t)new_struct;
DART_LOG_TRACE("Created new custom data type %p with %zu bytes`",
Expand Down Expand Up @@ -343,7 +343,7 @@ dart_type_destroy(dart_datatype_t *dart_type_ptr)
MPI_Type_free(&dart_type->indexed.mpi_type);
} else if (dart_type->kind == DART_KIND_CUSTOM) {
MPI_Type_free(&dart_type->contiguous.mpi_type);
if (dart_type->contiguous.max_type != DART_MPI_TYPE_UNDEFINED) {
if (dart_type->contiguous.max_type != MPI_DATATYPE_NULL) {
MPI_Type_free(&dart_type->contiguous.max_type);
}
}
Expand All @@ -357,7 +357,8 @@ dart_type_destroy(dart_datatype_t *dart_type_ptr)
static void destroy_basic_type(dart_datatype_t dart_type_id)
{
dart_datatype_struct_t *dart_type = dart__mpi__datatype_struct(dart_type_id);
MPI_Type_free(&dart_type->contiguous.max_type);
if (dart_type->contiguous.max_type != MPI_DATATYPE_NULL)
MPI_Type_free(&dart_type->contiguous.max_type);
dart_type->contiguous.max_type = MPI_DATATYPE_NULL;
}

Expand Down

0 comments on commit cf45c2c

Please sign in to comment.