X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eedadae3072adb2e33ba0beb63219580d1b2bb7e..1b791d40a387d97aebc05cf4dd0b5760777de150:/src/smpi/bindings/smpi_f77.cpp diff --git a/src/smpi/bindings/smpi_f77.cpp b/src/smpi/bindings/smpi_f77.cpp index 530487b303..0cd960050a 100644 --- a/src/smpi/bindings/smpi_f77.cpp +++ b/src/smpi/bindings/smpi_f77.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -23,11 +23,10 @@ void smpi_init_fortran_types() MPI_COMM_WORLD->add_f(); MPI_BYTE->add_f(); // MPI_BYTE MPI_CHAR->add_f(); // MPI_CHARACTER + MPI_C_BOOL->add_f(); // MPI_LOGICAL if (sizeof(void*) == 8) { - MPI_C_BOOL->add_f(); // MPI_LOGICAL MPI_INT->add_f(); // MPI_INTEGER } else { - MPI_C_BOOL->add_f(); // MPI_LOGICAL MPI_LONG->add_f(); // MPI_INTEGER } MPI_INT8_T->add_f(); // MPI_INTEGER1 @@ -263,31 +262,31 @@ void mpi_win_get_group_(int* win, int* group, int* ierr) } } -void mpi_win_get_attr_(int* win, int* type_keyval, MPI_Aint* attribute_val, int* flag, int* ierr) +void mpi_win_get_attr_(int* win, int* win_keyval, MPI_Aint* attribute_val, int* flag, int* ierr) { MPI_Aint* value = nullptr; - *ierr = MPI_Win_get_attr(simgrid::smpi::Win::f2c(*win), *type_keyval, &value, flag); + *ierr = MPI_Win_get_attr(simgrid::smpi::Win::f2c(*win), *win_keyval, &value, flag); if (*flag == 1) *attribute_val = *value; } -void mpi_win_set_attr_(int* win, int* type_keyval, MPI_Aint* att, int* ierr) +void mpi_win_set_attr_(int* win, int* win_keyval, MPI_Aint* att, int* ierr) { - auto* val = static_cast(xbt_malloc(sizeof(MPI_Aint))); + auto* val = xbt_new(MPI_Aint, 1); *val = *att; - *ierr = MPI_Win_set_attr(simgrid::smpi::Win::f2c(*win), *type_keyval, val); + *ierr = MPI_Win_set_attr(simgrid::smpi::Win::f2c(*win), *win_keyval, val); } -void mpi_win_delete_attr_(int* win, int* comm_keyval, int* ierr) +void mpi_win_delete_attr_(int* win, int* win_keyval, int* ierr) { - *ierr = MPI_Win_delete_attr (simgrid::smpi::Win::f2c(*win), *comm_keyval); + *ierr = MPI_Win_delete_attr(simgrid::smpi::Win::f2c(*win), *win_keyval); } void mpi_win_create_keyval_(void* copy_fn, void* delete_fn, int* keyval, void* extra_state, int* ierr) { smpi_copy_fn _copy_fn={nullptr,nullptr,nullptr,nullptr,nullptr,(*(int*)copy_fn) == 0 ? nullptr : reinterpret_cast(copy_fn)}; smpi_delete_fn _delete_fn={nullptr,nullptr,nullptr,nullptr,nullptr,(*(int*)delete_fn) == 0 ? nullptr : reinterpret_cast(delete_fn)}; - *ierr = simgrid::smpi::Keyval::keyval_create(_copy_fn, _delete_fn, keyval, extra_state); + *ierr = simgrid::smpi::Keyval::keyval_create(_copy_fn, _delete_fn, keyval, extra_state, true); } void mpi_win_free_keyval_(int* keyval, int* ierr) @@ -570,10 +569,7 @@ void mpi_op_commutative_(int* op, int* commute, int* ierr) void mpi_group_free_(int* group, int* ierr) { MPI_Group tmp = simgrid::smpi::Group::f2c(*group); - if(tmp != MPI_COMM_WORLD->group() && tmp != MPI_GROUP_EMPTY){ - simgrid::smpi::Group::unref(tmp); - } - *ierr = MPI_SUCCESS; + *ierr = MPI_Group_free(&tmp); } void mpi_group_size_(int* group, int* size, int* ierr) @@ -801,7 +797,7 @@ void mpi_attr_delete_ (int* comm, int* keyval, int* ierr) { } void mpi_attr_put_ (int* comm, int* keyval, int* attr_value, int* ierr) { - auto* val = static_cast(xbt_malloc(sizeof(int))); + auto* val = xbt_new(int, 1); *val = *attr_value; *ierr = MPI_Attr_put(simgrid::smpi::Comm::f2c(*comm), *keyval, val); } @@ -809,7 +805,7 @@ void mpi_attr_put_ (int* comm, int* keyval, int* attr_value, int* ierr) { void mpi_keyval_create_ (void* copy_fn, void* delete_fn, int* keyval, void* extra_state, int* ierr) { smpi_copy_fn _copy_fn={nullptr,nullptr,nullptr,(*(int*)copy_fn) == 0 ? nullptr : reinterpret_cast(copy_fn),nullptr,nullptr}; smpi_delete_fn _delete_fn={nullptr,nullptr,nullptr,(*(int*)delete_fn) == 0 ? nullptr : reinterpret_cast(delete_fn),nullptr,nullptr}; - *ierr = simgrid::smpi::Keyval::keyval_create(_copy_fn, _delete_fn, keyval, extra_state); + *ierr = simgrid::smpi::Keyval::keyval_create(_copy_fn, _delete_fn, keyval, extra_state, true); } void mpi_keyval_free_ (int* keyval, int* ierr) { @@ -933,6 +929,15 @@ void mpi_close_port_ ( char *port_name, int* ierr){ *ierr = MPI_Close_port( port_name); } +void mpi_alloc_mem_(int* size, int* info, void *baseptr, int* ierr){ + *ierr = MPI_Alloc_mem(*size, simgrid::smpi::Info::f2c(*info), baseptr); +} + +void mpi_free_mem_(void *baseptr, int* ierr){ + *ierr = MPI_Free_mem(baseptr); +} + + void smpi_execute_flops_(double* flops){ smpi_execute_flops(*flops); }