namespace simgrid {
namespace mc {
+#ifdef HAVE_SMPI
simgrid::mc::RegionSnapshot privatized_region(
RegionType region_type, void *start_addr, void* permanent_addr, size_t size
)
region.privatized_data(std::move(data));
return std::move(region);
}
+#endif
}
}
else if (type == simgrid::mc::RegionType::Heap)
xbt_assert(!object_info, "Unexpected object info for heap region.");
- const bool privatization_aware = object_info && object_info->privatized();
-
simgrid::mc::RegionSnapshot region;
+
+#ifdef HAVE_SMPI
+ const bool privatization_aware = object_info && object_info->privatized();
if (privatization_aware && MC_smpi_process_count())
region = simgrid::mc::privatized_region(type, start_addr, permanent_addr, size);
else
+#endif
region = simgrid::mc::region(type, start_addr, permanent_addr, size);
region.object_info(object_info);
}
link[res] = '\0';
+#ifdef HAVE_SMPI
if(smpi_is_privatisation_file(link))
continue;
+#endif
// This is (probably) the DIR* we are reading:
// TODO, read all the file entries at once and close the DIR.*
std::shared_ptr<simgrid::mc::ObjectInformation> const& info =
this->find_object_info_rw((void*)address.address());
// Segment overlap is not handled.
+#ifdef HAVE_SMPI
if (info.get() && info.get()->privatized()) {
if (process_index < 0)
xbt_die("Missing process index");
size_t offset = address.address() - (std::uint64_t)info->start_rw;
address = remote((char*)privatisation_region.address + offset);
}
+#endif
}
if (this->is_self()) {