X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/748dca059aa67356f3201a486c7aac249ebd2c18..73e97710413bba3ee2ae8baab0537fbd78811016:/src/smpi/include/private.hpp diff --git a/src/smpi/include/private.hpp b/src/smpi/include/private.hpp index e663ba557f..d3c021e775 100644 --- a/src/smpi/include/private.hpp +++ b/src/smpi/include/private.hpp @@ -57,7 +57,7 @@ constexpr int SMPI_RMA_TAG = -6666; extern XBT_PUBLIC int mpi_in_place_; extern XBT_PUBLIC int mpi_bottom_; extern XBT_PUBLIC int mpi_status_ignore_; -extern XBT_PUBLIC int mpi_statuses_ignore_; +extern XBT_PUBLIC int mpi_statuses_ignore_; /* Convert between Fortran and C */ #define FORT_ADDR(addr, val, val2) \ (((void *)(addr) == (void*) &(val2)) \ @@ -80,15 +80,15 @@ XBT_PRIVATE int smpi_get_universe_size(); XBT_PRIVATE void smpi_deployment_register_process(const std::string& instance_id, int rank, const simgrid::s4u::Actor* actor); +XBT_PRIVATE void smpi_deployment_startup_barrier(const std::string& instance_id); XBT_PRIVATE void smpi_deployment_unregister_process(const std::string& instance_id); XBT_PRIVATE MPI_Comm* smpi_deployment_comm_world(const std::string& instance_id); XBT_PRIVATE void smpi_deployment_cleanup_instances(); -XBT_PRIVATE int smpi_deployment_smpirun(simgrid::s4u::Engine* e, const std::string& hostfile, int np, - const std::string& replayfile, int map, int argc, char* argv[]); +XBT_PRIVATE int smpi_deployment_smpirun(const simgrid::s4u::Engine* e, const std::string& hostfile, int np, + const std::string& replayfile, int map, + const std::vector& run_args); -XBT_PRIVATE void smpi_comm_copy_buffer_callback(simgrid::kernel::activity::CommImpl* comm, void* buff, - size_t buff_size); XBT_PRIVATE void smpi_comm_null_copy_buffer_callback(simgrid::kernel::activity::CommImpl* comm, void* buff, size_t buff_size); @@ -128,8 +128,6 @@ XBT_PRIVATE void smpi_prepare_global_memory_segment(); XBT_PRIVATE void smpi_backup_global_memory_segment(); XBT_PRIVATE void smpi_destroy_global_memory_segments(); XBT_PRIVATE void smpi_bench_destroy(); -XBT_PRIVATE void smpi_bench_begin(); -XBT_PRIVATE void smpi_bench_end(); XBT_PRIVATE void smpi_shared_destroy(); XBT_PRIVATE double smpi_adjust_comp_speed(); @@ -554,10 +552,6 @@ XBT_PRIVATE void private_execute_flops(double flops); CHECK_ARGS(init_flag, MPI_ERR_OTHER, "%s: MPI_Finalize was already called !", __func__) \ } -#define CHECK_MPI_NULL(num, val, err, ptr)\ - CHECK_ARGS((ptr) == (val), (err),\ - "%s: param %d %s cannot be %s", __func__, (num), _XBT_STRINGIFY(ptr), _XBT_STRINGIFY(val)) - #define CHECK_VAL(num, val, err, value)\ CHECK_ARGS((value) == (val), (err),\ "%s: param %d %s cannot be %s", __func__, (num), _XBT_STRINGIFY(value), _XBT_STRINGIFY(val)) @@ -566,6 +560,13 @@ XBT_PRIVATE void private_execute_flops(double flops); CHECK_ARGS((buf) == nullptr, (err),\ "%s: param %d %s cannot be NULL", __func__, (num), _XBT_STRINGIFY(buf)) +#define CHECK_MPI_NULL(num, val, err, ptr)\ + {\ + CHECK_ARGS((ptr) == (val), (err),\ + "%s: param %d %s cannot be %s", __func__, (num), _XBT_STRINGIFY(ptr), _XBT_STRINGIFY(val))\ + CHECK_NULL(num, err, ptr)\ + } + #define CHECK_NEGATIVE(num, err, val)\ CHECK_ARGS((val) < 0, (err),\ "%s: param %d %s cannot be negative", __func__, (num), _XBT_STRINGIFY(val)) @@ -622,8 +623,9 @@ XBT_PRIVATE void private_execute_flops(double flops); #define CHECK_TYPE(num, datatype)\ {\ - CHECK_ARGS(((datatype) == MPI_DATATYPE_NULL|| not (datatype)->is_valid()), MPI_ERR_TYPE,\ - "%s: param %d %s cannot be MPI_DATATYPE_NULL or invalid", __func__, (num), _XBT_STRINGIFY(datatype));\ + CHECK_MPI_NULL((num), MPI_DATATYPE_NULL, MPI_ERR_TYPE, (datatype))\ + CHECK_ARGS((not (datatype)->is_valid()), MPI_ERR_TYPE,\ + "%s: param %d %s is invalid", __func__, (num), _XBT_STRINGIFY(datatype));\ CHECK_DELETED((num), MPI_ERR_TYPE, datatype)\ if (not datatype->is_basic())\ simgrid::smpi::utils::set_current_handle(datatype);\ @@ -632,6 +634,8 @@ XBT_PRIVATE void private_execute_flops(double flops); #define CHECK_OP(num, op, type)\ {\ CHECK_MPI_NULL((num), MPI_OP_NULL, MPI_ERR_OP, (op))\ + CHECK_ARGS((op == MPI_REPLACE || op == MPI_NO_OP), MPI_ERR_OP,\ + "%s: param %d op %s cannot be used in non RMA calls", __func__, (num), _XBT_STRINGIFY(op));\ CHECK_DELETED((num), MPI_ERR_OP, op)\ if (not op->is_predefined())\ simgrid::smpi::utils::set_current_handle(op);\