diff --git a/Core/Algorithms/inc/Simulation.h b/Core/Algorithms/inc/Simulation.h index 8ccef37e919c25a24908a9b16995fff382d1431b..3121f7c64aff2cd316c79ac2ca7f38cb2a43185b 100644 --- a/Core/Algorithms/inc/Simulation.h +++ b/Core/Algorithms/inc/Simulation.h @@ -51,7 +51,7 @@ public: //! Run a simulation, possibly averaged over parameter distributions void runSimulation(); - //! runs OpenMPI simulation + //! Run an OpenMPI simulation void runOMPISimulation(); //! Normalize the detector counts diff --git a/Core/Algorithms/src/OMPISimulation.cpp b/Core/Algorithms/src/OMPISimulation.cpp index 99b73f8c8b3293ecefcbce950a19aff9500df339..02acabd354c0e9fcd64bd679fde5fdcc25f35b4b 100644 --- a/Core/Algorithms/src/OMPISimulation.cpp +++ b/Core/Algorithms/src/OMPISimulation.cpp @@ -1,65 +1,76 @@ #include "OMPISimulation.h" #include "Simulation.h" #include "OutputData.h" -//#include <mpi.h> +#include "Exceptions.h" + +#ifdef BORNAGAIN_OPENMPI + +#include <mpi.h> void OMPISimulation::runSimulation(const Simulation * /* simulation */) { -// //MPI_Init(&argc, &argv); -// MPI_Init(0, 0); - -// MPI_Status st; - -// int world_size; -// MPI_Comm_size(MPI_COMM_WORLD, &world_size); - -// // Get the rank of the process -// int world_rank; -// MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); - -// // Get the name of the processor -// char processor_name[MPI_MAX_PROCESSOR_NAME]; -// int name_len; -// MPI_Get_processor_name(processor_name, &name_len); - -// // Print off a hello world message -// printf("Hello world from processor %s, rank %d" -// " out of %d processors\n", -// processor_name, world_rank, world_size); - -// if(world_rank != 0) { -// std::cout << "XXX not a 0" << std::endl; -// Simulation *sim = simulation->clone(); -// ThreadInfo threadInfo; -// threadInfo.n_batches = world_size - 1; -// threadInfo.current_batch = world_rank - 1; -// std::cout << " xxx preparing to run " << threadInfo.n_batches << " " << threadInfo.current_batch << std::endl; -// sim->setThreadInfo(threadInfo); -// sim->runSimulation(); - -// //std::vector<double> raw = sim->getOutputData()->getRawDataVector(); -// std::vector<double> raw; -// raw.resize(1000000); -// std::cout << " xxx " << threadInfo.n_batches << " " << threadInfo.current_batch << " ... sending" << std::endl; -// MPI_Send(&raw[0], raw.size(), MPI_DOUBLE, 0, 0, MPI_COMM_WORLD); - -// } -// if(world_rank==0) { -// std::cout << " preparing to receive" << std::endl; -//// std::vector<double> raw = simulation->getOutputData()->getRawDataVector(); -// std::vector<double> raw; -// raw.resize(1000000); -// for(int i=1; i<world_size; ++i) { -// std::cout << " ... receiving " << i << std::endl; -// MPI_Recv(&raw[0], raw.size(), MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &st); -// } - -// } - - -// // Finalize the MPI environment. -// MPI_Finalize(); + MPI_Status st; + + int world_size; + MPI_Comm_size(MPI_COMM_WORLD, &world_size); + + // Get the rank of the process + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + + // Get the name of the processor + char processor_name[MPI_MAX_PROCESSOR_NAME]; + int name_len; + MPI_Get_processor_name(processor_name, &name_len); + + // Print off a hello world message + printf("Hello world from processor %s, rank %d" + " out of %d processors\n", + processor_name, world_rank, world_size); + + if(world_rank != 0) { + std::cout << "XXX not a 0" << std::endl; + Simulation *sim = simulation->clone(); + ThreadInfo threadInfo; + threadInfo.n_batches = world_size - 1; + threadInfo.current_batch = world_rank - 1; + std::cout << " xxx preparing to run " << threadInfo.n_batches << " " << threadInfo.current_batch << std::endl; + sim->setThreadInfo(threadInfo); + sim->runSimulation(); + + //std::vector<double> raw = sim->getOutputData()->getRawDataVector(); + std::vector<double> raw; + raw.resize(1000000); + std::cout << " xxx " << threadInfo.n_batches << " " << threadInfo.current_batch << " ... sending" << std::endl; + MPI_Send(&raw[0], raw.size(), MPI_DOUBLE, 0, 0, MPI_COMM_WORLD); + + } + if(world_rank==0) { + std::cout << " preparing to receive" << std::endl; +// std::vector<double> raw = simulation->getOutputData()->getRawDataVector(); + std::vector<double> raw; + raw.resize(1000000); + for(int i=1; i<world_size; ++i) { + std::cout << " ... receiving " << i << std::endl; + MPI_Recv(&raw[0], raw.size(), MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &st); + } + + } + } + + +#else +// ----------------------------------------------------------------------------- +// No OpenMPI support +// ----------------------------------------------------------------------------- + +void OMPISimulation::runSimulation(const Simulation * /* simulation */) +{ + throw RuntimeErrorException("OMPISimulation::runSimulation() -> Error! Can't run OpenMPI simulation. The package was compiled without OpenMPI support (compile with -DBORNAGAIN_OPENMPI=ON"); +} + +#endif diff --git a/Core/Algorithms/src/Simulation.cpp b/Core/Algorithms/src/Simulation.cpp index a3d7ecc6dcf366c84aac5819845a9f5bbe1886a1..46811ba17eb2a01015203efbd3c04f6e8b6c69ac 100644 --- a/Core/Algorithms/src/Simulation.cpp +++ b/Core/Algorithms/src/Simulation.cpp @@ -22,7 +22,7 @@ #include "OutputDataFunctions.h" #include "BornAgainNamespace.h" #include "ProgressHandlerDWBA.h" -//#include "OMPISimulation.h" +#include "OMPISimulation.h" #include "Macros.h" GCC_DIAG_OFF(strict-aliasing); @@ -172,8 +172,8 @@ void Simulation::runSimulation() void Simulation::runOMPISimulation() { -// OMPISimulation ompi; -// ompi.runSimulation(this); + OMPISimulation ompi; + ompi.runSimulation(this); } diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt index e712dd0011d0098b50062ae6faabfbc95a769566..5fd590eed9eaac937f68c6fd5dbaa252d68c0827 100644 --- a/Core/CMakeLists.txt +++ b/Core/CMakeLists.txt @@ -50,6 +50,11 @@ if(BORNAGAIN_PYTHON) add_definitions(-DBORNAGAIN_PYTHON) endif() +if(BORNAGAIN_OPENMPI) + add_definitions(-DBORNAGAIN_OPENMPI) +endif() + + # --- making library --- add_library( ${library_name} diff --git a/Fit/CMakeLists.txt b/Fit/CMakeLists.txt index d8fa58266a14297cd38ea7fb8e6125609dbacf6d..ba6676b52897c19b884c35f85674c69feb5bf960 100644 --- a/Fit/CMakeLists.txt +++ b/Fit/CMakeLists.txt @@ -60,7 +60,7 @@ set(${library_name}_LIBRARY ${library_name} PARENT_SCOPE) include_directories( ${BornAgainCore_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} - ${EIGEN3_INCLUDE_DIR} + ${EIGEN3_INCLUDE_DIRS} ${RootMinimizers_INCLUDE_DIRS} ${GSL_INCLUDE_DIR} ) @@ -69,6 +69,7 @@ target_link_libraries( ${BornAgainCore_LIBRARY} ${Boost_LIBRARIES} ${RootMinimizers_LIBRARY} + ${GSL_LIBRARIES} ) if(ROOT_FOUND) diff --git a/Tests/UnitTests/TestFit/CMakeLists.txt b/Tests/UnitTests/TestFit/CMakeLists.txt index d992cbb3a67a8b9222a4f9172ccdbd2cb87d45cd..c940629cfcf9b1cd4322fbd44a26cc1ed40cdf67 100644 --- a/Tests/UnitTests/TestFit/CMakeLists.txt +++ b/Tests/UnitTests/TestFit/CMakeLists.txt @@ -25,6 +25,7 @@ target_link_libraries(TestFit ${BornAgainCore_LIBRARY} ${BornAgainFit_LIBRARY} ${Boost_LIBRARIES} + ${GSL_LIBRARIES} ) if(BORNAGAIN_OPENMPI) diff --git a/Tests/UnitTests/TestGUI/CMakeLists.txt b/Tests/UnitTests/TestGUI/CMakeLists.txt index b0c27401b90259ed0574e6ab64602b0638d7a967..9ad32fd7e29b721a85c524d5d00e939f1bcc5e9c 100644 --- a/Tests/UnitTests/TestGUI/CMakeLists.txt +++ b/Tests/UnitTests/TestGUI/CMakeLists.txt @@ -27,8 +27,6 @@ add_executable( TestGUI ${source_files} ${include_files}) target_link_libraries(TestGUI ${BornAgainCore_LIBRARY} -# ${Boost_LIBRARIES} -# ${GSL_LIBRARIES} ${BornAgainGUI_LIBRARY} ) diff --git a/ThirdParty/RootMinimizers/CMakeLists.txt b/ThirdParty/RootMinimizers/CMakeLists.txt index 486510dd0d39572059884fc1d79c7dd787b0d180..63debd104e53b7ab621388ee9b47a35ea468f572 100644 --- a/ThirdParty/RootMinimizers/CMakeLists.txt +++ b/ThirdParty/RootMinimizers/CMakeLists.txt @@ -38,7 +38,7 @@ set(${library_name}_INCLUDE_DIRS ${include_dirs} PARENT_SCOPE) set(${library_name}_LIBRARY ${library_name} PARENT_SCOPE) # --- external dependencies --- -include_directories(${GSL_INCLUDE_DIRS}) +include_directories(${GSL_INCLUDE_DIR}) target_link_libraries(${library_name} ${GSL_LIBRARIES}) # --- installation --- diff --git a/cmake/modules/FindGSL.cmake b/cmake/modules/FindGSL.cmake index d6f7bec5407632754f57ab31b8c149856d838583..0b1cc679b2aace8fdee5d020311dc0f8247c3623 100644 --- a/cmake/modules/FindGSL.cmake +++ b/cmake/modules/FindGSL.cmake @@ -13,157 +13,288 @@ # GSL_LIBRARY_DIRS, the directory where the PLplot library is found. # GSL_CFLAGS, additional c (c++) required -set( GSL_FOUND OFF ) -set( GSL_CBLAS_FOUND OFF ) - -if(GSL_INCLUDE_DIR OR GSL_CONFIG_EXECUTABLE) - set(GSL_FIND_QUIETLY 1) -endif() - -# Windows, but not for Cygwin and MSys where gsl-config is available -if( WIN32 AND NOT CYGWIN AND NOT MSYS ) - # look for headers - find_path( GSL_INCLUDE_DIR - NAMES gsl/gsl_cdf.h gsl/gsl_randist.h - PATHS - $ENV{GSL_DIR}/include - "C:/opt/local/include" - ) -# message("XXXXX ${GSL_INCLUDE_DIR}") + + +#FIXME check windows +IF(WIN32) + # JW tested with gsl-1.8, Windows XP, MSVS 7.1 + SET(GSL_POSSIBLE_ROOT_DIRS + ${GSL_ROOT_DIR} + $ENV{GSL_ROOT_DIR} + ${GSL_DIR} + ${GSL_HOME} + $ENV{GSL_DIR} + $ENV{GSL_HOME} + $ENV{EXTRA} + "C:/Program Files/GnuWin32") + + FIND_PATH(GSL_INCLUDE_DIR + NAMES gsl/gsl_cdf.h gsl/gsl_randist.h + PATHS ${GSL_POSSIBLE_ROOT_DIRS} + PATH_SUFFIXES include + DOC "GSL header include dir") + + FIND_LIBRARY(GSL_GSL_LIBRARY + NAMES libgsl.dll.a gsl libgsl + PATHS ${GSL_POSSIBLE_ROOT_DIRS} + PATH_SUFFIXES lib + DOC "GSL library") + + if(NOT GSL_GSL_LIBRARY) + FIND_FILE(GSL_GSL_LIBRARY + NAMES libgsl.dll.a + PATHS ${GSL_POSSIBLE_ROOT_DIRS} + PATH_SUFFIXES lib + DOC "GSL library") + endif(NOT GSL_GSL_LIBRARY) + + FIND_LIBRARY(GSL_GSLCBLAS_LIBRARY + NAMES libgslcblas.dll.a gslcblas libgslcblas + PATHS ${GSL_POSSIBLE_ROOT_DIRS} + PATH_SUFFIXES lib + DOC "GSL cblas library dir") + + if(NOT GSL_GSLCBLAS_LIBRARY) + FIND_FILE(GSL_GSLCBLAS_LIBRARY + NAMES libgslcblas.dll.a + PATHS ${GSL_POSSIBLE_ROOT_DIRS} + PATH_SUFFIXES lib + DOC "GSL library") + endif(NOT GSL_GSLCBLAS_LIBRARY) + + SET(GSL_LIBRARIES ${GSL_GSL_LIBRARY}) + + +ELSE(WIN32) + + IF(UNIX) + SET(GSL_CONFIG_PREFER_PATH + "$ENV{GSL_DIR}/bin" + "$ENV{GSL_DIR}" + "$ENV{GSL_HOME}/bin" + "$ENV{GSL_HOME}" + CACHE STRING "preferred path to GSL (gsl-config)") + FIND_PROGRAM(GSL_CONFIG gsl-config + ${GSL_CONFIG_PREFER_PATH} + /usr/bin/ + /usr/local/bin/) + + IF (GSL_CONFIG) + # set CXXFLAGS to be fed into CXX_FLAGS by the user: + SET(GSL_CXX_FLAGS "`${GSL_CONFIG} --cflags`") + + # set INCLUDE_DIRS to prefix+include + EXEC_PROGRAM(${GSL_CONFIG} + ARGS --prefix + OUTPUT_VARIABLE GSL_PREFIX) + SET(GSL_INCLUDE_DIR ${GSL_PREFIX}/include CACHE STRING INTERNAL) + + # set link libraries and link flags + EXEC_PROGRAM(${GSL_CONFIG} + ARGS --libs + OUTPUT_VARIABLE GSL_LIBRARIES ) + + # extract link dirs for rpath + EXEC_PROGRAM(${GSL_CONFIG} + ARGS --libs + OUTPUT_VARIABLE GSL_CONFIG_LIBS ) + + # extract version + EXEC_PROGRAM(${GSL_CONFIG} + ARGS --version + OUTPUT_VARIABLE GSL_FULL_VERSION ) + + # split version as major/minor + STRING(REGEX MATCH "(.)\\..*" GSL_VERSION_MAJOR_ "${GSL_FULL_VERSION}") + SET(GSL_VERSION_MAJOR ${CMAKE_MATCH_1}) + STRING(REGEX MATCH ".\\.(.*)" GSL_VERSION_MINOR_ "${GSL_FULL_VERSION}") + SET(GSL_VERSION_MINOR ${CMAKE_MATCH_1}) + + # split off the link dirs (for rpath) + # use regular expression to match wildcard equivalent "-L*<endchar>" + # with <endchar> is a space or a semicolon + STRING(REGEX MATCHALL "[-][L]([^ ;])+" + GSL_LINK_DIRECTORIES_WITH_PREFIX + "${GSL_CONFIG_LIBS}" ) + + # remove prefix -L because we need the pure directory for LINK_DIRECTORIES + + IF (GSL_LINK_DIRECTORIES_WITH_PREFIX) + STRING(REGEX REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} ) + ENDIF (GSL_LINK_DIRECTORIES_WITH_PREFIX) + SET(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL) + + # ADD_DEFINITIONS("-DHAVE_GSL") + # SET(GSL_DEFINITIONS "-DHAVE_GSL") + MARK_AS_ADVANCED( + GSL_CXX_FLAGS + GSL_INCLUDE_DIR + GSL_LIBRARIES + GSL_LINK_DIRECTORIES + GSL_DEFINITIONS) + #MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}") + message( STATUS "Found GSL version ${GSL_FULL_VERSION}, GSL_INCLUDE_DIR=${GSL_INCLUDE_DIR} GSL_LIBRARIES=${GSL_LIBRARIES}" ) + + ELSE(GSL_CONFIG) + MESSAGE("FindGSL.cmake: gsl-config not found. Please set it manually. GSL_CONFIG=${GSL_CONFIG}") + ENDIF(GSL_CONFIG) + + ENDIF(UNIX) +ENDIF(WIN32) + + +IF(GSL_LIBRARIES) + IF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS) + SET(GSL_FOUND 1) + ENDIF(GSL_INCLUDE_DIR OR GSL_CXX_FLAGS) +ENDIF(GSL_LIBRARIES) + + + + + +#set( GSL_FOUND OFF ) +#set( GSL_CBLAS_FOUND OFF ) + +#if(GSL_INCLUDE_DIR OR GSL_CONFIG_EXECUTABLE) +# set(GSL_FIND_QUIETLY 1) +#endif() + +## Windows, but not for Cygwin and MSys where gsl-config is available +#if( WIN32 AND NOT CYGWIN AND NOT MSYS ) +# # look for headers +# find_path( GSL_INCLUDE_DIR +# NAMES gsl/gsl_cdf.h gsl/gsl_randist.h +# PATHS +# $ENV{GSL_DIR}/include +# "C:/opt/local/include" +# ) +## message("XXXXX ${GSL_INCLUDE_DIR}") - if(MSVC) - set(gsl_library_name gsl) - set(gslcblas_library_name cblas) - else() - set(gsl_library_name libgsl-0) - set(gslcblas_library_name libgslcblas-0) - endif() - - +# if(MSVC) +# set(gsl_library_name gsl) +# set(gslcblas_library_name cblas) +# else() +# set(gsl_library_name libgsl-0) +# set(gslcblas_library_name libgslcblas-0) +# endif() + - if( GSL_INCLUDE_DIR ) - # look for gsl library - find_library( GSL_LIBRARY - NAMES ${gsl_library_name} - PATHS - #$ENV{GSL_DIR}/lib - "C:/opt/local/lib" - ) -# message("XXXXX ${GSL_LIBRARY}") - if( GSL_LIBRARY ) - set( GSL_INCLUDE_DIRS ${GSL_INCLUDE_DIR} ) - get_filename_component( GSL_LIBRARY_DIRS ${GSL_LIBRARY} PATH ) - set( GSL_FOUND ON ) - endif( GSL_LIBRARY ) +# if( GSL_INCLUDE_DIR ) +# # look for gsl library +# find_library( GSL_LIBRARY +# NAMES ${gsl_library_name} +# PATHS +# #$ENV{GSL_DIR}/lib +# "C:/opt/local/lib" +# ) +## message("XXXXX ${GSL_LIBRARY}") +# if( GSL_LIBRARY ) +# set( GSL_INCLUDE_DIRS ${GSL_INCLUDE_DIR} ) +# get_filename_component( GSL_LIBRARY_DIRS ${GSL_LIBRARY} PATH ) +# set( GSL_FOUND ON ) +# endif( GSL_LIBRARY ) - # look for gsl cblas library - find_library( GSL_CBLAS_LIBRARY - NAMES ${gslcblas_library_name} - PATHS $ENV{GSL_DIR}/lib - "C:/opt/local/lib" - ) - if( GSL_CBLAS_LIBRARY ) - set( GSL_CBLAS_FOUND ON ) - endif( GSL_CBLAS_LIBRARY ) +# # look for gsl cblas library +# find_library( GSL_CBLAS_LIBRARY +# NAMES ${gslcblas_library_name} +# PATHS $ENV{GSL_DIR}/lib +# "C:/opt/local/lib" +# ) +# if( GSL_CBLAS_LIBRARY ) +# set( GSL_CBLAS_FOUND ON ) +# endif( GSL_CBLAS_LIBRARY ) - set( GSL_LIBRARIES ${GSL_LIBRARY} ${GSL_CBLAS_LIBRARY} ) - set( GSL_CFLAGS "-DGSL_DLL") - endif( GSL_INCLUDE_DIR ) +# set( GSL_LIBRARIES ${GSL_LIBRARY} ${GSL_CBLAS_LIBRARY} ) +# set( GSL_CFLAGS "-DGSL_DLL") +# endif( GSL_INCLUDE_DIR ) - mark_as_advanced( - GSL_INCLUDE_DIR - GSL_LIBRARY - GSL_CBLAS_LIBRARY - ) -else( WIN32 AND NOT CYGWIN AND NOT MSYS ) - if( UNIX OR MSYS ) - find_program( GSL_CONFIG_EXECUTABLE gsl-config - /usr/bin/ - /usr/local/bin - $ENV{GSL_DIR}/bin - ${GSL_DIR}/bin - ) +# mark_as_advanced( +# GSL_INCLUDE_DIR +# GSL_LIBRARY +# GSL_CBLAS_LIBRARY +# ) +#else( WIN32 AND NOT CYGWIN AND NOT MSYS ) +# if( UNIX OR MSYS ) +# find_program( GSL_CONFIG_EXECUTABLE gsl-config +# /usr/bin/ +# /usr/local/bin +# $ENV{GSL_DIR}/bin +# ${GSL_DIR}/bin +# ) - if( GSL_CONFIG_EXECUTABLE ) - set( GSL_FOUND ON ) +# if( GSL_CONFIG_EXECUTABLE ) +# set( GSL_FOUND ON ) - # run the gsl-config program to get cxxflags - execute_process( - COMMAND sh "${GSL_CONFIG_EXECUTABLE}" --cflags - OUTPUT_VARIABLE GSL_CFLAGS - RESULT_VARIABLE RET - ERROR_QUIET - ) - if( RET EQUAL 0 ) - string( STRIP "${GSL_CFLAGS}" GSL_CFLAGS ) - separate_arguments( GSL_CFLAGS ) +# # run the gsl-config program to get cxxflags +# execute_process( +# COMMAND sh "${GSL_CONFIG_EXECUTABLE}" --cflags +# OUTPUT_VARIABLE GSL_CFLAGS +# RESULT_VARIABLE RET +# ERROR_QUIET +# ) +# if( RET EQUAL 0 ) +# string( STRIP "${GSL_CFLAGS}" GSL_CFLAGS ) +# separate_arguments( GSL_CFLAGS ) - # parse definitions from cflags; drop -D* from CFLAGS - string( REGEX MATCHALL "-D[^;]+" - GSL_DEFINITIONS "${GSL_CFLAGS}" ) - string( REGEX REPLACE "-D[^;]+;" "" - GSL_CFLAGS "${GSL_CFLAGS}" ) +# # parse definitions from cflags; drop -D* from CFLAGS +# string( REGEX MATCHALL "-D[^;]+" +# GSL_DEFINITIONS "${GSL_CFLAGS}" ) +# string( REGEX REPLACE "-D[^;]+;" "" +# GSL_CFLAGS "${GSL_CFLAGS}" ) - # parse include dirs from cflags; drop -I prefix - string( REGEX MATCHALL "-I[^;]+" - GSL_INCLUDE_DIRS "${GSL_CFLAGS}" ) - string( REPLACE "-I" "" - GSL_INCLUDE_DIRS "${GSL_INCLUDE_DIRS}") - string( REGEX REPLACE "-I[^;]+;" "" - GSL_CFLAGS "${GSL_CFLAGS}") - else( RET EQUAL 0 ) - set( GSL_FOUND FALSE ) - endif( RET EQUAL 0 ) +# # parse include dirs from cflags; drop -I prefix +# string( REGEX MATCHALL "-I[^;]+" +# GSL_INCLUDE_DIRS "${GSL_CFLAGS}" ) +# string( REPLACE "-I" "" +# GSL_INCLUDE_DIRS "${GSL_INCLUDE_DIRS}") +# string( REGEX REPLACE "-I[^;]+;" "" +# GSL_CFLAGS "${GSL_CFLAGS}") +# else( RET EQUAL 0 ) +# set( GSL_FOUND FALSE ) +# endif( RET EQUAL 0 ) - # run the gsl-config program to get the libs - execute_process( - COMMAND sh "${GSL_CONFIG_EXECUTABLE}" --libs - OUTPUT_VARIABLE GSL_LIBRARIES - RESULT_VARIABLE RET - ERROR_QUIET - ) - if( RET EQUAL 0 ) - string(STRIP "${GSL_LIBRARIES}" GSL_LIBRARIES ) - separate_arguments( GSL_LIBRARIES ) +# # run the gsl-config program to get the libs +# execute_process( +# COMMAND sh "${GSL_CONFIG_EXECUTABLE}" --libs +# OUTPUT_VARIABLE GSL_LIBRARIES +# RESULT_VARIABLE RET +# ERROR_QUIET +# ) +# if( RET EQUAL 0 ) +# string(STRIP "${GSL_LIBRARIES}" GSL_LIBRARIES ) +# separate_arguments( GSL_LIBRARIES ) - # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES) - string( REGEX MATCHALL "-L[^;]+" - GSL_LIBRARY_DIRS "${GSL_LIBRARIES}" ) - string( REPLACE "-L" "" - GSL_LIBRARY_DIRS "${GSL_LIBRARY_DIRS}" ) - else( RET EQUAL 0 ) - set( GSL_FOUND FALSE ) - endif( RET EQUAL 0 ) +# # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES) +# string( REGEX MATCHALL "-L[^;]+" +# GSL_LIBRARY_DIRS "${GSL_LIBRARIES}" ) +# string( REPLACE "-L" "" +# GSL_LIBRARY_DIRS "${GSL_LIBRARY_DIRS}" ) +# else( RET EQUAL 0 ) +# set( GSL_FOUND FALSE ) +# endif( RET EQUAL 0 ) - MARK_AS_ADVANCED( - GSL_CFLAGS - ) - if(NOT GSL_FIND_QUIETLY) - execute_process( - COMMAND sh "${GSL_CONFIG_EXECUTABLE}" --prefix - OUTPUT_VARIABLE GSL_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE) - message( STATUS "Using GSL from ${GSL_PREFIX}") - endif() - else( GSL_CONFIG_EXECUTABLE ) - message( STATUS "FindGSL: gsl-config not found.") - endif( GSL_CONFIG_EXECUTABLE ) - endif( UNIX OR MSYS ) -endif( WIN32 AND NOT CYGWIN AND NOT MSYS ) +# MARK_AS_ADVANCED( +# GSL_CFLAGS +# ) +## if(NOT GSL_FIND_QUIETLY) +## execute_process( +## COMMAND sh "${GSL_CONFIG_EXECUTABLE}" --prefix +## OUTPUT_VARIABLE GSL_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE) +## message( STATUS "Using GSL from ${GSL_PREFIX}") +## endif() +# else( GSL_CONFIG_EXECUTABLE ) +# message( STATUS "FindGSL: gsl-config not found.") +# endif( GSL_CONFIG_EXECUTABLE ) +# endif( UNIX OR MSYS ) +#endif( WIN32 AND NOT CYGWIN AND NOT MSYS ) -if( GSL_FOUND ) - if( NOT GSL_FIND_QUIETLY ) - message( STATUS "Found GSL: ${GSL_INCLUDE_DIRS} ${GSL_LIBRARIES}" ) - endif( NOT GSL_FIND_QUIETLY ) -else( GSL_FOUND ) - if( GSL_FIND_REQUIRED ) - message( FATAL_ERROR "FindGSL: Could not find GSL headers or library" ) - endif( GSL_FIND_REQUIRED ) -endif( GSL_FOUND ) - -mark_as_advanced( - GSL_CONFIG_EXECUTABLE - GSL_INCLUDE_DIR - GSL_LIBRARY - GSL_CBLAS_LIBRARY -) + +#if(GSL_FOUND) +# message( STATUS "Found GSL: GSL_INCLUDE_DIRS=${GSL_INCLUDE_DIRS} GSL_LIBRARIES=${GSL_LIBRARIES}" ) +#else(GSL_FOUND) +# if( GSL_FIND_REQUIRED ) +# message( FATAL_ERROR "FindGSL: Could not find GSL headers or library" ) +# endif( GSL_FIND_REQUIRED ) +#endif() diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 8256b0016c9748d709318e4aa6b448644fa090ff..e118d7cdb1c4c77601bccb07e4d6b934637054af 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -30,7 +30,7 @@ endif() if(BORNAGAIN_PYTHON OR BORNAGAIN_GUI) list(APPEND boost_libraries_required python) endif() -find_package(Boost 1.47.0 COMPONENTS ${boost_libraries_required} REQUIRED) +find_package(Boost 1.48.0 COMPONENTS ${boost_libraries_required} REQUIRED) message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}") message(STATUS "Boost_LIBRARY_DIRS: ${Boost_LIBRARY_DIRS}") message(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}") diff --git a/dev-tools/openmpi/batest/batest.cpp b/dev-tools/openmpi/batest/batest.cpp index e8278ecc421e24527a418599f5bc5c023aaeff10..50f8a3ebdd246c3bb760ec3ed718085ad6b04ba7 100644 --- a/dev-tools/openmpi/batest/batest.cpp +++ b/dev-tools/openmpi/batest/batest.cpp @@ -3,6 +3,8 @@ int main() { + MPI_Init(&argc, &argv); + std::cout << "Hello World" << std::endl; diff --git a/dev-tools/openmpi/supermuc.sh b/dev-tools/openmpi/supermuc.sh index 0a03e5123ea2310b4804f156fc760d10214316d6..c76733ddc41df334eca707b704641c21e17e73f7 100644 --- a/dev-tools/openmpi/supermuc.sh +++ b/dev-tools/openmpi/supermuc.sh @@ -2,10 +2,18 @@ module load git -module load gcc/4.5 -module load boost/1.47_gcc +#module load gcc/4.5 + +module load gcc/4.7 +module load cmake/2.8 +#module load boost/1.47_gcc +module load fftw/mpi/3.3 +module load gsl #export FFTW3=/lrz/sys/libraries/fftw/3.3.3/avx/ -export FFTW3=$FFTW_INC -export BOOST_ROOT=$BOOST_BASE +export FFTW3=$FFTW_BASE +export GSL_DIR=$GSL_BASE +#export BOOST_ROOT=$BOOST_BASE +export BOOST_ROOT=/home/hpc/pr87me/di29sok/software/boost_1_55_0.gcc47 +