Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
return the correct value in MPI_get_attr and friends in fortran instead of a random...
authorAugustin Degomme <adegomme@users.noreply.github.com>
Sat, 22 Sep 2018 22:25:38 +0000 (00:25 +0200)
committerAugustin Degomme <adegomme@users.noreply.github.com>
Sat, 22 Sep 2018 22:25:38 +0000 (00:25 +0200)
src/smpi/bindings/smpi_f77.cpp
src/smpi/bindings/smpi_f77_comm.cpp
src/smpi/bindings/smpi_f77_type.cpp
src/smpi/include/private.hpp

index 47d296a..5b629f3 100644 (file)
@@ -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);
 }
 
   *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){
 }
 
 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){
 }
 
 void mpi_win_set_attr_(int* win, int* type_keyval, void* att, int* ierr){
index 2c44169..93dbf83 100644 (file)
@@ -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){
 }
 
 void mpi_comm_set_attr_ (int* comm, int* comm_keyval, void *attribute_val, int* ierr){
index e6053a7..bb6b3ca 100644 (file)
@@ -56,9 +56,10 @@ void mpi_type_get_name_ (int*  datatype, char * name, int* len, int* ierr){
     name[*len]=' ';
 }
 
     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){
 }
 
 void mpi_type_set_attr_ (int* type, int* type_keyval, void *attribute_val, int* ierr){
index 7c591b7..e31f526 100644 (file)
@@ -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_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);
 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_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);
 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_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);
 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_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);
 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);