Skip to content
Snippets Groups Projects
Commit 2af86160 authored by Oleg Kalashev's avatar Oleg Kalashev
Browse files

minor fixes to recover support of multithread execution

parent 27a68786
No related branches found
No related tags found
No related merge requests found
cmake_minimum_required (VERSION 2.6) cmake_minimum_required (VERSION 2.6)
project (CRbeam) project (CRbeam)
# uncomment the line below for verbose output
#set(CMAKE_VERBOSE_MAKEFILE ON)
add_definitions(-DUSE_GSL) add_definitions(-DUSE_GSL)
include_directories ("../../lib" "../../OS/include") include_directories ("../../lib" "../../OS/include")
#include_directories(../../external/include ../../external/OS/include) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp -pg") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2 -fopenmp") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -pg")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
set(CMAKE_PREFIX_PATH "external") set(CMAKE_PREFIX_PATH "external")
# -rdynamic flux is only supported on systems with ELF executable format # -rdynamic flux is only supported on systems with ELF executable format
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -rdynamic") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -rdynamic") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -rdynamic")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -rdynamic")
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
FIND_LIBRARY(C_LIBRARY c) FIND_LIBRARY(C_LIBRARY c)
...@@ -30,7 +30,7 @@ CmdLine.h ...@@ -30,7 +30,7 @@ CmdLine.h
CRbeam.cpp CRbeam.cpp
CRbeam.h CRbeam.h
) )
add_link_options(-fopenmp)
add_executable(CRbeam ${SOURCE_FILES}) add_executable(CRbeam ${SOURCE_FILES})
target_link_libraries(CRbeam mcray ${C_LIBRARY} ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY}) target_link_libraries(CRbeam mcray ${C_LIBRARY} ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
......
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
#include "SteckerEBL.h" #include "SteckerEBL.h"
#include "CmdLine.h" #include "CmdLine.h"
#include "Stecker16Background.h" #include "Stecker16Background.h"
#include <omp.h>
#include <stdlib.h> #include <stdlib.h>
#include "MathUtils.h" #include "MathUtils.h"
...@@ -68,6 +67,7 @@ using namespace cors::cmdline; ...@@ -68,6 +67,7 @@ using namespace cors::cmdline;
* the function should be provided by end user * the function should be provided by end user
*/ */
int user_main(int argc, char** argv) { int user_main(int argc, char** argv) {
std::cout << "Number of available threads: " << omp_thread_count() << std::endl;
CRbeam prog(argc, argv); CRbeam prog(argc, argv);
return prog.run(); return prog.run();
} }
......
cmake_minimum_required (VERSION 2.6) cmake_minimum_required (VERSION 2.6)
project (mcray) project (mcray)
# uncomment the line below for verbose output
#set(CMAKE_VERBOSE_MAKEFILE ON)
enable_language (Fortran) enable_language (Fortran)
# FFLAGS depend on the compiler # FFLAGS depend on the compiler
...@@ -7,21 +9,24 @@ get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME) ...@@ -7,21 +9,24 @@ get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
if (Fortran_COMPILER_NAME MATCHES "gfortran.*") if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
# gfortran # gfortran
set (CMAKE_Fortran_FLAGS "-ffixed-line-length-200 -fno-f2c") set (CMAKE_Fortran_FLAGS "-ffixed-line-length-200 -fno-f2c -fopenmp")
set (CMAKE_Fortran_FLAGS_RELEASE "-O2") set (CMAKE_Fortran_FLAGS_RELEASE "-O2")
set (CMAKE_Fortran_FLAGS_DEBUG "-O0 -g") set (CMAKE_Fortran_FLAGS_DEBUG "-O0 -g")
elseif (Fortran_COMPILER_NAME MATCHES "ifort.*") elseif (Fortran_COMPILER_NAME MATCHES "ifort.*")
# ifort (untested) # ifort (untested)
set (CMAKE_Fortran_FLAGS "-f77rtl -fopenmp")
set (CMAKE_Fortran_FLAGS_RELEASE "-f77rtl -O2") set (CMAKE_Fortran_FLAGS_RELEASE "-f77rtl -O2")
set (CMAKE_Fortran_FLAGS_DEBUG "-f77rtl -O0 -g") set (CMAKE_Fortran_FLAGS_DEBUG "-f77rtl -O0 -g")
elseif (Fortran_COMPILER_NAME MATCHES "g77") elseif (Fortran_COMPILER_NAME MATCHES "g77")
# g77 # g77
set (CMAKE_Fortran_FLAGS_RELEASE "-fno-f2c -O2") set (CMAKE_Fortran_FLAGS "-fopenmp -fno-f2c")
set (CMAKE_Fortran_FLAGS_DEBUG "-fno-f2c -O0 -g") set (CMAKE_Fortran_FLAGS_RELEASE "-O2")
set (CMAKE_Fortran_FLAGS_DEBUG "-O0 -g")
else (Fortran_COMPILER_NAME MATCHES "gfortran.*") else (Fortran_COMPILER_NAME MATCHES "gfortran.*")
message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER}) message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
message ("Fortran compiler: " ${Fortran_COMPILER_NAME}) message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
message ("No optimized Fortran compiler flags are known, we just try -O2...") message ("No optimized Fortran compiler flags are known, we just try -O2 -fopenmp...")
set (CMAKE_Fortran_FLAGS "-fopenmp")
set (CMAKE_Fortran_FLAGS_RELEASE "-O2") set (CMAKE_Fortran_FLAGS_RELEASE "-O2")
set (CMAKE_Fortran_FLAGS_DEBUG "-O0 -g") set (CMAKE_Fortran_FLAGS_DEBUG "-O0 -g")
endif (Fortran_COMPILER_NAME MATCHES "gfortran.*") endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
...@@ -30,17 +35,18 @@ endif (Fortran_COMPILER_NAME MATCHES "gfortran.*") ...@@ -30,17 +35,18 @@ endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
add_definitions(-DUSE_GSL) add_definitions(-DUSE_GSL)
include_directories(../OS/include ../external) include_directories(../OS/include ../external)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp -pg") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2 -fopenmp") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -pg")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
set(CMAKE_PREFIX_PATH "../external") set(CMAKE_PREFIX_PATH "../external")
# -rdynamic flux is only supported on systems with ELF executable format # -rdynamic flux is only supported on systems with ELF executable format
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -rdynamic") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -rdynamic") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -rdynamic")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -rdynamic")
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
FIND_LIBRARY(C_LIBRARY c) FIND_LIBRARY(C_LIBRARY c)
...@@ -122,10 +128,11 @@ Stecker16Background.h ...@@ -122,10 +128,11 @@ Stecker16Background.h
Logger.cpp Logger.cpp
Logger.h) Logger.h)
add_link_options(-fopenmp)
add_library(mcray ${SOURCE_FILES}) add_library(mcray ${SOURCE_FILES})
add_executable(mcray_test ExampleUserMain.cpp) add_executable(mcray_test ExampleUserMain.cpp)
add_executable(z2t z2t.cpp) add_executable(z2t z2t.cpp)
target_link_libraries(mcray gfortran gomp ${OMP_LIBRARY} ${C_LIBRARY} ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
target_link_libraries(mcray gfortran ${C_LIBRARY} ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
target_link_libraries(mcray_test mcray) target_link_libraries(mcray_test mcray)
target_link_libraries(z2t mcray) target_link_libraries(z2t mcray)
...@@ -27,6 +27,15 @@ ...@@ -27,6 +27,15 @@
#include "Utils.h" #include "Utils.h"
#include <omp.h>
namespace Utils {
int omp_thread_count() {
int n = 0;
#pragma omp parallel reduction(+:n)
n += 1;
return n;
}
} // end of namespace Utils
...@@ -228,6 +228,8 @@ private: ...@@ -228,6 +228,8 @@ private:
T* iPointee; T* iPointee;
}; };
int omp_thread_count();
}//end of namespace Utils }//end of namespace Utils
#endif /* UTILS_H */ #endif /* UTILS_H */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment