static void memcpy_private(void* dest, const void* src, const std::vector<std::pair<size_t, size_t>>& private_blocks)
{
- for (auto const& block : private_blocks)
- memcpy((uint8_t*)dest+block.first, (uint8_t*)src+block.first, block.second-block.first);
+ for (auto const& [block_begin, block_end] : private_blocks)
+ memcpy((uint8_t*)dest + block_begin, (uint8_t*)src + block_begin, block_end - block_begin);
}
static void check_blocks(const std::vector<std::pair<size_t, size_t>>& private_blocks, size_t buff_size)
{
- for (auto const& block : private_blocks)
- xbt_assert(block.first <= block.second && block.second <= buff_size, "Oops, bug in shared malloc.");
+ for (auto const& [block_begin, block_end] : private_blocks)
+ xbt_assert(block_begin <= block_end && block_end <= buff_size, "Oops, bug in shared malloc.");
}
static void smpi_cleanup_comm_after_copy(simgrid::kernel::activity::CommImpl* comm, void* buff){
/* nothing done in this version */
}
-int smpi_enabled() {
- return MPI_COMM_WORLD != MPI_COMM_UNINITIALIZED;
-}
-
static void smpi_init_papi()
{
#if HAVE_PAPI
static smpi_entry_point_type smpi_resolve_function(void* handle)
{
- auto* entry_point_fortran = reinterpret_cast<smpi_fortran_entry_point_type>(dlsym(handle, "user_main_"));
- if (entry_point_fortran != nullptr) {
+ if (auto* entry_point_fortran = reinterpret_cast<smpi_fortran_entry_point_type>(dlsym(handle, "user_main_"))) {
return [entry_point_fortran](int, char**) {
entry_point_fortran();
return 0;
};
}
- auto* entry_point = reinterpret_cast<smpi_c_entry_point_type>(dlsym(handle, "main"));
- if (entry_point != nullptr) {
+ if (auto* entry_point = reinterpret_cast<smpi_c_entry_point_type>(dlsym(handle, "main"))) {
return entry_point;
}
{
auto* libname = static_cast<std::string*>(data);
std::string path = info->dlpi_name;
- if (path.find(*libname) != std::string::npos) {
- *libname = std::move(path);
- return 1;
- }
- return 0;
+ if (path.find(*libname) == std::string::npos)
+ return 0;
+
+ *libname = std::move(path);
+ return 1;
}
#endif
stat(executable.c_str(), &fdin_stat);
off_t fdin_size = fdin_stat.st_size;
- std::string libnames = simgrid::config::get_value<std::string>("smpi/privatize-libs");
- if (not libnames.empty()) {
+ if (std::string libnames = simgrid::config::get_value<std::string>("smpi/privatize-libs"); not libnames.empty()) {
// split option
std::vector<std::string> privatize_libs;
boost::split(privatize_libs, libnames, boost::is_any_of(";"));
return smpi_exit_status;
}
+int SMPI_is_inited()
+{
+ return MPI_COMM_WORLD != MPI_COMM_UNINITIALIZED;
+}
+
// Called either directly from the user code, or from the code called by smpirun
void SMPI_init(){
smpi_init_options_internal(false);