|
@@ -1,6 +1,7 @@
|
|
cmake_minimum_required(VERSION 3.9)
|
|
cmake_minimum_required(VERSION 3.9)
|
|
|
|
|
|
set(ARCH "X86_64" CACHE STRING "Target Architecture")
|
|
set(ARCH "X86_64" CACHE STRING "Target Architecture")
|
|
|
|
+option(AVX512 "generate code that can make use of avx-512-instructions" ON)
|
|
|
|
|
|
#message(CMAKE_SYSTEM_PROCESSOR)
|
|
#message(CMAKE_SYSTEM_PROCESSOR)
|
|
|
|
|
|
@@ -35,9 +36,10 @@ SET(MandelSources
|
|
FILE(GLOB MandelHeaders include/*.h)
|
|
FILE(GLOB MandelHeaders include/*.h)
|
|
|
|
|
|
if (ARCH STREQUAL "X86_64" OR ARCH STREQUAL "X86")
|
|
if (ARCH STREQUAL "X86_64" OR ARCH STREQUAL "X86")
|
|
- list(APPEND MandelSources src/CpuGeneratorsAVX.cpp src/CpuGeneratorsAVXFMA.cpp src/CpuGeneratorsSSE2.cpp src/CpuGeneratorsAVX512.cpp)
|
|
|
|
-elseif(ARCH STREQUAL "ARM")
|
|
|
|
- list(APPEND MandelSources src/CpuGeneratorsNeon.cpp)
|
|
|
|
|
|
+ list(APPEND MandelSources src/CpuGeneratorsAVX.cpp src/CpuGeneratorsAVXFMA.cpp src/CpuGeneratorsSSE2.cpp)
|
|
|
|
+ if (AVX512)
|
|
|
|
+ list(APPEND MandelSources src/CpuGeneratorsAVX512.cpp)
|
|
|
|
+ endif()
|
|
endif()
|
|
endif()
|
|
|
|
|
|
# message(${MandelSources})
|
|
# message(${MandelSources})
|
|
@@ -95,33 +97,29 @@ if(Boost_FOUND)
|
|
endif(Boost_FOUND)
|
|
endif(Boost_FOUND)
|
|
|
|
|
|
if (ARCH STREQUAL "X86_64" OR ARCH STREQUAL "X86")
|
|
if (ARCH STREQUAL "X86_64" OR ARCH STREQUAL "X86")
|
|
- if (MSVC)
|
|
|
|
- set_source_files_properties(src/CpuGeneratorsAVX512.cpp PROPERTIES COMPILE_FLAGS /arch:AVX512F)
|
|
|
|
- else()
|
|
|
|
- set_source_files_properties(src/CpuGeneratorsAVX512.cpp PROPERTIES COMPILE_FLAGS -mavx512f)
|
|
|
|
- endif(MSVC)
|
|
|
|
|
|
+ if (AVX512)
|
|
|
|
+ target_compile_definitions(mandel PUBLIC WITH_AVX512)
|
|
|
|
+ if (MSVC)
|
|
|
|
+ set_source_files_properties(src/CpuGeneratorsAVX512.cpp PROPERTIES COMPILE_FLAGS /arch:AVX512F)
|
|
|
|
+ else()
|
|
|
|
+ set_source_files_properties(src/CpuGeneratorsAVX512.cpp PROPERTIES COMPILE_FLAGS -mavx512f)
|
|
|
|
+ endif(MSVC)
|
|
|
|
+ endif()
|
|
|
|
|
|
if (MSVC)
|
|
if (MSVC)
|
|
set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
|
|
set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
|
|
set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
|
|
set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
|
|
|
|
+ set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS /arch:FMA)
|
|
|
|
+ set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS /arch:SSE2)
|
|
else()
|
|
else()
|
|
set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS -mavx)
|
|
set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS -mavx)
|
|
- set_source_files_properties(src/JuliaGenerators.cpp PROPERTIES COMPILE_FLAGS -mavx)
|
|
|
|
set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS -mavx)
|
|
set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS -mavx)
|
|
- endif(MSVC)
|
|
|
|
-
|
|
|
|
- if (MSVC)
|
|
|
|
- set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS /arch:FMA)
|
|
|
|
- else()
|
|
|
|
set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS -mfma)
|
|
set_source_files_properties(src/CpuGeneratorsAVXFMA.cpp PROPERTIES COMPILE_FLAGS -mfma)
|
|
- endif(MSVC)
|
|
|
|
-
|
|
|
|
- if (MSVC)
|
|
|
|
- set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS /arch:SSE2)
|
|
|
|
- else()
|
|
|
|
set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS -msse2)
|
|
set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS -msse2)
|
|
endif(MSVC)
|
|
endif(MSVC)
|
|
|
|
+
|
|
elseif(ARCH STREQUAL "ARM")
|
|
elseif(ARCH STREQUAL "ARM")
|
|
|
|
+ list(APPEND MandelSources src/CpuGeneratorsNeon.cpp)
|
|
#set_source_files_properties(src/CpuGeneratorsNeon.cpp PROPERTIES COMPILE_FLAGS -mfpu=neon)
|
|
#set_source_files_properties(src/CpuGeneratorsNeon.cpp PROPERTIES COMPILE_FLAGS -mfpu=neon)
|
|
endif()
|
|
endif()
|
|
|
|
|