diff --git a/CMakeLists.txt b/CMakeLists.txt index 442cd53b07df6cef293b921c560828d618a736c2..e5a962af52497796a27cd1d74c88be77996f3133 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,6 +93,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse/ # OPENMP 4/5 support option( OPENMP_SUPPORT_COMMUTE "Set to ON to let tasks commute (KSTAR/StarPU compiler only)" OFF ) option( OPENMP_SUPPORT_PRIORITY "Set to ON to enable tasks priority (KSTAR/StarPU compiler only)" OFF ) + option( OPENMP_SUPPORT_TASK_NAME "Set to ON to enable a taskname clause for tasks (KSTAR/StarPU compiler only)" OFF ) option( SCALFMM_DISABLE_NATIVE_OMP4 "Set to ON to disable the gcc/intel omp4" OFF ) option( SCALFMM_TIME_OMPTASKS "Set to ON to time omp4 tasks and generate output file" OFF ) # STARPU options diff --git a/CMakeModules/morse/find/FindFFTW.cmake b/CMakeModules/morse/find/FindFFTW.cmake index 8a992479577a07cbced3ee471947196915484c82..ac98df8b664267d7f9bb224f215cc28a1b6bb6fb 100644 --- a/CMakeModules/morse/find/FindFFTW.cmake +++ b/CMakeModules/morse/find/FindFFTW.cmake @@ -64,10 +64,10 @@ if (NOT FFTW_FOUND) - set(FFTW_DIR "" CACHE PATH "Installation directory of FFTW library given by user") - if (NOT FFTW_FIND_QUIETLY) - message(STATUS "A cache variable, namely FFTW_DIR, has been set to specify the install directory of FFTW") - endif() + set(FFTW_DIR "" CACHE PATH "Installation directory of FFTW library given by user") + if (NOT FFTW_FIND_QUIETLY) + message(STATUS "A cache variable, namely FFTW_DIR, has been set to specify the install directory of FFTW") + endif() endif() # Set the version to find @@ -80,223 +80,264 @@ set(FFTW_LOOK_FOR_FFTW_LONG OFF) set(FFTW_LOOK_FOR_FFTW_QUAD OFF) if( FFTW_FIND_COMPONENTS ) - foreach( component ${FFTW_FIND_COMPONENTS} ) - if (${component} STREQUAL "THREADS") - # means we look for the Threads version of FFTW - set(FFTW_LOOK_FOR_THREADS ON) - endif() - if (${component} STREQUAL "OMP") - # means we look for the OpenMP version of FFTW - set(FFTW_LOOK_FOR_OMP ON) - endif() - if (${component} STREQUAL "SIMPLE") - # means we look for FFTW simple precision (fftw3f) - set(FFTW_LOOK_FOR_FFTW_SIMPLE ON) - set(FFTW_LOOK_FOR_FFTW_DOUBLE OFF) - set(FFTW_LOOK_FOR_FFTW_LONG OFF) - set(FFTW_LOOK_FOR_FFTW_QUAD OFF) - endif() - if (${component} STREQUAL "DOUBLE") - # means we look for FFTW double precision (fftw3) - set(FFTW_LOOK_FOR_FFTW_SIMPLE OFF) - set(FFTW_LOOK_FOR_FFTW_DOUBLE ON) - set(FFTW_LOOK_FOR_FFTW_LONG OFF) - set(FFTW_LOOK_FOR_FFTW_QUAD OFF) - endif() - if (${component} STREQUAL "LONG") - # means we look for FFTW long double precision (fftw3l) - set(FFTW_LOOK_FOR_FFTW_SIMPLE OFF) - set(FFTW_LOOK_FOR_FFTW_DOUBLE OFF) - set(FFTW_LOOK_FOR_FFTW_LONG ON) - set(FFTW_LOOK_FOR_FFTW_QUAD OFF) - endif() - if (${component} STREQUAL "QUAD") - # means we look for FFTW quad precision (fftw3q) - set(FFTW_LOOK_FOR_FFTW_SIMPLE OFF) - set(FFTW_LOOK_FOR_FFTW_DOUBLE OFF) - set(FFTW_LOOK_FOR_FFTW_LONG OFF) - set(FFTW_LOOK_FOR_FFTW_QUAD ON) - endif() - if (${component} STREQUAL "MKL") - # means we look for the Intel MKL version of FFTW - set(FFTW_LOOK_FOR_MKL ON) - if (FFTW_LOOK_FOR_FFTW_LONG) - message(WARNING "Looking for FFTW -- long precision functions do not exist in MKL FFTW") - set(FFTW_LOOK_FOR_FFTW_LONG OFF) - endif() - if (FFTW_LOOK_FOR_FFTW_QUAD) - message(WARNING "Looking for FFTW -- quadruple functions do not exist in MKL FFTW") - set(FFTW_LOOK_FOR_FFTW_QUAD OFF) - endif() - endif() - endforeach() + foreach( component ${FFTW_FIND_COMPONENTS} ) + if (${component} STREQUAL "THREADS") + # means we look for the Threads version of FFTW + set(FFTW_LOOK_FOR_THREADS ON) + endif() + if (${component} STREQUAL "OMP") + # means we look for the OpenMP version of FFTW + set(FFTW_LOOK_FOR_OMP ON) + endif() + if (${component} STREQUAL "SIMPLE") + # means we look for FFTW simple precision (fftw3f) + set(FFTW_LOOK_FOR_FFTW_SIMPLE ON) + set(FFTW_LOOK_FOR_FFTW_DOUBLE OFF) + set(FFTW_LOOK_FOR_FFTW_LONG OFF) + set(FFTW_LOOK_FOR_FFTW_QUAD OFF) + endif() + if (${component} STREQUAL "DOUBLE") + # means we look for FFTW double precision (fftw3) + set(FFTW_LOOK_FOR_FFTW_SIMPLE OFF) + set(FFTW_LOOK_FOR_FFTW_DOUBLE ON) + set(FFTW_LOOK_FOR_FFTW_LONG OFF) + set(FFTW_LOOK_FOR_FFTW_QUAD OFF) + endif() + if (${component} STREQUAL "LONG") + # means we look for FFTW long double precision (fftw3l) + set(FFTW_LOOK_FOR_FFTW_SIMPLE OFF) + set(FFTW_LOOK_FOR_FFTW_DOUBLE OFF) + set(FFTW_LOOK_FOR_FFTW_LONG ON) + set(FFTW_LOOK_FOR_FFTW_QUAD OFF) + endif() + if (${component} STREQUAL "QUAD") + # means we look for FFTW quad precision (fftw3q) + set(FFTW_LOOK_FOR_FFTW_SIMPLE OFF) + set(FFTW_LOOK_FOR_FFTW_DOUBLE OFF) + set(FFTW_LOOK_FOR_FFTW_LONG OFF) + set(FFTW_LOOK_FOR_FFTW_QUAD ON) + endif() + if (${component} STREQUAL "MKL") + # means we look for the Intel MKL version of FFTW + set(FFTW_LOOK_FOR_MKL ON) + if (FFTW_LOOK_FOR_FFTW_LONG) + message(WARNING "Looking for FFTW -- long precision functions do not exist in MKL FFTW") + set(FFTW_LOOK_FOR_FFTW_LONG OFF) + endif() + if (FFTW_LOOK_FOR_FFTW_QUAD) + message(WARNING "Looking for FFTW -- quadruple functions do not exist in MKL FFTW") + set(FFTW_LOOK_FOR_FFTW_QUAD OFF) + endif() + endif() + endforeach() endif() if (FFTW_LOOK_FOR_THREADS) - if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_THREADS) - find_package(Threads REQUIRED) - else() - find_package(Threads) - endif() + if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_THREADS) + find_package(Threads REQUIRED) + else() + find_package(Threads) + endif() endif() if (FFTW_LOOK_FOR_MKL) - if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_MKL) - find_package(Threads REQUIRED) - else() - find_package(Threads) - endif() + if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_MKL) + find_package(Threads REQUIRED) + else() + find_package(Threads) + endif() endif() if (FFTW_LOOK_FOR_OMP) - if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_OMP) - find_package(OpenMP REQUIRED) - else() - find_package(OpenMP) - endif() + if (FFTW_FIND_REQUIRED AND FFTW_FIND_REQUIRED_OMP) + find_package(OpenMP REQUIRED) + else() + find_package(OpenMP) + endif() endif() -# Looking for include -# ------------------- -# Add system include paths to search include -# ------------------------------------------ -unset(_inc_env) -set(ENV_MKLROOT "$ENV{MKLROOT}") set(ENV_FFTW_DIR "$ENV{FFTW_DIR}") set(ENV_FFTW_INCDIR "$ENV{FFTW_INCDIR}") -if(ENV_FFTW_INCDIR) +set(ENV_FFTW_LIBDIR "$ENV{FFTW_LIBDIR}") +set(FFTW_GIVEN_BY_USER "FALSE") +if ( FFTW_DIR OR ( FFTW_INCDIR AND FFTW_LIBDIR) OR ENV_FFTW_DIR OR (ENV_FFTW_INCDIR AND ENV_FFTW_LIBDIR) ) + set(FFTW_GIVEN_BY_USER "TRUE") +endif() + +# Optionally use pkg-config to detect include/library dirs (if pkg-config is available) +# ------------------------------------------------------------------------------------- +include(FindPkgConfig) +find_package(PkgConfig QUIET) +if( PKG_CONFIG_EXECUTABLE AND NOT FFTW_GIVEN_BY_USER ) + + pkg_search_module(FFTW fftw3) + if (NOT FFTW_FIND_QUIETLY) + if (FFTW_FOUND AND FFTW_LIBRARIES) + message(STATUS "Looking for FFTW - found using PkgConfig") + #if(NOT FFTW_INCLUDE_DIRS) + # message("${Magenta}FFTW_INCLUDE_DIRS is empty using PkgConfig." + # "Perhaps the path to hwloc headers is already present in your" + # "C(PLUS)_INCLUDE_PATH environment variable.${ColourReset}") + #endif() + else() + message("${Magenta}Looking for FFTW - not found using PkgConfig." + "Perhaps you should add the directory containing fftw3.pc to" + "the PKG_CONFIG_PATH environment variable.${ColourReset}") + endif() + endif() + + set(FFTW_INCLUDE_DIRS_DEP "${FFTW_INCLUDE_DIRS}") + set(FFTW_LIBRARY_DIRS_DEP "${FFTW_LIBRARY_DIRS}") + set(FFTW_LIBRARIES_DEP "${FFTW_LIBRARIES}") + set(FFTW_WORKS TRUE) + +endif( PKG_CONFIG_EXECUTABLE AND NOT FFTW_GIVEN_BY_USER ) + + +if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FFTW_FOUND) OR (FFTW_GIVEN_BY_USER) ) + + # Looking for include + # ------------------- + + # Add system include paths to search include + # ------------------------------------------ + unset(_inc_env) + set(ENV_MKLROOT "$ENV{MKLROOT}") + set(ENV_FFTW_DIR "$ENV{FFTW_DIR}") + set(ENV_FFTW_INCDIR "$ENV{FFTW_INCDIR}") + if(ENV_FFTW_INCDIR) list(APPEND _inc_env "${ENV_FFTW_INCDIR}") -elseif(ENV_FFTW_DIR) + elseif(ENV_FFTW_DIR) list(APPEND _inc_env "${ENV_FFTW_DIR}") list(APPEND _inc_env "${ENV_FFTW_DIR}/include") list(APPEND _inc_env "${ENV_FFTW_DIR}/include/fftw") -else() + else() if (ENV_MKLROOT) - list(APPEND _inc_env "${ENV_MKLROOT}/include/fftw") + list(APPEND _inc_env "${ENV_MKLROOT}/include/fftw") endif() # system variables if(WIN32) - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") else() - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{CPATH}") - list(APPEND _inc_env "${_path_env}") - string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") - list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{C_INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{CPATH}") + list(APPEND _inc_env "${_path_env}") + string(REPLACE ":" ";" _path_env "$ENV{INCLUDE_PATH}") + list(APPEND _inc_env "${_path_env}") endif() -endif() -list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") -list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") -list(REMOVE_DUPLICATES _inc_env) - -# set paths where to look for -set(PATH_TO_LOOK_FOR "${_inc_env}") - -# Try to find the fftw header in the given paths -# ------------------------------------------------- -# call cmake macro to find the header path -if(FFTW_INCDIR) + endif() + list(APPEND _inc_env "${CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES}") + list(APPEND _inc_env "${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}") + list(REMOVE_DUPLICATES _inc_env) + + # set paths where to look for + set(PATH_TO_LOOK_FOR "${_inc_env}") + + # Try to find the fftw header in the given paths + # ------------------------------------------------- + # call cmake macro to find the header path + if(FFTW_INCDIR) set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") find_path(FFTW_fftw3.h_DIRS NAMES fftw3.h HINTS ${FFTW_INCDIR}) -else() + else() if(FFTW_DIR) - set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") - find_path(FFTW_fftw3.h_DIRS - NAMES fftw3.h - HINTS ${FFTW_DIR} - PATH_SUFFIXES "include" "include/fftw") + set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") + find_path(FFTW_fftw3.h_DIRS + NAMES fftw3.h + HINTS ${FFTW_DIR} + PATH_SUFFIXES "include" "include/fftw") else() - set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") - find_path(FFTW_fftw3.h_DIRS - NAMES fftw3.h - HINTS ${PATH_TO_LOOK_FOR} - PATH_SUFFIXES "fftw") + set(FFTW_fftw3.h_DIRS "FFTW_fftw3.h_DIRS-NOTFOUND") + find_path(FFTW_fftw3.h_DIRS + NAMES fftw3.h + HINTS ${PATH_TO_LOOK_FOR} + PATH_SUFFIXES "fftw") endif() -endif() -mark_as_advanced(FFTW_fftw3.h_DIRS) + endif() + mark_as_advanced(FFTW_fftw3.h_DIRS) -# Add path to cmake variable -# ------------------------------------ -if (FFTW_fftw3.h_DIRS) + # Add path to cmake variable + # ------------------------------------ + if (FFTW_fftw3.h_DIRS) set(FFTW_INCLUDE_DIRS "${FFTW_fftw3.h_DIRS}") -else () + else () set(FFTW_INCLUDE_DIRS "FFTW_INCLUDE_DIRS-NOTFOUND") if(NOT FFTW_FIND_QUIETLY) - message(STATUS "Looking for FFTW -- fftw3.h not found") + message(STATUS "Looking for FFTW -- fftw3.h not found") endif() -endif () + endif () -# Looking for lib -# --------------- + # Looking for lib + # --------------- -# Add system library paths to search lib -# -------------------------------------- -unset(_lib_env) -set(ENV_FFTW_LIBDIR "$ENV{FFTW_LIBDIR}") -if(ENV_FFTW_LIBDIR) + # Add system library paths to search lib + # -------------------------------------- + unset(_lib_env) + set(ENV_FFTW_LIBDIR "$ENV{FFTW_LIBDIR}") + if(ENV_FFTW_LIBDIR) list(APPEND _lib_env "${ENV_FFTW_LIBDIR}") -elseif(ENV_FFTW_DIR) + elseif(ENV_FFTW_DIR) list(APPEND _lib_env "${ENV_FFTW_DIR}") list(APPEND _lib_env "${ENV_FFTW_DIR}/lib") if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - list(APPEND _lib_env "${ENV_FFTW_DIR}/lib64") - list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/intel64") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib64") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/intel64") else() - list(APPEND _lib_env "${ENV_FFTW_DIR}/lib32") - list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/ia32") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib32") + list(APPEND _lib_env "${ENV_FFTW_DIR}/lib/ia32") endif() -else() + else() if (ENV_MKLROOT) - list(APPEND _lib_env "${ENV_MKLROOT}/lib") - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - list(APPEND _lib_env "${ENV_MKLROOT}/lib64") - list(APPEND _lib_env "${ENV_MKLROOT}/lib/intel64") - else() - list(APPEND _lib_env "${ENV_MKLROOT}/lib32") - list(APPEND _lib_env "${ENV_MKLROOT}/lib/ia32") - endif() + list(APPEND _lib_env "${ENV_MKLROOT}/lib") + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + list(APPEND _lib_env "${ENV_MKLROOT}/lib64") + list(APPEND _lib_env "${ENV_MKLROOT}/lib/intel64") + else() + list(APPEND _lib_env "${ENV_MKLROOT}/lib32") + list(APPEND _lib_env "${ENV_MKLROOT}/lib/ia32") + endif() endif() if(WIN32) - string(REPLACE ":" ";" _lib_env2 "$ENV{LIB}") + string(REPLACE ":" ";" _lib_env2 "$ENV{LIB}") else() - if(APPLE) - string(REPLACE ":" ";" _lib_env2 "$ENV{DYLD_LIBRARY_PATH}") - else() - string(REPLACE ":" ";" _lib_env2 "$ENV{LD_LIBRARY_PATH}") - endif() - list(APPEND _lib_env "${_lib_env2}") - list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") - list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") + if(APPLE) + string(REPLACE ":" ";" _lib_env2 "$ENV{DYLD_LIBRARY_PATH}") + else() + string(REPLACE ":" ";" _lib_env2 "$ENV{LD_LIBRARY_PATH}") + endif() + list(APPEND _lib_env "${_lib_env2}") + list(APPEND _lib_env "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") + list(APPEND _lib_env "${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif() -endif() -list(REMOVE_DUPLICATES _lib_env) + endif() + list(REMOVE_DUPLICATES _lib_env) -# set paths where to look for -set(PATH_TO_LOOK_FOR "${_lib_env}") + # set paths where to look for + set(PATH_TO_LOOK_FOR "${_lib_env}") -if(FFTW_LOOK_FOR_FFTW_SIMPLE) + if(FFTW_LOOK_FOR_FFTW_SIMPLE) set(FFTW_PREC "f") set(FFTW_PREC_TESTFUNC "s") -elseif(FFTW_LOOK_FOR_FFTW_DOUBLE) + elseif(FFTW_LOOK_FOR_FFTW_DOUBLE) set(FFTW_PREC "") set(FFTW_PREC_TESTFUNC "d") -elseif(FFTW_LOOK_FOR_FFTW_LONG) + elseif(FFTW_LOOK_FOR_FFTW_LONG) set(FFTW_PREC "l") set(FFTW_PREC_TESTFUNC "l") -elseif(FFTW_LOOK_FOR_FFTW_QUAD) + elseif(FFTW_LOOK_FOR_FFTW_QUAD) set(FFTW_PREC "q") set(FFTW_PREC_TESTFUNC "q") -endif() + endif() -if (FFTW_LOOK_FOR_MKL) + if (FFTW_LOOK_FOR_MKL) set(FFTW_libs_to_find "mkl_intel_lp64;mkl_sequential;mkl_core") @@ -305,39 +346,39 @@ if (FFTW_LOOK_FOR_MKL) # call cmake macro to find the lib path if(FFTW_LIBDIR) - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${FFTW_LIBDIR}) - endforeach() + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${FFTW_LIBDIR}) + endforeach() else() - if(FFTW_DIR) - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${FFTW_DIR} - PATH_SUFFIXES lib lib32 lib64) - endforeach() - else() - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${PATH_TO_LOOK_FOR}) - endforeach() - endif() + if(FFTW_DIR) + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${FFTW_DIR} + PATH_SUFFIXES lib lib32 lib64) + endforeach() + else() + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${PATH_TO_LOOK_FOR}) + endforeach() + endif() endif() -else(FFTW_LOOK_FOR_MKL) + else(FFTW_LOOK_FOR_MKL) if (FFTW_LOOK_FOR_THREADS) - set(FFTW_libs_to_find "fftw3${FFTW_PREC}_threads;fftw3${FFTW_PREC};fftw3") + set(FFTW_libs_to_find "fftw3${FFTW_PREC}_threads;fftw3${FFTW_PREC};fftw3") elseif (FFTW_LOOK_FOR_OMP) - set(FFTW_libs_to_find "fftw3${FFTW_PREC}_omp;fftw3${FFTW_PREC};fftw3") + set(FFTW_libs_to_find "fftw3${FFTW_PREC}_omp;fftw3${FFTW_PREC};fftw3") else() - set(FFTW_libs_to_find "fftw3${FFTW_PREC};fftw3") + set(FFTW_libs_to_find "fftw3${FFTW_PREC};fftw3") endif() # Try to find the fftw lib in the given paths @@ -345,59 +386,59 @@ else(FFTW_LOOK_FOR_MKL) # call cmake macro to find the lib path if(FFTW_LIBDIR) - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${FFTW_LIBDIR}) - endforeach() + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${FFTW_LIBDIR}) + endforeach() else() - if(FFTW_DIR) - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${FFTW_DIR} - PATH_SUFFIXES lib lib32 lib64) - endforeach() - else() - foreach(fftw_lib ${FFTW_libs_to_find}) - set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") - find_library(FFTW_${fftw_lib}_LIBRARY - NAMES ${fftw_lib} - HINTS ${PATH_TO_LOOK_FOR}) - endforeach() - endif() + if(FFTW_DIR) + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${FFTW_DIR} + PATH_SUFFIXES lib lib32 lib64) + endforeach() + else() + foreach(fftw_lib ${FFTW_libs_to_find}) + set(FFTW_${fftw_lib}_LIBRARY "FFTW_${fftw_lib}_LIBRARY-NOTFOUND") + find_library(FFTW_${fftw_lib}_LIBRARY + NAMES ${fftw_lib} + HINTS ${PATH_TO_LOOK_FOR}) + endforeach() + endif() endif() -endif(FFTW_LOOK_FOR_MKL) + endif(FFTW_LOOK_FOR_MKL) -# If found, add path to cmake variable -# ------------------------------------ -set(FFTW_LIBRARIES "") -set(FFTW_LIBRARY_DIRS "") -foreach(fftw_lib ${FFTW_libs_to_find}) + # If found, add path to cmake variable + # ------------------------------------ + set(FFTW_LIBRARIES "") + set(FFTW_LIBRARY_DIRS "") + foreach(fftw_lib ${FFTW_libs_to_find}) if (FFTW_${fftw_lib}_LIBRARY) - get_filename_component(${fftw_lib}_lib_path "${FFTW_${fftw_lib}_LIBRARY}" PATH) - # set cmake variables - list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") - list(APPEND FFTW_LIBRARY_DIRS "${${fftw_lib}_lib_path}") + get_filename_component(${fftw_lib}_lib_path "${FFTW_${fftw_lib}_LIBRARY}" PATH) + # set cmake variables + list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") + list(APPEND FFTW_LIBRARY_DIRS "${${fftw_lib}_lib_path}") else () - list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") - if (NOT FFTW_FIND_QUIETLY) - message(STATUS "Looking for FFTW -- lib ${fftw_lib} not found") - endif() + list(APPEND FFTW_LIBRARIES "${FFTW_${fftw_lib}_LIBRARY}") + if (NOT FFTW_FIND_QUIETLY) + message(STATUS "Looking for FFTW -- lib ${fftw_lib} not found") + endif() endif () mark_as_advanced(FFTW_${fftw_lib}_LIBRARY) -endforeach() + endforeach() -list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS) -list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS) + list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS) + list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS) -# check a function to validate the find -if(FFTW_LIBRARIES) + # check a function to validate the find + if(FFTW_LIBRARIES) set(REQUIRED_FLAGS) set(REQUIRED_LDFLAGS) @@ -407,39 +448,39 @@ if(FFTW_LIBRARIES) # FFTW if (FFTW_INCLUDE_DIRS) - set(REQUIRED_INCDIRS "${FFTW_INCLUDE_DIRS}") + set(REQUIRED_INCDIRS "${FFTW_INCLUDE_DIRS}") endif() if (FFTW_LIBRARY_DIRS) - set(REQUIRED_LIBDIRS "${FFTW_LIBRARY_DIRS}") + set(REQUIRED_LIBDIRS "${FFTW_LIBRARY_DIRS}") endif() set(REQUIRED_LIBS "${FFTW_LIBRARIES}") # THREADS if (FFTW_LOOK_FOR_THREADS) - list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}") + list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}") endif() # OMP if(FFTW_LOOK_FOR_OMP) - if (CMAKE_C_COMPILER_ID STREQUAL "GNU") - # either gomp ... - #set(REQUIRED_FLAGS "-fopenmp") - #list(APPEND REQUIRED_LIBS "-lgomp") - # or iomp5 - list(APPEND REQUIRED_LIBS "-liomp5") - elseif (CMAKE_C_COMPILER_ID STREQUAL "Intel") - list(APPEND REQUIRED_LIBS "-liomp5") - endif() + if (CMAKE_C_COMPILER_ID STREQUAL "GNU") + # either gomp ... + #set(REQUIRED_FLAGS "-fopenmp") + #list(APPEND REQUIRED_LIBS "-lgomp") + # or iomp5 + list(APPEND REQUIRED_LIBS "-liomp5") + elseif (CMAKE_C_COMPILER_ID STREQUAL "Intel") + list(APPEND REQUIRED_LIBS "-liomp5") + endif() endif() # MKL if(FFTW_LOOK_FOR_MKL) - list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}") - if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux") - list(APPEND REQUIRED_LDFLAGS "-Wl,--no-as-needed") - endif() + list(APPEND REQUIRED_LIBS "${CMAKE_THREAD_LIBS_INIT}") + if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_SYSTEM_NAME STREQUAL "Linux") + list(APPEND REQUIRED_LDFLAGS "-Wl,--no-as-needed") + endif() endif() # m find_library(M_LIBRARY NAMES m) if(M_LIBRARY) - list(APPEND REQUIRED_LIBS "-lm") + list(APPEND REQUIRED_LIBS "-lm") endif() # set required libraries for link @@ -447,7 +488,7 @@ if(FFTW_LIBRARIES) set(CMAKE_REQUIRED_LIBRARIES) list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LDFLAGS}") foreach(lib_dir ${REQUIRED_LIBDIRS}) - list(APPEND CMAKE_REQUIRED_LIBRARIES "-L${lib_dir}") + list(APPEND CMAKE_REQUIRED_LIBRARIES "-L${lib_dir}") endforeach() list(APPEND CMAKE_REQUIRED_LIBRARIES "${REQUIRED_LIBS}") list(APPEND CMAKE_REQUIRED_FLAGS "${REQUIRED_FLAGS}") @@ -460,46 +501,48 @@ if(FFTW_LIBRARIES) mark_as_advanced(FFTW_WORKS) if(FFTW_WORKS) - # save link with dependencies - set(FFTW_LIBRARIES_DEP "${REQUIRED_LIBS}") - set(FFTW_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}") - set(FFTW_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}") - set(FFTW_C_FLAGS "${REQUIRED_FLAGS}") - set(FFTW_LINKER_FLAGS "${REQUIRED_LDFLAGS}") - list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS_DEP) - list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS_DEP) - list(REMOVE_DUPLICATES FFTW_LINKER_FLAGS) + # save link with dependencies + set(FFTW_LIBRARIES_DEP "${REQUIRED_LIBS}") + set(FFTW_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}") + set(FFTW_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}") + set(FFTW_C_FLAGS "${REQUIRED_FLAGS}") + set(FFTW_LINKER_FLAGS "${REQUIRED_LDFLAGS}") + list(REMOVE_DUPLICATES FFTW_LIBRARY_DIRS_DEP) + list(REMOVE_DUPLICATES FFTW_INCLUDE_DIRS_DEP) + list(REMOVE_DUPLICATES FFTW_LINKER_FLAGS) else() - if(NOT FFTW_FIND_QUIETLY) - message(STATUS "Looking for FFTW : test of ${FFTW_PREC_TESTFUNC}fftw_execute_ with fftw library fails") - message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}") - message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}") - message(STATUS "CMAKE_REQUIRED_FLAGS: ${CMAKE_REQUIRED_FLAGS}") - message(STATUS "Check in CMakeFiles/CMakeError.log to figure out why it fails") - endif() + if(NOT FFTW_FIND_QUIETLY) + message(STATUS "Looking for FFTW : test of ${FFTW_PREC_TESTFUNC}fftw_execute_ with fftw library fails") + message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}") + message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}") + message(STATUS "CMAKE_REQUIRED_FLAGS: ${CMAKE_REQUIRED_FLAGS}") + message(STATUS "Check in CMakeFiles/CMakeError.log to figure out why it fails") + endif() else() - set(FFTW_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + set(FFTW_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) endif() set(CMAKE_REQUIRED_INCLUDES) set(CMAKE_REQUIRED_FLAGS) set(CMAKE_REQUIRED_LIBRARIES) -endif(FFTW_LIBRARIES) + endif(FFTW_LIBRARIES) + +endif( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT FFTW_FOUND) OR (FFTW_GIVEN_BY_USER) ) if (FFTW_LIBRARIES) - list(GET FFTW_LIBRARIES 0 first_lib) - get_filename_component(first_lib_path "${first_lib}" PATH) - if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") - string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") - set(FFTW_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of FFTW library" FORCE) - else() - set(FFTW_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of FFTW library" FORCE) - endif() + list(GET FFTW_LIBRARIES 0 first_lib) + get_filename_component(first_lib_path "${first_lib}" PATH) + if (${first_lib_path} MATCHES "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)") + string(REGEX REPLACE "(/lib(32|64)?$)|(/lib/intel64$|/lib/ia32$)" "" not_cached_dir "${first_lib_path}") + set(FFTW_DIR_FOUND "${not_cached_dir}" CACHE PATH "Installation directory of FFTW library" FORCE) + else() + set(FFTW_DIR_FOUND "${first_lib_path}" CACHE PATH "Installation directory of FFTW library" FORCE) + endif() endif() # check that FFTW has been found # ------------------------------- include(FindPackageHandleStandardArgs) find_package_handle_standard_args(FFTW DEFAULT_MSG - FFTW_LIBRARIES - FFTW_INCLUDE_DIRS - FFTW_WORKS) + FFTW_LIBRARIES + FFTW_INCLUDE_DIRS + FFTW_WORKS) diff --git a/Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp b/Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp index 04b6433c9892c29e06e6dfaa71b7842926db7a36..163585bdd98f48ac0431cb2d342d45810a81f108 100644 --- a/Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp +++ b/Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp @@ -15,7 +15,6 @@ #include "FOutOfBlockInteraction.hpp" -#include <vector> #include <vector> #include <omp.h> @@ -37,6 +36,12 @@ #define priority_if_supported(x) #endif +#undef taskname_if_supported +#ifdef OPENMP_SUPPORT_TASK_NAME +#define taskname_if_supported(n) taskname(n) +#else +#define taskname_if_supported(n) +#endif template <class OctreeClass, class CellContainerClass, class CellClass, @@ -372,7 +377,7 @@ protected: ParticleGroupClass* containers = tree->getParticleGroup(idxGroup); - #pragma omp task default(shared) firstprivate(leafCells, cellPoles, containers) depend(inout: cellPoles[0]) priority_if_supported(priorities.getInsertionPosP2M()) + #pragma omp task default(shared) firstprivate(leafCells, cellPoles, containers) depend(inout: cellPoles[0]) priority_if_supported(priorities.getInsertionPosP2M()) taskname_if_supported("P2M") { FTIME_TASKS(FTaskTimer::ScopeEvent taskTime(omp_get_thread_num(), &taskTimeRecorder, leafCells->getStartingIndex() * 20 * 8, "P2M")); KernelClass*const kernel = kernels[omp_get_thread_num()]; @@ -417,7 +422,7 @@ protected: subCellGroup = (*iterChildCells); subCellGroupPoles = (*iterChildCells)->getRawMultipoleBuffer(); - #pragma omp task default(none) firstprivate(idxLevel, currentCells, cellPoles, subCellGroup, subCellGroupPoles) depend(commute_if_supported: cellPoles[0]) depend(in: subCellGroupPoles[0]) priority_if_supported(priorities.getInsertionPosM2M(idxLevel)) + #pragma omp task default(none) firstprivate(idxLevel, currentCells, cellPoles, subCellGroup, subCellGroupPoles) depend(commute_if_supported: cellPoles[0]) depend(in: subCellGroupPoles[0]) priority_if_supported(priorities.getInsertionPosM2M(idxLevel)) taskname_if_supported("M2M") { KernelClass*const kernel = kernels[omp_get_thread_num()]; const MortonIndex firstParent = FMath::Max(currentCells->getStartingIndex(), subCellGroup->getStartingIndex()>>3); @@ -492,7 +497,7 @@ protected: PoleCellClass* cellPoles = currentCells->getRawMultipoleBuffer(); LocalCellClass* cellLocals = currentCells->getRawLocalBuffer(); -#pragma omp task default(none) firstprivate(currentCells, cellPoles, cellLocals, idxLevel) depend(commute_if_supported: cellLocals[0]) depend(in: cellPoles[0]) priority_if_supported(priorities.getInsertionPosM2L(idxLevel)) +#pragma omp task default(none) firstprivate(currentCells, cellPoles, cellLocals, idxLevel) depend(commute_if_supported: cellLocals[0]) depend(in: cellPoles[0]) priority_if_supported(priorities.getInsertionPosM2L(idxLevel)) taskname_if_supported("M2L") { FTIME_TASKS(FTaskTimer::ScopeEvent taskTime(omp_get_thread_num(), &taskTimeRecorder, ((currentCells->getStartingIndex() *20) + idxLevel ) * 8 + 2, "M2L")); const MortonIndex blockStartIdx = currentCells->getStartingIndex(); @@ -555,7 +560,7 @@ protected: LocalCellClass* cellOtherLocals = cellsOther->getRawLocalBuffer(); const std::vector<OutOfBlockInteraction>* outsideInteractions = &(*currentInteractions).interactions; - #pragma omp task default(none) firstprivate(currentCells, cellLocals, outsideInteractions, cellsOther, cellOtherPoles, idxLevel) depend(commute_if_supported: cellLocals[0]) depend(in: cellOtherPoles[0]) priority_if_supported(priorities.getInsertionPosM2LExtern(idxLevel)) + #pragma omp task default(none) firstprivate(currentCells, cellLocals, outsideInteractions, cellsOther, cellOtherPoles, idxLevel) depend(commute_if_supported: cellLocals[0]) depend(in: cellOtherPoles[0]) priority_if_supported(priorities.getInsertionPosM2LExtern(idxLevel)) taskname_if_supported("M2L-out") { FTIME_TASKS(FTaskTimer::ScopeEvent taskTime(omp_get_thread_num(), &taskTimeRecorder, (((currentCells->getStartingIndex()+1) * (cellsOther->getStartingIndex()+2)) * 20 + idxLevel) * 8 + 3, "M2L-ext")); KernelClass*const kernel = kernels[omp_get_thread_num()]; @@ -571,7 +576,7 @@ protected: } } - #pragma omp task default(none) firstprivate(currentCells, cellPoles, outsideInteractions, cellsOther, cellOtherLocals, idxLevel) depend(commute_if_supported: cellOtherLocals[0]) depend(in: cellPoles[0]) priority_if_supported(priorities.getInsertionPosM2LExtern(idxLevel)) + #pragma omp task default(none) firstprivate(currentCells, cellPoles, outsideInteractions, cellsOther, cellOtherLocals, idxLevel) depend(commute_if_supported: cellOtherLocals[0]) depend(in: cellPoles[0]) priority_if_supported(priorities.getInsertionPosM2LExtern(idxLevel)) taskname_if_supported("M2L-out") { FTIME_TASKS(FTaskTimer::ScopeEvent taskTime(omp_get_thread_num(), &taskTimeRecorder, (((currentCells->getStartingIndex()+1) * (cellsOther->getStartingIndex()+1)) * 20 + idxLevel) * 8 + 3, "M2L-ext")); KernelClass*const kernel = kernels[omp_get_thread_num()]; @@ -631,7 +636,7 @@ protected: subCellLocalGroupsLocal = (*iterChildCells)->getRawLocalBuffer(); if(noCommuteAtLastLevel == false || idxLevel != FAbstractAlgorithm::lowerWorkingLevel - 2){ - #pragma omp task default(none) firstprivate(idxLevel, currentCells, cellLocals, subCellGroup, subCellLocalGroupsLocal) depend(commute_if_supported: subCellLocalGroupsLocal[0]) depend(in: cellLocals[0]) priority_if_supported(priorities.getInsertionPosL2L(idxLevel)) + #pragma omp task default(none) firstprivate(idxLevel, currentCells, cellLocals, subCellGroup, subCellLocalGroupsLocal) depend(commute_if_supported: subCellLocalGroupsLocal[0]) depend(in: cellLocals[0]) priority_if_supported(priorities.getInsertionPosL2L(idxLevel)) taskname_if_supported("L2L") { KernelClass*const kernel = kernels[omp_get_thread_num()]; @@ -674,7 +679,7 @@ protected: } } else{ - #pragma omp task default(none) firstprivate(idxLevel, currentCells, cellLocals, subCellGroup, subCellLocalGroupsLocal) depend(inout: subCellLocalGroupsLocal[0]) depend(in: cellLocals[0]) priority_if_supported(priorities.getInsertionPosL2L(idxLevel)) + #pragma omp task default(none) firstprivate(idxLevel, currentCells, cellLocals, subCellGroup, subCellLocalGroupsLocal) depend(inout: subCellLocalGroupsLocal[0]) depend(in: cellLocals[0]) priority_if_supported(priorities.getInsertionPosL2L(idxLevel)) taskname_if_supported("L2L") { KernelClass*const kernel = kernels[omp_get_thread_num()]; @@ -760,7 +765,7 @@ protected: unsigned char* containersOtherDown = containersOther->getRawAttributesBuffer(); const std::vector<OutOfBlockInteraction>* outsideInteractions = &(*currentInteractions).interactions; -#pragma omp task default(none) firstprivate(containers, containersDown, containersOther, containersOtherDown, outsideInteractions) depend(commute_if_supported: containersOtherDown[0], containersDown[0]) priority_if_supported(priorities.getInsertionPosP2PExtern()) +#pragma omp task default(none) firstprivate(containers, containersDown, containersOther, containersOtherDown, outsideInteractions) depend(commute_if_supported: containersOtherDown[0], containersDown[0]) priority_if_supported(priorities.getInsertionPosP2PExtern()) taskname_if_supported("P2P-out") { FTIME_TASKS(FTaskTimer::ScopeEvent taskTime(omp_get_thread_num(), &taskTimeRecorder, ((containersOther->getStartingIndex()+1) * (containers->getStartingIndex()+1))*20*8 + 6, "P2P-ext")); KernelClass*const kernel = kernels[omp_get_thread_num()]; @@ -798,7 +803,7 @@ protected: ParticleGroupClass* containers = (*iterParticles); unsigned char* containersDown = containers->getRawAttributesBuffer(); - #pragma omp task default(none) firstprivate(containers, containersDown) depend(commute_if_supported: containersDown[0]) priority_if_supported(priorities.getInsertionPosP2P()) + #pragma omp task default(none) firstprivate(containers, containersDown) depend(commute_if_supported: containersDown[0]) priority_if_supported(priorities.getInsertionPosP2P()) taskname_if_supported("P2P") { FTIME_TASKS(FTaskTimer::ScopeEvent taskTime(omp_get_thread_num(), &taskTimeRecorder, containers->getStartingIndex()*20*8 + 5, "P2P")); const MortonIndex blockStartIdx = containers->getStartingIndex(); @@ -853,7 +858,7 @@ protected: ParticleGroupClass* containers = tree->getParticleGroup(idxGroup); unsigned char* containersDown = containers->getRawAttributesBuffer(); - #pragma omp task default(shared) firstprivate(leafCells, cellLocals, containers, containersDown) depend(commute_if_supported: containersDown[0]) depend(in: cellLocals[0]) priority_if_supported(priorities.getInsertionPosL2P()) + #pragma omp task default(shared) firstprivate(leafCells, cellLocals, containers, containersDown) depend(commute_if_supported: containersDown[0]) depend(in: cellLocals[0]) priority_if_supported(priorities.getInsertionPosL2P()) taskname_if_supported("L2P") { FTIME_TASKS(FTaskTimer::ScopeEvent taskTime(omp_get_thread_num(), &taskTimeRecorder, (leafCells->getStartingIndex()*20*8) + 7, "L2P")); KernelClass*const kernel = kernels[omp_get_thread_num()]; diff --git a/Src/ScalFmmConfig.h.cmake b/Src/ScalFmmConfig.h.cmake index 9ae8f6fbc3a531ceeb8fd910f5f1c6c51a9455e7..d62c7af25af646e0d202836ec805023327e2ef38 100644 --- a/Src/ScalFmmConfig.h.cmake +++ b/Src/ScalFmmConfig.h.cmake @@ -131,6 +131,12 @@ const std::string SCALFMMCompileLibs("@SCALFMM_COMPILE_LIBS@"); #cmakedefine OPENMP_SUPPORT_PRIORITY +/////////////////////////////////////////////////////// +// To use a taskname clause for tasks with KSTAR OMP4 +/////////////////////////////////////////////////////// + +#cmakedefine OPENMP_SUPPORT_TASK_NAME + /////////////////////////////////////////////////////// // To record omp4 task times for statistics ///////////////////////////////////////////////////////