Skip to content

Commit

Permalink
Correct modern-cmake method for incorporating OpenMP into code
Browse files Browse the repository at this point in the history
  • Loading branch information
Seb James committed Sep 22, 2020
1 parent 7899efa commit fbc8a92
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
6 changes: 3 additions & 3 deletions examples/neuralnet/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,13 @@ set(FLAGS_COMMON "${EXTRA_HOST_DEFINITION} -Wall -Wfatal-errors -g")

# Add different optimizing flags depending on OS/Compiler
if (APPLE)
set(CMAKE_CXX_FLAGS "${FLAGS_COMMON} -Xpreprocessor")
set(CMAKE_CXX_FLAGS "${FLAGS_COMMON}")
else()
if (CMAKE_CXX_COMPILER_ID MATCHES Intel)
set(CMAKE_CXX_FLAGS "${FLAGS_COMMON} -march=native -O3 -D__ICC__ -qopenmp")
set(CMAKE_CXX_FLAGS "${FLAGS_COMMON} -march=native -O3 -D__ICC__")
else () # GCC or Clang
# This assumes a gcc compiler (or a gcc mimic like Clang)
set(CMAKE_CXX_FLAGS "${FLAGS_COMMON} -march=native -O3 -fopenmp")
set(CMAKE_CXX_FLAGS "${FLAGS_COMMON} -march=native -O3")
endif()
endif()

Expand Down
11 changes: 6 additions & 5 deletions examples/recurrentnet/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ set(CMAKE_CXX_FLAGS "${EXTRA_HOST_DEFINITION} -Wall -Wfatal-errors -Wno-sign-com

# OS dependent cflags
if (APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xpreprocessor")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
# This assumes a gcc compiler (or a gcc mimic like Clang)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result -Wno-unknown-pragmas -march=native -O3")
Expand All @@ -47,8 +47,8 @@ endif()

# Correct way to determine if OpenMP is available
find_package(OpenMP)
if(OpenMP_CXX_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
if(OpenMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()

# Additional GL compiler flags.
Expand All @@ -61,15 +61,16 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGL3_PROTOTYPES -DGL_GLEXT_PROTOTYPES")
# Find the libraries which will be needed
find_package(OpenCV REQUIRED)
find_package(OpenGL REQUIRED)
find_package(HDF5 REQUIRED)
find_package(glfw3 REQUIRED)
find_package(jsoncpp REQUIRED)
find_package(morphologica CONFIG REQUIRED)

add_executable(recurrentnet recurrentnet.cpp)
target_compile_definitions(recurrentnet PUBLIC FLT=float COMPILE_PLOTTING)
target_link_libraries(recurrentnet morphologica)
if(OpenMP_CXX_FOUND)
target_link_libraries(recurrentnet PUBLIC OpenMP::OpenMP_CXX)
if(OpenMP_FOUND)
target_link_libraries(recurrentnet OpenMP::OpenMP_CXX)
endif()

# For debugging of variables:
Expand Down
3 changes: 2 additions & 1 deletion examples/recurrentnet/recurrentnet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ int main (int argc, char **argv){
if(argc<7){ std::cout<<"Supply nodeIndex, contextA, contextB as additional arguments"<<std::endl; return 0; }
N.setColourMap(morph::ColourMapType::Jet);
// params: nodeIndex, contextA, contextB
N.plotDomainContextDiff(std::stoi(argv[4]), std::stoi(argv[5]), std::stoi(argv[6]));
int dummy = 0; // NB: Seb hack as this function call does not match fn declaration in library. Sturat to fix.
N.plotDomainContextDiff(std::stoi(argv[4]), std::stoi(argv[5]), std::stoi(argv[6]), dummy, dummy);
} break;
case(-5):{
if(argc<6){ std::cout<<"Supply contextA, contextB as additional arguments"<<std::endl; return 0; }
Expand Down

0 comments on commit fbc8a92

Please sign in to comment.