diff --git a/CMakeLists.txt b/CMakeLists.txt index cf2f298164628566da23532b8339f2313ac57dab..50986d0a927c0d890d300be952a458f552bb0ed8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,23 +4,35 @@ cmake_minimum_required(VERSION 2.6) # Project name project( OGS-6 ) -# Set cmake module path +# Set cmake module path SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/scripts/cmake/cmake" "${CMAKE_SOURCE_DIR}/scripts/cmake") -# Set cmake module path -#SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeConfiguration") +INCLUDE(GetCompilerInfoString) + +# Finds +FIND_PACKAGE(OpenMP) +IF(OPENMP_FOUND) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +ENDIF() ### For GNU C/CXX IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC) + get_gcc_version(GCC_VERSION) IF( NOT CMAKE_BUILD_TYPE STREQUAL "Debug" ) MESSAGE(STATUS "Set GCC release flags") - SET(CMAKE_CXX_FLAGS "-O3 -march=native -mtune=native -msse4.2 -DNDEBUG") + IF(APPLE AND GCC_VERSION VERSION_LESS "4.3" AND NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode" ) + # -march=native does not work here when on normal gcc compiler + # see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33144 + SET(CMAKE_CXX_FLAGS "-O3 -mtune=native -msse4.2 -DNDEBUG") + ELSE() + SET(CMAKE_CXX_FLAGS "-O3 -march=native -mtune=native -msse4.2 -DNDEBUG") + ENDIF() ENDIF() # -g SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wall -Wextra -fno-nonansi-builtins") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") ADD_DEFINITIONS( -DGCC ) diff --git a/MathLib/LinAlg/Solvers/CGParallel.cpp b/MathLib/LinAlg/Solvers/CGParallel.cpp index c752961e30d9b2aaebc671dfe508f6cb0aebdbcb..bdfa4cfb32ca3967c03b9ca0b115ab1ea66b0b7c 100644 --- a/MathLib/LinAlg/Solvers/CGParallel.cpp +++ b/MathLib/LinAlg/Solvers/CGParallel.cpp @@ -7,7 +7,9 @@ #include <limits> +#ifdef _OPENMP #include <omp.h> +#endif #include "MathTools.h" #include "blas.h" diff --git a/MathLib/LinAlg/Sparse/CRSMatrixDiagPrecond.h b/MathLib/LinAlg/Sparse/CRSMatrixDiagPrecond.h index 51982a1f93e9d1b8525cd4bc5c30f8172be5156e..cce05d48ad6da4df17c730bcc5fc388472f5b4cc 100644 --- a/MathLib/LinAlg/Sparse/CRSMatrixDiagPrecond.h +++ b/MathLib/LinAlg/Sparse/CRSMatrixDiagPrecond.h @@ -1,7 +1,9 @@ #ifndef CRSMATRIXDIAGPRECOND_H #define CRSMATRIXDIAGPRECOND_H -//#include <omp.h> +#ifdef _OPENMP +#include <omp.h> +#endif #include "CRSMatrix.h" #include "sparse.h" diff --git a/MathLib/LinAlg/Sparse/amuxCRS.cpp b/MathLib/LinAlg/Sparse/amuxCRS.cpp index 99c77eafc6705704bb23b3a8035ea9a7d9fa540a..04a7528e87807bab1288429e78adacd1774ccf81 100644 --- a/MathLib/LinAlg/Sparse/amuxCRS.cpp +++ b/MathLib/LinAlg/Sparse/amuxCRS.cpp @@ -7,7 +7,9 @@ #include "amuxCRS.h" #include <cstddef> +#ifdef _OPENMP #include <omp.h> +#endif #ifdef HAVE_PTHREADS #include <pthread.h> #endif diff --git a/MathLib/MathTools.h b/MathLib/MathTools.h index 4a9d2b804f9272a0c531be13973088508f023d34..ea6109150ae3bd4970c703f83c3dc57be3b9eaff 100644 --- a/MathLib/MathTools.h +++ b/MathLib/MathTools.h @@ -12,7 +12,9 @@ #include <cmath> #include <limits> +#ifdef _OPENMP #include <omp.h> +#endif #include "Point.h" diff --git a/SimpleTests/MatrixTests/MatMult.cpp b/SimpleTests/MatrixTests/MatMult.cpp index 62c76e74d84b0888a961b29b004d6091e23b3270..6266c0365f2048345493b7d7e466fb38bbdb8121 100644 --- a/SimpleTests/MatrixTests/MatMult.cpp +++ b/SimpleTests/MatrixTests/MatMult.cpp @@ -2,7 +2,6 @@ #include <iostream> #include <cmath> #include <limits> -#include <omp.h> #include <cstdlib> #include "sparse.h" #include "LinAlg/Sparse/CRSMatrix.h" @@ -11,6 +10,10 @@ #include "RunTimeTimer.h" #include "CPUTimeTimer.h" +#ifdef _OPENMP +#include <omp.h> +#endif + int main(int argc, char *argv[]) { if (argc < 4) { diff --git a/SimpleTests/SolverTests/BiCGStabDiagPrecond.cpp b/SimpleTests/SolverTests/BiCGStabDiagPrecond.cpp index 5bdd39217dd510daf5bf18265d41c98c183d0cc1..43cf9cc247f70d2e023cde62af3239f7c495f869 100644 --- a/SimpleTests/SolverTests/BiCGStabDiagPrecond.cpp +++ b/SimpleTests/SolverTests/BiCGStabDiagPrecond.cpp @@ -2,7 +2,6 @@ #include <iostream> #include <cmath> #include <cstdlib> -#include <omp.h> #include "LinAlg/Solvers/BiCGStab.h" #include "LinAlg/Sparse/CRSMatrixDiagPrecond.h" #include "sparse.h" @@ -10,6 +9,10 @@ #include "RunTimeTimer.h" #include "CPUTimeTimer.h" +#ifdef _OPENMP +#include <omp.h> +#endif + int main(int argc, char *argv[]) { if (argc != 4) { diff --git a/SimpleTests/SolverTests/ConjugateGradientDiagonalPreconditioned.cpp b/SimpleTests/SolverTests/ConjugateGradientDiagonalPreconditioned.cpp index d533628c4194028a1f4227372053dd540a065740..30700aa9524c204d1043504c44ab8ca85d99ce1c 100644 --- a/SimpleTests/SolverTests/ConjugateGradientDiagonalPreconditioned.cpp +++ b/SimpleTests/SolverTests/ConjugateGradientDiagonalPreconditioned.cpp @@ -2,7 +2,6 @@ #include <iostream> #include <cmath> #include <cstdlib> -#include <omp.h> #include "LinAlg/Solvers/CG.h" #include "LinAlg/Sparse/CRSMatrixDiagPrecond.h" #include "sparse.h" @@ -10,6 +9,10 @@ #include "RunTimeTimer.h" #include "CPUTimeTimer.h" +#ifdef _OPENMP +#include <omp.h> +#endif + int main(int argc, char *argv[]) { if (argc != 4) { diff --git a/SimpleTests/SolverTests/ConjugateGradientUnpreconditioned.cpp b/SimpleTests/SolverTests/ConjugateGradientUnpreconditioned.cpp index 1f0c4cb92b1fc5ea10b796b4d998ca64e60ac861..96ead4200cfefbc8748f32f50f0a11acc05b01fa 100644 --- a/SimpleTests/SolverTests/ConjugateGradientUnpreconditioned.cpp +++ b/SimpleTests/SolverTests/ConjugateGradientUnpreconditioned.cpp @@ -1,12 +1,15 @@ #include <fstream> #include <iostream> -#include <omp.h> #include "LinAlg/Solvers/CG.h" #include "LinAlg/Sparse/CRSMatrix.h" #include "sparse.h" #include "vector_io.h" //#include "timeMeasurement.h" +#ifdef _OPENMP +#include <omp.h> +#endif + int main(int argc, char *argv[]) { (void) argc;