From 17893600b513ca7d587104237fd11417d86cf281 Mon Sep 17 00:00:00 2001
From: Olivier Coulaud <coulaud@mygale-inria.plafrim.cluster>
Date: Thu, 8 Jan 2015 11:32:24 +0100
Subject: [PATCH] set OpenMP 4 not available for Intel compiler + some
 improvments

---
 CMakeLists.txt                        | 56 +++++++++++++++------------
 Src/Utils/FGlobal.hpp                 |  2 +
 Utils/noDist/testSCalibilityOpenMP.sh | 29 +++++++-------
 3 files changed, 49 insertions(+), 38 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3c5a9457c..8cb659d0f 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -89,7 +89,7 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    SET(ScaLFMM_CXX_FLAGS  "${ScaLFMM_CXX_FLAGS} -m64")
 endif()
 ##############################################################################
-#                                                       Compile options                                                                        #
+#                      Compile options                                       #
 ##############################################################################
 #  -xHost -mfpmath=sse
 # -Wall Wnosign-conversion 
@@ -141,26 +141,31 @@ if( ScalFMM_BUILD_DEBUG )
     endif()
   ENDIF(APPLE)
 #  ADD_DEFINITIONS(${SCALFMM_FLAGS_OPTI_DEBUG})
-  SET(ScaLFMM_CXX_FLAGS  "${ScaLFMM_CXX_FLAGS} ${SCALFMM_FLAGS_OPTI_DEBUG}")
+SET(ScaLFMM_CXX_FLAGS  "${ScaLFMM_CXX_FLAGS} ${SCALFMM_FLAGS_OPTI_DEBUG}")
+  SET(CMAKE_CXX_FLAGS_TYPE  "${CMAKE_CXX_FLAGS_DEBUG}") 
+
 else()
 ##############################################################################
-#                                                            Release flags                                                                        #
+#                          Release flags                                     #
 ##############################################################################
   SET(CMAKE_BUILD_TYPE Release)
   # force -O3 in release
-  SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
-  STRING(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )
+#  SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
+  STRING(REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )
+  SET(CMAKE_CXX_FLAGS_TYPE  "${CMAKE_CXX_FLAGS_RELEASE}") 
   # if compiler is intel add -ip
-  IF(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-    SET(ScaLFMM_CXX_FLAGS  "${ScaLFMM_CXX_FLAGS} -ip -no-prec-div -no-prec-sqrt")
-  ENDIF()
+ IF(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+  SET(ScaLFMM_CXX_FLAGS  "${ScaLFMM_CXX_FLAGS} -ip")
+#    SET(ScaLFMM_CXX_FLAGS  "${ScaLFMM_CXX_FLAGS} -ip -no-prec-div -no-prec-sqrt")
+ ENDIF()
   # Compile optimization
   IF( APPLE ) 
     SET(SCALFMM_FLAGS_OPTI_RELEASE "-m64  -funroll-loops" CACHE STRING "Set your optimization flags for release mode.")
   ELSE(APPLE)
     # Not apple system - Check the compiler flags 
     if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-      SET(SCALFMM_FLAGS_OPTI_RELEASE "-fp-model precise -fp-model source -fimf-precision=low  -funroll-loops -ftree-vectorize" CACHE STRING "Set your optimization flags for release mode.")
+#      SET(SCALFMM_FLAGS_OPTI_RELEASE "-fp-model precise -fp-model source -fimf-precision=low  -funroll-loops -ftree-vectorize" CACHE STRING "Set your optimization flags for release mode.")
+      SET(SCALFMM_FLAGS_OPTI_RELEASE " " CACHE STRING "Set your optimization flags for release mode.")
     else()
       SET(SCALFMM_FLAGS_OPTI_RELEASE "-ffast-math -funroll-loops -ftree-vectorize" CACHE STRING "Set your optimization flags for release mode.")
     endif()
@@ -170,7 +175,7 @@ else()
 endif()
 #
 ##############################################################################
-#                                           Attach source code to exec                                                                   #
+#                Attach source code to exec                                  #
 ##############################################################################
 MESSAGE(STATUS "ScalFMM_ATTACHE_SOURCE       = ${ScalFMM_ATTACHE_SOURCE}" )
 if( ScalFMM_ATTACHE_SOURCE )
@@ -212,24 +217,27 @@ endif(ScalFMM_USE_BLAS)
 #
 if( ScalFMM_USE_FFT )
   OPTION( ScalFMM_USE_MKL_AS_FFTW "Set to ON to use MKL FFTW" OFF )
+  MESSAGE(STATUS "SCALFMM USE FFT Configure:")
   if( ScalFMM_USE_MKL_AS_FFTW )
-      if( ScalFMM_USE_MKL_AS_BLAS )
-               UNSET(FFT_LIBRARIES CACHE)
-       #        UNSET(FFT_INCLUDES CACHE)
+ 	MESSAGE(STATUS "         SCALFMM USE MKL ")
+     if( ScalFMM_USE_MKL_AS_BLAS )
+       UNSET(FFT_LIBRARIES CACHE)
+        	MESSAGE(STATUS "         SCALFMM USE MKL already defined")
                 SET(FFT_INCLUDES "$ENV{MKLROOT}/include/fftw" CACHE STRING "Set your MKL flags")
-        ELSE()
+        ELSE(ScalFMM_USE_MKL_AS_BLAS)
              SET(FFT_LIBRARIES "-L$ENV{MKLROOT}/lib; -lmkl_intel_lp64; -lmkl_sequential; -lmkl_core; -lpthread; -lm" CACHE STRING "Set your MKL flags")
              SET(FFT_INCLUDES "$ENV{MKLROOT}/include/fftw" CACHE STRING "Set your MKL flags")
             SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${FFT_LIBRARIES}")
-        ENDIF()        
-  else()
-    SET(FFT_LIBRARIES "-lfftw3" CACHE STRING "Use LIBFFTW")
-    SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${FFT_LIBRARIES}")
-  endif()
-  
+        ENDIF(ScalFMM_USE_MKL_AS_BLAS)        
+      else(ScalFMM_USE_MKL_AS_FFTW)
+	MESSAGE(STATUS "         SCALFMM USE FFTW ")
+	SET(FFT_LIBRARIES "-lfftw3" CACHE STRING "Use LIBFFTW")
+	SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${FFT_LIBRARIES}")
+  endif(ScalFMM_USE_MKL_AS_FFTW)
+ 
   SET(SCALFMM_INCLUDES "${SCALFMM_INCLUDES}; ${FFT_INCLUDES}")
-  MESSAGE(STATUS "SCALFMM_LIBRARIES          = ${SCALFMM_LIBRARIES}")
-  MESSAGE(STATUS "SCALFMM_INCLUDES          = ${SCALFMM_INCLUDES}")
+  MESSAGE(STATUS "         SCALFMM_LIBRARIES          = ${SCALFMM_LIBRARIES}")
+  MESSAGE(STATUS "         SCALFMM_INCLUDES          = ${SCALFMM_INCLUDES}")
 endif(ScalFMM_USE_FFT)
 
 # Compile option
@@ -328,7 +336,7 @@ IF( ScalFMM_USE_AVX AND ScalFMM_USE_SSE)
     MESSAGE(FATAL_ERROR "Check ScalFMM_USE_SSE or ScalFMM_USE_AVX BUT NOT BOTH. ")
 ENDIF(ScalFMM_USE_AVX AND ScalFMM_USE_SSE)
 ##################################################################
-#                                           Use  native MIC compilation                                          #
+#                     Use  native MIC compilation                                          #
 ##################################################################
 if( ScalFMM_USE_MIC_NATIVE ) 
     include(CheckCCompilerFlag)
@@ -357,7 +365,7 @@ ENDIF()
 #
 # Generate  ScalFmmConfig.h 
 #
-SET(ScalFMM_COMPILE_FLAGS "${ScaLFMM_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
+SET(ScalFMM_COMPILE_FLAGS "${ScaLFMM_CXX_FLAGS} ${CMAKE_CXX_FLAGS_TYPE} ${CMAKE_CXX_FLAGS}")
 SET(ScalFMM_COMPILE_LIBS   "${SCALFMM_LIBRARIES} ")
 CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/Src/ScalFmmConfig.h.cmake 
         ${CMAKE_BINARY_DIR}/Src/ScalFmmConfig.h  )
diff --git a/Src/Utils/FGlobal.hpp b/Src/Utils/FGlobal.hpp
index 34d6fe71c..2891480e1 100755
--- a/Src/Utils/FGlobal.hpp
+++ b/Src/Utils/FGlobal.hpp
@@ -101,8 +101,10 @@ typedef long long MortonIndex;
 ///////////////////////////////////////////////////////
 
 #if _OPENMP >= 201307
+#ifndef __INTEL_COMPILER
 #define ScalFMM_USE_OMP4
 #endif
+#endif
 
 #endif //FGLOBAL_HPP
 
diff --git a/Utils/noDist/testSCalibilityOpenMP.sh b/Utils/noDist/testSCalibilityOpenMP.sh
index 300a5ce87..a9fcf2bc9 100755
--- a/Utils/noDist/testSCalibilityOpenMP.sh
+++ b/Utils/noDist/testSCalibilityOpenMP.sh
@@ -1,20 +1,20 @@
-#!/bin/bash
-project_dir=$HOME/Dev/src/ScalFMM/scalfmmT
+#!/bin/bash -v
+project_dir=$HOME/Dev/src/ScalFMM/scalfmmN/BuildOMP/run1
 #
 # PlaFRIM environment
 #
 #
 #
-MaxCore=20
+#MaxCore=20
 #  `cat /proc/cpuinfo |grep processor |wc -l`
 # tester si linux alors
-#MaxCore=`cat /proc/cpuinfo |grep processor |wc -l`
+MaxCore=`getconf _NPROCESSORS_ONLN`
 HOST=`hostname`
 echo $HOST
-EXEC="Examples/Release/ChebyshevInterpolationFMM"
+EXEC="../Examples/Release/ChebyshevInterpolationFMM"
 REP="Test"
-FILEPERF="RES_Chebyshev-openmpi-10M"
-FILE="../Data/unitCubeXYZQ20k.bfma"
+FILEPERF="output-scab-Cheb-10M"
+FILE="../../Data/unitCubeXYZQ20k.bfma"
 FILE="casTest-20000.fma"
 FILE="/projets/scalfmm/benchPlafrim/unifCube_2_10000000.bfma"
 echo "=================================================================="
@@ -23,17 +23,18 @@ echo "   pgm:   ${EXEC}"
 echo "   file:  ${FILE}"
 echo "   args  -depth 7 -subdepth 4 "
 echo "   "
-echo "   Host:      $HOST"
-echo "   MaxCore:   $MaxCore"
+echo "   Host:    $HOST"
+echo "   MaxCore: $MaxCore"
+echo "   File:    $FILE"
+echo "   "
+echo "   Projectdir:    $project_dir"
 echo "=================================================================="
-
 #
-cd $project_dir/BuildOMP/
-
+mkdir -f $project_dir
+cd $project_dir
 #
-REP
 pwd
-#export OMP_PROC_BIND=true
+export OMP_PROC_BIND=true
 export KMP_AFFINITY=verbose,scatter
 echo $FILEPERF-${HOST}.out 
 echo  "# Core TIME  ENERGY Pot_0 Pot_5000000 Pot_9999999"> $FILEPERF-${HOST}.out 
-- 
GitLab