Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 17893600 authored by Olivier Coulaud's avatar Olivier Coulaud
Browse files

set OpenMP 4 not available for Intel compiler + some improvments

parent c90f6426
No related branches found
No related tags found
No related merge requests found
...@@ -89,7 +89,7 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8) ...@@ -89,7 +89,7 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
SET(ScaLFMM_CXX_FLAGS "${ScaLFMM_CXX_FLAGS} -m64") SET(ScaLFMM_CXX_FLAGS "${ScaLFMM_CXX_FLAGS} -m64")
endif() endif()
############################################################################## ##############################################################################
# Compile options # # Compile options #
############################################################################## ##############################################################################
# -xHost -mfpmath=sse # -xHost -mfpmath=sse
# -Wall Wnosign-conversion # -Wall Wnosign-conversion
...@@ -141,26 +141,31 @@ if( ScalFMM_BUILD_DEBUG ) ...@@ -141,26 +141,31 @@ if( ScalFMM_BUILD_DEBUG )
endif() endif()
ENDIF(APPLE) ENDIF(APPLE)
# ADD_DEFINITIONS(${SCALFMM_FLAGS_OPTI_DEBUG}) # 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() else()
############################################################################## ##############################################################################
# Release flags # # Release flags #
############################################################################## ##############################################################################
SET(CMAKE_BUILD_TYPE Release) SET(CMAKE_BUILD_TYPE Release)
# force -O3 in release # force -O3 in release
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") # SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
STRING(REPLACE "-O2" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} ) 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 compiler is intel add -ip
IF(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") IF(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
SET(ScaLFMM_CXX_FLAGS "${ScaLFMM_CXX_FLAGS} -ip -no-prec-div -no-prec-sqrt") SET(ScaLFMM_CXX_FLAGS "${ScaLFMM_CXX_FLAGS} -ip")
ENDIF() # SET(ScaLFMM_CXX_FLAGS "${ScaLFMM_CXX_FLAGS} -ip -no-prec-div -no-prec-sqrt")
ENDIF()
# Compile optimization # Compile optimization
IF( APPLE ) IF( APPLE )
SET(SCALFMM_FLAGS_OPTI_RELEASE "-m64 -funroll-loops" CACHE STRING "Set your optimization flags for release mode.") SET(SCALFMM_FLAGS_OPTI_RELEASE "-m64 -funroll-loops" CACHE STRING "Set your optimization flags for release mode.")
ELSE(APPLE) ELSE(APPLE)
# Not apple system - Check the compiler flags # Not apple system - Check the compiler flags
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") 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() else()
SET(SCALFMM_FLAGS_OPTI_RELEASE "-ffast-math -funroll-loops -ftree-vectorize" CACHE STRING "Set your optimization flags for release mode.") SET(SCALFMM_FLAGS_OPTI_RELEASE "-ffast-math -funroll-loops -ftree-vectorize" CACHE STRING "Set your optimization flags for release mode.")
endif() endif()
...@@ -170,7 +175,7 @@ else() ...@@ -170,7 +175,7 @@ else()
endif() endif()
# #
############################################################################## ##############################################################################
# Attach source code to exec # # Attach source code to exec #
############################################################################## ##############################################################################
MESSAGE(STATUS "ScalFMM_ATTACHE_SOURCE = ${ScalFMM_ATTACHE_SOURCE}" ) MESSAGE(STATUS "ScalFMM_ATTACHE_SOURCE = ${ScalFMM_ATTACHE_SOURCE}" )
if( ScalFMM_ATTACHE_SOURCE ) if( ScalFMM_ATTACHE_SOURCE )
...@@ -212,24 +217,27 @@ endif(ScalFMM_USE_BLAS) ...@@ -212,24 +217,27 @@ endif(ScalFMM_USE_BLAS)
# #
if( ScalFMM_USE_FFT ) if( ScalFMM_USE_FFT )
OPTION( ScalFMM_USE_MKL_AS_FFTW "Set to ON to use MKL FFTW" OFF ) 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_FFTW )
if( ScalFMM_USE_MKL_AS_BLAS ) MESSAGE(STATUS " SCALFMM USE MKL ")
UNSET(FFT_LIBRARIES CACHE) if( ScalFMM_USE_MKL_AS_BLAS )
# UNSET(FFT_INCLUDES CACHE) UNSET(FFT_LIBRARIES CACHE)
MESSAGE(STATUS " SCALFMM USE MKL already defined")
SET(FFT_INCLUDES "$ENV{MKLROOT}/include/fftw" CACHE STRING "Set your MKL flags") 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_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(FFT_INCLUDES "$ENV{MKLROOT}/include/fftw" CACHE STRING "Set your MKL flags")
SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${FFT_LIBRARIES}") SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${FFT_LIBRARIES}")
ENDIF() ENDIF(ScalFMM_USE_MKL_AS_BLAS)
else() else(ScalFMM_USE_MKL_AS_FFTW)
SET(FFT_LIBRARIES "-lfftw3" CACHE STRING "Use LIBFFTW") MESSAGE(STATUS " SCALFMM USE FFTW ")
SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${FFT_LIBRARIES}") SET(FFT_LIBRARIES "-lfftw3" CACHE STRING "Use LIBFFTW")
endif() SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}; ${FFT_LIBRARIES}")
endif(ScalFMM_USE_MKL_AS_FFTW)
SET(SCALFMM_INCLUDES "${SCALFMM_INCLUDES}; ${FFT_INCLUDES}") SET(SCALFMM_INCLUDES "${SCALFMM_INCLUDES}; ${FFT_INCLUDES}")
MESSAGE(STATUS "SCALFMM_LIBRARIES = ${SCALFMM_LIBRARIES}") MESSAGE(STATUS " SCALFMM_LIBRARIES = ${SCALFMM_LIBRARIES}")
MESSAGE(STATUS "SCALFMM_INCLUDES = ${SCALFMM_INCLUDES}") MESSAGE(STATUS " SCALFMM_INCLUDES = ${SCALFMM_INCLUDES}")
endif(ScalFMM_USE_FFT) endif(ScalFMM_USE_FFT)
# Compile option # Compile option
...@@ -328,7 +336,7 @@ IF( ScalFMM_USE_AVX AND ScalFMM_USE_SSE) ...@@ -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. ") MESSAGE(FATAL_ERROR "Check ScalFMM_USE_SSE or ScalFMM_USE_AVX BUT NOT BOTH. ")
ENDIF(ScalFMM_USE_AVX AND ScalFMM_USE_SSE) ENDIF(ScalFMM_USE_AVX AND ScalFMM_USE_SSE)
################################################################## ##################################################################
# Use native MIC compilation # # Use native MIC compilation #
################################################################## ##################################################################
if( ScalFMM_USE_MIC_NATIVE ) if( ScalFMM_USE_MIC_NATIVE )
include(CheckCCompilerFlag) include(CheckCCompilerFlag)
...@@ -357,7 +365,7 @@ ENDIF() ...@@ -357,7 +365,7 @@ ENDIF()
# #
# Generate ScalFmmConfig.h # 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} ") SET(ScalFMM_COMPILE_LIBS "${SCALFMM_LIBRARIES} ")
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/Src/ScalFmmConfig.h.cmake CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/Src/ScalFmmConfig.h.cmake
${CMAKE_BINARY_DIR}/Src/ScalFmmConfig.h ) ${CMAKE_BINARY_DIR}/Src/ScalFmmConfig.h )
......
...@@ -101,8 +101,10 @@ typedef long long MortonIndex; ...@@ -101,8 +101,10 @@ typedef long long MortonIndex;
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
#if _OPENMP >= 201307 #if _OPENMP >= 201307
#ifndef __INTEL_COMPILER
#define ScalFMM_USE_OMP4 #define ScalFMM_USE_OMP4
#endif #endif
#endif
#endif //FGLOBAL_HPP #endif //FGLOBAL_HPP
#!/bin/bash #!/bin/bash -v
project_dir=$HOME/Dev/src/ScalFMM/scalfmmT project_dir=$HOME/Dev/src/ScalFMM/scalfmmN/BuildOMP/run1
# #
# PlaFRIM environment # PlaFRIM environment
# #
# #
# #
MaxCore=20 #MaxCore=20
# `cat /proc/cpuinfo |grep processor |wc -l` # `cat /proc/cpuinfo |grep processor |wc -l`
# tester si linux alors # tester si linux alors
#MaxCore=`cat /proc/cpuinfo |grep processor |wc -l` MaxCore=`getconf _NPROCESSORS_ONLN`
HOST=`hostname` HOST=`hostname`
echo $HOST echo $HOST
EXEC="Examples/Release/ChebyshevInterpolationFMM" EXEC="../Examples/Release/ChebyshevInterpolationFMM"
REP="Test" REP="Test"
FILEPERF="RES_Chebyshev-openmpi-10M" FILEPERF="output-scab-Cheb-10M"
FILE="../Data/unitCubeXYZQ20k.bfma" FILE="../../Data/unitCubeXYZQ20k.bfma"
FILE="casTest-20000.fma" FILE="casTest-20000.fma"
FILE="/projets/scalfmm/benchPlafrim/unifCube_2_10000000.bfma" FILE="/projets/scalfmm/benchPlafrim/unifCube_2_10000000.bfma"
echo "==================================================================" echo "=================================================================="
...@@ -23,17 +23,18 @@ echo " pgm: ${EXEC}" ...@@ -23,17 +23,18 @@ echo " pgm: ${EXEC}"
echo " file: ${FILE}" echo " file: ${FILE}"
echo " args -depth 7 -subdepth 4 " echo " args -depth 7 -subdepth 4 "
echo " " echo " "
echo " Host: $HOST" echo " Host: $HOST"
echo " MaxCore: $MaxCore" echo " MaxCore: $MaxCore"
echo " File: $FILE"
echo " "
echo " Projectdir: $project_dir"
echo "==================================================================" echo "=================================================================="
# #
cd $project_dir/BuildOMP/ mkdir -f $project_dir
cd $project_dir
# #
REP
pwd pwd
#export OMP_PROC_BIND=true export OMP_PROC_BIND=true
export KMP_AFFINITY=verbose,scatter export KMP_AFFINITY=verbose,scatter
echo $FILEPERF-${HOST}.out echo $FILEPERF-${HOST}.out
echo "# Core TIME ENERGY Pot_0 Pot_5000000 Pot_9999999"> $FILEPERF-${HOST}.out echo "# Core TIME ENERGY Pot_0 Pot_5000000 Pot_9999999"> $FILEPERF-${HOST}.out
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment