{
std::unique_ptr<simgrid::mc::RemoteClient> process(new simgrid::mc::RemoteClient(pid, socket));
// TODO, automatic detection of the config from the process
- process->privatized(smpi_privatize_global_variables != SmpiPrivStrategies::None);
+ process->privatized(smpi_privatize_global_variables != SmpiPrivStrategies::NONE);
modelChecker_ = std::unique_ptr<ModelChecker>(
new simgrid::mc::ModelChecker(std::move(process)));
xbt_assert(mc_model_checker == nullptr);
region.size = size;
region.block = ((char*)stack - (char*)heap->heapbase) / BLOCKSIZE + 1;
#if HAVE_SMPI
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap && process)
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP && process)
region.process_index = process->pid - 1;
else
#endif
} else if (siginfo->si_signo == SIGSEGV) {
fprintf(stderr, "Segmentation fault.\n");
#if HAVE_SMPI
- if (smpi_enabled() && smpi_privatize_global_variables == SmpiPrivStrategies::None) {
+ if (smpi_enabled() && smpi_privatize_global_variables == SmpiPrivStrategies::NONE) {
#if HAVE_PRIVATIZATION
fprintf(stderr, "Try to enable SMPI variable privatization with --cfg=smpi/privatization:yes.\n");
#else
/** @brief Returns the last call location (filename, linenumber). Process-specific. */
XBT_PUBLIC smpi_trace_call_location_t* smpi_trace_get_call_location();
-enum class SmpiPrivStrategies { None = 0, Mmap = 1, Dlopen = 2, Default = Dlopen };
+enum class SmpiPrivStrategies { NONE = 0, MMAP = 1, DLOPEN = 2, DEFAULT = DLOPEN };
extern XBT_PRIVATE SmpiPrivStrategies smpi_privatize_global_variables;
void smpi_bench_begin()
{
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
smpi_switch_data_segment(simgrid::s4u::Actor::self());
}
auto private_blocks = merge_private_blocks(src_private_blocks, dst_private_blocks);
check_blocks(private_blocks, buff_size);
void* tmpbuff=buff;
- if ((smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) &&
+ if ((smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) &&
(static_cast<char*>(buff) >= smpi_data_exe_start) &&
(static_cast<char*>(buff) < smpi_data_exe_start + smpi_data_exe_size)) {
XBT_DEBUG("Privatization : We are copying from a zone inside global memory... Saving data to temp buffer !");
memcpy_private(tmpbuff, buff, private_blocks);
}
- if ((smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) && ((char*)comm->dst_buff >= smpi_data_exe_start) &&
+ if ((smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) && ((char*)comm->dst_buff >= smpi_data_exe_start) &&
((char*)comm->dst_buff < smpi_data_exe_start + smpi_data_exe_size)) {
XBT_DEBUG("Privatization : We are copying to a zone inside global memory - Switch data segment");
smpi_switch_data_segment(comm->dst_proc->iface());
xbt_os_timer_free(global_timer);
}
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap)
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP)
smpi_destroy_global_memory_segments();
smpi_free_static();
}
xbt_assert(smpi_host_speed >= 0, "You're trying to set the host_speed to a negative value (%f)", smpi_host_speed);
std::string smpi_privatize_option = simgrid::config::get_value<std::string>("smpi/privatization");
if (smpi_privatize_option == "no" || smpi_privatize_option == "0")
- smpi_privatize_global_variables = SmpiPrivStrategies::None;
+ smpi_privatize_global_variables = SmpiPrivStrategies::NONE;
else if (smpi_privatize_option == "yes" || smpi_privatize_option == "1")
- smpi_privatize_global_variables = SmpiPrivStrategies::Default;
+ smpi_privatize_global_variables = SmpiPrivStrategies::DEFAULT;
else if (smpi_privatize_option == "mmap")
- smpi_privatize_global_variables = SmpiPrivStrategies::Mmap;
+ smpi_privatize_global_variables = SmpiPrivStrategies::MMAP;
else if (smpi_privatize_option == "dlopen")
- smpi_privatize_global_variables = SmpiPrivStrategies::Dlopen;
+ smpi_privatize_global_variables = SmpiPrivStrategies::DLOPEN;
else
xbt_die("Invalid value for smpi/privatization: '%s'", smpi_privatize_option.c_str());
if (not SMPI_switch_data_segment) {
XBT_DEBUG("Running without smpi_main(); disable smpi/privatization.");
- smpi_privatize_global_variables = SmpiPrivStrategies::None;
+ smpi_privatize_global_variables = SmpiPrivStrategies::NONE;
}
#if defined(__FreeBSD__)
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
XBT_INFO("mmap privatization is broken on FreeBSD, switching to dlopen privatization instead.");
- smpi_privatize_global_variables = SmpiPrivStrategies::Dlopen;
+ smpi_privatize_global_variables = SmpiPrivStrategies::DLOPEN;
}
#endif
SIMIX_comm_set_copy_data_callback(smpi_comm_copy_buffer_callback);
smpi_init_options();
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Dlopen) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::DLOPEN) {
std::string executable_copy = executable;
};
}
else {
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap)
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP)
smpi_prepare_global_memory_segment();
// Load the dynamic library and resolve the entry point:
void* handle = dlopen(executable, RTLD_LAZY | RTLD_LOCAL);
smpi_entry_point_type entry_point = smpi_resolve_function(handle);
if (not entry_point)
xbt_die("main not found in %s", executable);
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap)
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP)
smpi_backup_global_memory_segment();
// Execute the same entry point for each simulated process:
XBT_DEBUG("bss+data segment found : size %d starting at %p", smpi_data_exe_size, smpi_data_exe_start);
if (smpi_data_exe_size == 0) { // no need to do anything as global variables don't exist
- smpi_privatize_global_variables = SmpiPrivStrategies::None;
+ smpi_privatize_global_variables = SmpiPrivStrategies::NONE;
return;
}
// cheinrich: I'm not sure what the impact of the SMPI_switch_data_segment on this call is. I moved
// this up here so that I can set the privatized region before the switch.
Process* process = smpi_process_remote(proc);
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
/* Now using the segment index of this process */
process->set_privatized_region(smpi_init_global_memory_segment_process());
/* Done at the process's creation */
}
int Comm::dup(MPI_Comm* newcomm){
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
// we need to switch as the called function may silently touch global variables
smpi_switch_data_segment(simgrid::s4u::Actor::self());
}
smpi_process()->set_replaying(false);
}
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
// we need to switch as the called function may silently touch global variables
smpi_switch_data_segment(simgrid::s4u::Actor::self());
}
Coll_allgather_mpich::allgather(&leader, 1, MPI_INT , leaders_map, 1, MPI_INT, this);
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
// we need to switch as the called function may silently touch global variables
smpi_switch_data_segment(simgrid::s4u::Actor::self());
}
}
Coll_bcast_mpich::bcast(&(is_uniform_),1, MPI_INT, 0, comm_intra );
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
// we need to switch as the called function may silently touch global variables
smpi_switch_data_segment(simgrid::s4u::Actor::self());
}
// FIXME Handle the case of a partial shared malloc.
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
smpi_switch_data_segment(simgrid::s4u::Actor::self());
}
/* First check if we really have something to do */
void Op::apply(void *invec, void *inoutvec, int *len, MPI_Datatype datatype)
{
- if (smpi_privatize_global_variables == SmpiPrivStrategies::Mmap) {
+ if (smpi_privatize_global_variables == SmpiPrivStrategies::MMAP) {
// we need to switch as the called function may silently touch global variables
XBT_DEBUG("Applying operation, switch to the right data frame ");
smpi_switch_data_segment(simgrid::s4u::Actor::self());
if (not(old_type_->flags() & DT_FLAG_DERIVED)) {
oldbuf = buf_;
if (not process->replaying() && oldbuf != nullptr && size_ != 0) {
- if ((smpi_privatize_global_variables != SmpiPrivStrategies::None) &&
+ if ((smpi_privatize_global_variables != SmpiPrivStrategies::NONE) &&
(static_cast<char*>(buf_) >= smpi_data_exe_start) &&
(static_cast<char*>(buf_) < smpi_data_exe_start + smpi_data_exe_size)) {
XBT_DEBUG("Privatization : We are sending from a zone inside global memory. Switch data segment ");
if (((req->flags_ & MPI_REQ_ACCUMULATE) != 0) ||
(datatype->flags() & DT_FLAG_DERIVED)) { // && (not smpi_is_shared(req->old_buf_))){
- if (not smpi_process()->replaying() && smpi_privatize_global_variables != SmpiPrivStrategies::None &&
+ if (not smpi_process()->replaying() && smpi_privatize_global_variables != SmpiPrivStrategies::NONE &&
static_cast<char*>(req->old_buf_) >= smpi_data_exe_start &&
static_cast<char*>(req->old_buf_) < smpi_data_exe_start + smpi_data_exe_size) {
XBT_VERB("Privatization : We are unserializing to a zone in global memory Switch data segment ");