XBT_PRIVATE simgrid::smpi::ActorExt* smpi_process_remote(simgrid::s4u::ActorPtr actor);
XBT_PRIVATE int smpi_get_universe_size();
-XBT_PRIVATE void smpi_deployment_register_process(const std::string& instance_id, int rank, simgrid::s4u::Actor* actor);
+XBT_PRIVATE void smpi_deployment_register_process(const std::string& instance_id, int rank,
+ const simgrid::s4u::Actor* actor);
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);
}\
}
+#define CHECK_INIT\
+ {\
+ int init_flag=0;\
+ PMPI_Initialized(&init_flag);\
+ CHECK_ARGS((!init_flag), MPI_ERR_OTHER, "%s: MPI_Init was not called !", __func__)\
+ PMPI_Finalized(&init_flag);\
+ 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_COMM(num)\
{\
+ CHECK_INIT\
CHECK_COMM2((num), comm)\
CHECK_DELETED((num), MPI_ERR_COMM, comm)\
simgrid::smpi::utils::set_current_handle(comm);\
{\
CHECK_BUFFER2(num,buf,count)\
CHECK_ARGS( simgrid::smpi::utils::get_buffer_size(buf) < (size_t)(count*datatype->get_extent()), MPI_ERR_BUFFER,\
- "%s: param %d message size %ld exceeds buffer %s size %zu",__func__, (num), count*datatype->get_extent(), _XBT_STRINGIFY(buf), simgrid::smpi::utils::get_buffer_size(buf))\
+ "%s: param %d message size %zd exceeds buffer %s size %zu",__func__, (num), count*datatype->get_extent(), _XBT_STRINGIFY(buf), simgrid::smpi::utils::get_buffer_size(buf))\
}
#define CHECK_COUNT(num, count)\