From 94155cc8abd6c64cf04d4c99fce97c489ebb8d31 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Thu, 5 Jan 2012 16:21:46 +0100 Subject: [PATCH] Removed -march switch on Mac gcc 4.2.1 and correctly set OpenMP settings. Wrapped OpenMP includes in #ifdefs. --- CMakeLists.txt | 22 ++++++++++++++----- MathLib/LinAlg/Solvers/CGParallel.cpp | 2 ++ MathLib/LinAlg/Sparse/CRSMatrixDiagPrecond.h | 4 +++- MathLib/LinAlg/Sparse/amuxCRS.cpp | 2 ++ MathLib/MathTools.h | 2 ++ SimpleTests/MatrixTests/MatMult.cpp | 5 ++++- .../SolverTests/BiCGStabDiagPrecond.cpp | 5 ++++- ...onjugateGradientDiagonalPreconditioned.cpp | 5 ++++- .../ConjugateGradientUnpreconditioned.cpp | 5 ++++- 9 files changed, 42 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cf2f2981646..50986d0a927 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 c752961e30d..bdfa4cfb32c 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 51982a1f93e..cce05d48ad6 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 99c77eafc67..04a7528e878 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 4a9d2b804f9..ea6109150ae 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 62c76e74d84..6266c0365f2 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 5bdd39217dd..43cf9cc247f 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 d533628c419..30700aa9524 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 1f0c4cb92b1..96ead4200cf 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; -- GitLab