A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New option to detect dangerous code mixing collectives and P2P in a deadlocking way
[simgrid.git]
/
src
/
smpi
/
internals
/
smpi_global.cpp
diff --git
a/src/smpi/internals/smpi_global.cpp
b/src/smpi/internals/smpi_global.cpp
index
a183594
..
8b3a184
100644
(file)
--- a/
src/smpi/internals/smpi_global.cpp
+++ b/
src/smpi/internals/smpi_global.cpp
@@
-213,10
+213,6
@@
void smpi_comm_null_copy_buffer_callback(simgrid::kernel::activity::CommImpl*, v
/* nothing done in this version */
}
/* nothing done in this version */
}
-int smpi_enabled() {
- return MPI_COMM_WORLD != MPI_COMM_UNINITIALIZED;
-}
-
static void smpi_init_papi()
{
#if HAVE_PAPI
static void smpi_init_papi()
{
#if HAVE_PAPI
@@
-325,16
+321,14
@@
static int smpi_run_entry_point(const F& entry_point, const std::string& executa
static smpi_entry_point_type smpi_resolve_function(void* handle)
{
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;
};
}
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;
}
return entry_point;
}
@@
-389,11
+383,11
@@
static int visit_libs(struct dl_phdr_info* info, size_t, void* data)
{
auto* libname = static_cast<std::string*>(data);
std::string path = info->dlpi_name;
{
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
}
#endif
@@
-404,8
+398,7
@@
static void smpi_init_privatization_dlopen(const std::string& executable)
stat(executable.c_str(), &fdin_stat);
off_t fdin_size = fdin_stat.st_size;
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(";"));
// split option
std::vector<std::string> privatize_libs;
boost::split(privatize_libs, libnames, boost::is_any_of(";"));
@@
-586,6
+579,11
@@
int smpi_main(const char* executable, int argc, char* argv[])
return smpi_exit_status;
}
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);
// Called either directly from the user code, or from the code called by smpirun
void SMPI_init(){
smpi_init_options_internal(false);