MacOS has mmap and no objdump, so this disables the feature on this platform for now
SET(HAVE_MMALLOC 0)
endif()
+
if(WIN32) #THOSE FILES ARE FUNCTIONS ARE NOT DETECTED BUT THEY SHOULD...
set(HAVE_UCONTEXT_H 1)
set(HAVE_MAKECONTEXT 1)
if(enable_smpi)
include(FindGFortran)
+ #really checks for objdump for privatization
+ find_package(BinUtils QUIET)
SET(HAVE_SMPI 1)
+
+ if( NOT "${CMAKE_OBJDUMP}" MATCHES "CMAKE_OBJDUMP-NOTFOUND" AND HAVE_MMAP)
+ SET(HAVE_PRIVATIZATION 1)
+ else()
+ SET(HAVE_PRIVATIZATION 0)
+ endif()
endif()
#--------------------------------------------------------------------------------------------------
message("HAVE_ASPRINTF ...............: ${HAVE_ASPRINTF}")
message("HAVE_VASPRINTF ..............: ${HAVE_VASPRINTF}")
message("HAVE_MMAP ...................: ${HAVE_MMAP}")
+ message("HAVE_PRIVATIZATION ..........: ${HAVE_PRIVATIZATION}")
message("HAVE_PROCESS_VM_READV .......: ${HAVE_PROCESS_VM_READV}")
message("HAVE_THREAD_LOCAL_STORAGE ...: ${HAVE_THREAD_LOCAL_STORAGE}")
message("HAVE_MMALLOC ................: ${HAVE_MMALLOC}")
/* Indicates that we have SMPI FORTRAN support */
#cmakedefine SMPI_FORTRAN @SMPI_FORTRAN@
+/* We have mmap and objdump to handle privatization */
+#cmakedefine HAVE_PRIVATIZATION @HAVE_PRIVATIZATION@
+
/* Indicates that we have NS3 support */
#cmakedefine HAVE_NS3 @HAVE_NS3@
if(smpi_size_data_exe == 0)//no need to switch
return;
-#ifdef HAVE_MMAP
+#ifdef HAVE_PRIVATIZATION
int i;
if(smpi_loaded_page==-1){//initial switch, do the copy from the real page here
for (i=0; i< SIMIX_process_count(); i++){
void smpi_initialize_global_memory_segments(){
-#ifndef HAVE_MMAP
+#ifndef HAVE_PRIVATIZATION
smpi_privatize_global_variables=0;
return;
#else
void smpi_destroy_global_memory_segments(){
if (smpi_size_data_exe == 0)//no need to switch
return;
-#ifdef HAVE_MMAP
+#ifdef HAVE_PRIVATIZATION
int i;
for (i=0; i< smpi_process_count(); i++){
if(munmap(smpi_privatisation_regions[i].address, smpi_size_data_exe) < 0) {
if(enable_smpi AND enable_smpi_MPICH3_testsuite)
#C version - use automatic privatization if mmap is supported, manual through SMPI macros if not
- if(HAVE_MMAP)
+ if(HAVE_PRIVATIZATION)
add_library(mtest_c STATIC util/mtest.c)
else()
add_library(mtest_c STATIC util/mtest_manual.c)
add_executable(allgather3 allgather3.c)
add_executable(allgatherv2 allgatherv2.c)
add_executable(allgatherv3 allgatherv3.c)
- if(HAVE_MMAP)
+ if(HAVE_PRIVATIZATION)
add_executable(allgatherv4 allgatherv4.c)
else()
add_executable(allgatherv4 allgatherv4_manual.c)