#include <fstream>
#include <sys/stat.h>
+#if SIMGRID_HAVE_MC
+#include "src/mc/mc_config.hpp"
+#endif
+
#if SG_HAVE_SENDFILE
#include <sys/sendfile.h>
#endif
* See smpi_comm.cpp and the functions therein for details.
*/
MPI_Comm MPI_COMM_WORLD = MPI_COMM_UNINITIALIZED;
-MPI_Errhandler *MPI_ERRORS_RETURN = nullptr;
-MPI_Errhandler *MPI_ERRORS_ARE_FATAL = nullptr;
-MPI_Errhandler *MPI_ERRHANDLER_NULL = nullptr;
// No instance gets manually created; check also the smpirun.in script as
// this default name is used there as well (when the <actor> tag is generated).
static const std::string smpi_default_instance_name("smpirun");
simgrid::smpi::ActorExt* smpi_process_remote(simgrid::s4u::ActorPtr actor)
{
+ if (actor.get() == nullptr)
+ return nullptr;
return process_data.at(actor.get());
}
static void smpi_check_options()
{
- //check correctness of MPI parameters
+#if SIMGRID_HAVE_MC
+ if (MC_is_active()) {
+ if (_sg_mc_buffering == "zero")
+ simgrid::config::set_value<int>("smpi/send-is-detached-thresh", 0);
+ else if (_sg_mc_buffering == "infty")
+ simgrid::config::set_value<int>("smpi/send-is-detached-thresh", INT_MAX);
+ else
+ THROW_IMPOSSIBLE;
+ }
+#endif
xbt_assert(simgrid::config::get_value<int>("smpi/async-small-thresh") <=
+ simgrid::config::get_value<int>("smpi/send-is-detached-thresh"),
+ "smpi/async-small-thresh (=%d) should be smaller or equal to smpi/send-is-detached-thresh (=%d)",
+ simgrid::config::get_value<int>("smpi/async-small-thresh"),
simgrid::config::get_value<int>("smpi/send-is-detached-thresh"));
if (simgrid::config::is_default("smpi/host-speed") && not MC_is_active()) {
}
});
simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::Actor const& actor) {
+ XBT_DEBUG("Delete the extension of actor %s", actor.get_cname());
auto it = process_data.find(&actor);
if (it != process_data.end()) {
delete it->second;
void smpi_mpi_init() {
smpi_init_fortran_types();
if(smpi_init_sleep > 0)
- simcall_process_sleep(smpi_init_sleep);
+ simgrid::s4u::this_actor::sleep_for(smpi_init_sleep);
}