From: Augustin Degomme Date: Sat, 22 Sep 2018 22:25:38 +0000 (+0200) Subject: return the correct value in MPI_get_attr and friends in fortran instead of a random... X-Git-Tag: v3_21~55^2~1 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/18a9a43996a548884a3042ed99e60f3218a3259a return the correct value in MPI_get_attr and friends in fortran instead of a random pointer value --- diff --git a/src/smpi/bindings/smpi_f77.cpp b/src/smpi/bindings/smpi_f77.cpp index 47d296a2f9..5b629f308f 100644 --- a/src/smpi/bindings/smpi_f77.cpp +++ b/src/smpi/bindings/smpi_f77.cpp @@ -114,8 +114,10 @@ void mpi_get_count_(MPI_Status * status, int* datatype, int *count, int* ierr){ *ierr = MPI_Get_count(FORT_STATUS_IGNORE(status), simgrid::smpi::Datatype::f2c(*datatype), count); } -void mpi_attr_get_(int* comm, int* keyval, void* attr_value, int* flag, int* ierr ){ - *ierr = MPI_Attr_get(simgrid::smpi::Comm::f2c(*comm), *keyval, attr_value, flag); +void mpi_attr_get_(int* comm, int* keyval, int* attr_value, int* flag, int* ierr ){ + size_t value = 0; + *ierr = MPI_Attr_get(simgrid::smpi::Comm::f2c(*comm), *keyval, &value, flag); + *attr_value = *(int*)value; } void mpi_error_string_(int* errorcode, char* string, int* resultlen, int* ierr){ @@ -223,8 +225,10 @@ void mpi_win_get_group_(int* win, int* group, int* ierr){ } } -void mpi_win_get_attr_(int* win, int* type_keyval, void* attribute_val, int* flag, int* ierr){ - *ierr = MPI_Win_get_attr(simgrid::smpi::Win::f2c(*win), *type_keyval, attribute_val, flag); +void mpi_win_get_attr_(int* win, int* type_keyval, int* attribute_val, int* flag, int* ierr){ + size_t value = 0; + *ierr = MPI_Win_get_attr(simgrid::smpi::Win::f2c(*win), *type_keyval, &value, flag); + *attribute_val=*(int*)value; } void mpi_win_set_attr_(int* win, int* type_keyval, void* att, int* ierr){ diff --git a/src/smpi/bindings/smpi_f77_comm.cpp b/src/smpi/bindings/smpi_f77_comm.cpp index 2c441697da..93dbf83477 100644 --- a/src/smpi/bindings/smpi_f77_comm.cpp +++ b/src/smpi/bindings/smpi_f77_comm.cpp @@ -71,9 +71,10 @@ void mpi_comm_create_group_ (int* comm, int* group, int i, int* comm_out, int* i } } -void mpi_comm_get_attr_ (int* comm, int* comm_keyval, void *attribute_val, int *flag, int* ierr){ - - *ierr = MPI_Comm_get_attr (simgrid::smpi::Comm::f2c(*comm), *comm_keyval, attribute_val, flag); +void mpi_comm_get_attr_ (int* comm, int* comm_keyval, int *attribute_val, int *flag, int* ierr){ + size_t value = 0; + *ierr = MPI_Comm_get_attr (simgrid::smpi::Comm::f2c(*comm), *comm_keyval, &value, flag); + *attribute_val = *(int*) value; } void mpi_comm_set_attr_ (int* comm, int* comm_keyval, void *attribute_val, int* ierr){ diff --git a/src/smpi/bindings/smpi_f77_type.cpp b/src/smpi/bindings/smpi_f77_type.cpp index e6053a7bb4..bb6b3ca25a 100644 --- a/src/smpi/bindings/smpi_f77_type.cpp +++ b/src/smpi/bindings/smpi_f77_type.cpp @@ -56,9 +56,10 @@ void mpi_type_get_name_ (int* datatype, char * name, int* len, int* ierr){ name[*len]=' '; } -void mpi_type_get_attr_ (int* type, int* type_keyval, void *attribute_val, int* flag, int* ierr){ - - *ierr = MPI_Type_get_attr ( simgrid::smpi::Datatype::f2c(*type), *type_keyval, attribute_val,flag); +void mpi_type_get_attr_ (int* type, int* type_keyval, int *attribute_val, int* flag, int* ierr){ + size_t value = 0; + *ierr = MPI_Type_get_attr ( simgrid::smpi::Datatype::f2c(*type), *type_keyval, &value, flag); + *attribute_val = *(int*) value; } void mpi_type_set_attr_ (int* type, int* type_keyval, void *attribute_val, int* ierr){ diff --git a/src/smpi/include/private.hpp b/src/smpi/include/private.hpp index 7c591b777e..e31f526b93 100644 --- a/src/smpi/include/private.hpp +++ b/src/smpi/include/private.hpp @@ -166,7 +166,7 @@ void mpi_test_(int* request, int* flag, MPI_Status* status, int* ierr); void mpi_testall_(int* count, int* requests, int* flag, MPI_Status* statuses, int* ierr); void mpi_get_count_(MPI_Status* status, int* datatype, int* count, int* ierr); void mpi_type_extent_(int* datatype, MPI_Aint* extent, int* ierr); -void mpi_attr_get_(int* comm, int* keyval, void* attr_value, int* flag, int* ierr); +void mpi_attr_get_(int* comm, int* keyval, int* attr_value, int* flag, int* ierr); void mpi_type_commit_(int* datatype, int* ierr); void mpi_type_vector_(int* count, int* blocklen, int* stride, int* old_type, int* newtype, int* ierr); void mpi_type_hvector_(int* count, int* blocklen, MPI_Aint* stride, int* old_type, int* newtype, int* ierr); @@ -190,7 +190,7 @@ void mpi_win_detach_(int* win, int* base, int* ierr); void mpi_win_set_info_(int* win, int* info, int* ierr); void mpi_win_get_info_(int* win, int* info, int* ierr); void mpi_win_get_group_(int* win, int* group, int* ierr); -void mpi_win_get_attr_(int* win, int* type_keyval, void* attribute_val, int* flag, int* ierr); +void mpi_win_get_attr_(int* win, int* type_keyval, int* attribute_val, int* flag, int* ierr); void mpi_win_set_attr_(int* win, int* type_keyval, void* att, int* ierr); void mpi_win_delete_attr_(int* win, int* comm_keyval, int* ierr); void mpi_win_create_keyval_(void* copy_fn, void* delete_fn, int* keyval, void* extra_state, int* ierr); @@ -242,7 +242,7 @@ void mpi_get_address_(void* location, MPI_Aint* address, int* ierr); void mpi_type_dup_(int* datatype, int* newdatatype, int* ierr); void mpi_type_set_name_(int* datatype, char* name, int* ierr, int size); void mpi_type_get_name_(int* datatype, char* name, int* len, int* ierr); -void mpi_type_get_attr_(int* type, int* type_keyval, void* attribute_val, int* flag, int* ierr); +void mpi_type_get_attr_(int* type, int* type_keyval, int* attribute_val, int* flag, int* ierr); void mpi_type_set_attr_(int* type, int* type_keyval, void* attribute_val, int* ierr); void mpi_type_delete_attr_(int* type, int* type_keyval, int* ierr); void mpi_type_create_keyval_(void* copy_fn, void* delete_fn, int* keyval, void* extra_state, int* ierr); @@ -264,7 +264,7 @@ void mpi_group_difference_(int* group1, int* group2, int* newgroup, int* ierr); void mpi_group_excl_(int* group, int* n, int* ranks, int* newgroup, int* ierr); void mpi_group_range_incl_(int* group, int* n, int ranges[][3], int* newgroup, int* ierr); void mpi_group_range_excl_(int* group, int* n, int ranges[][3], int* newgroup, int* ierr); -void mpi_comm_get_attr_(int* comm, int* comm_keyval, void* attribute_val, int* flag, int* ierr); +void mpi_comm_get_attr_(int* comm, int* comm_keyval, int* attribute_val, int* flag, int* ierr); void mpi_comm_set_attr_(int* comm, int* comm_keyval, void* attribute_val, int* ierr); void mpi_comm_delete_attr_(int* comm, int* comm_keyval, int* ierr); void mpi_comm_create_keyval_(void* copy_fn, void* delete_fn, int* keyval, void* extra_state, int* ierr);