constexpr unsigned MPI_REQ_ACCUMULATE = 0x400;
constexpr unsigned MPI_REQ_GENERALIZED = 0x800;
constexpr unsigned MPI_REQ_COMPLETE = 0x1000;
+constexpr unsigned MPI_REQ_BSEND = 0x2000;
enum class SmpiProcessState { UNINITIALIZED, INITIALIZING, INITIALIZED /*(=MPI_Init called)*/, FINALIZED };
constexpr int COLL_TAG_BARRIER = -778;
constexpr int COLL_TAG_REDUCE_SCATTER = -889;
constexpr int COLL_TAG_ALLTOALLV = -1000;
+constexpr int COLL_TAG_ALLTOALLW = -1020;
constexpr int COLL_TAG_ALLTOALL = -1112;
constexpr int COLL_TAG_GATHERV = -2223;
constexpr int COLL_TAG_BCAST = -3334;
constexpr int COLL_TAG_ALLREDUCE = -4445;
+
// SMPI_RMA_TAG has to be the smallest one, as it will be decremented for accumulate ordering.
constexpr int SMPI_RMA_TAG = -6666;
#define FORT_ADDR(addr, val, val2) \
(((void *)(addr) == (void*) &(val2)) \
? (val) : (void *)(addr))
-#define FORT_BOTTOM(addr) FORT_ADDR(addr, MPI_BOTTOM, mpi_bottom_)
-#define FORT_IN_PLACE(addr) FORT_ADDR(addr, MPI_IN_PLACE, mpi_in_place_)
-#define FORT_STATUS_IGNORE(addr) static_cast<MPI_Status*>(FORT_ADDR(addr, MPI_STATUS_IGNORE, mpi_status_ignore_))
-#define FORT_STATUSES_IGNORE(addr) static_cast<MPI_Status*>(FORT_ADDR(addr, MPI_STATUSES_IGNORE, mpi_statuses_ignore_))
+#define FORT_BOTTOM(addr) FORT_ADDR((addr), MPI_BOTTOM, mpi_bottom_)
+#define FORT_IN_PLACE(addr) FORT_ADDR((addr), MPI_IN_PLACE, mpi_in_place_)
+#define FORT_STATUS_IGNORE(addr) static_cast<MPI_Status*>(FORT_ADDR((addr), MPI_STATUS_IGNORE, mpi_status_ignore_))
+#define FORT_STATUSES_IGNORE(addr) \
+ static_cast<MPI_Status*>(FORT_ADDR((addr), MPI_STATUSES_IGNORE, mpi_statuses_ignore_))
extern XBT_PRIVATE MPI_Comm MPI_COMM_UNINITIALIZED;
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::ActorPtr actor);
+XBT_PRIVATE void smpi_deployment_register_process(const std::string& instance_id, int rank, 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);
-XBT_PRIVATE simgrid::s4u::Barrier* smpi_deployment_finalization_barrier(const std::string& instance_id);
XBT_PRIVATE void smpi_deployment_cleanup_instances();
XBT_PRIVATE void smpi_comm_copy_buffer_callback(simgrid::kernel::activity::CommImpl* comm, void* buff,
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();
XBT_PRIVATE unsigned char* smpi_get_tmp_sendbuffer(size_t size);
XBT_PRIVATE unsigned char* smpi_get_tmp_recvbuffer(size_t size);
void mpi_graphdims_get_(int* comm, int* nnodes, int* nedges, int* ierr);
void mpi_topo_test_(int* comm, int* top_type, int* ierr);
void mpi_error_class_(int* errorcode, int* errorclass, int* ierr);
-void mpi_errhandler_create_(void* function, void* errhandler, int* ierr);
-void mpi_errhandler_free_(void* errhandler, int* ierr);
-void mpi_errhandler_get_(int* comm, void* errhandler, int* ierr);
-void mpi_errhandler_set_(int* comm, void* errhandler, int* ierr);
-void mpi_comm_set_errhandler_(int* comm, void* errhandler, int* ierr);
-void mpi_comm_get_errhandler_(int* comm, void* errhandler, int* ierr);
+void mpi_errhandler_create_(void* function, int* errhandler, int* ierr);
+void mpi_errhandler_free_(int* errhandler, int* ierr);
+void mpi_errhandler_get_(int* comm, int* errhandler, int* ierr);
+void mpi_errhandler_set_(int* comm, int* errhandler, int* ierr);
+void mpi_comm_set_errhandler_(int* comm, int* errhandler, int* ierr);
+void mpi_comm_get_errhandler_(int* comm, int* errhandler, int* ierr);
void mpi_type_contiguous_(int* count, int* old_type, int* newtype, int* ierr);
void mpi_cancel_(int* request, int* ierr);
void mpi_buffer_attach_(void* buffer, int* size, int* ierr);
void mpi_comm_set_info_(int* comm, int* info, int* ierr);
void mpi_comm_get_info_(int* comm, int* info, int* ierr);
void mpi_info_get_(int* info, char* key, int* valuelen, char* value, int* flag, int* ierr, unsigned int keylen);
-void mpi_comm_create_errhandler_(void* function, void* errhandler, int* ierr);
+void mpi_comm_create_errhandler_(void* function, int* errhandler, int* ierr);
void mpi_add_error_class_(int* errorclass, int* ierr);
void mpi_add_error_code_(int* errorclass, int* errorcode, int* ierr);
void mpi_add_error_string_(int* errorcode, char* string, int* ierr);
extern XBT_PRIVATE SmpiPrivStrategies smpi_privatize_global_variables;
+XBT_PRIVATE void private_execute_flops(double flops);
+
#endif