snapshot of svn
This commit is contained in:
174
CMakeLists.txt
Normal file
174
CMakeLists.txt
Normal file
@ -0,0 +1,174 @@
|
||||
CMAKE_MINIMUM_REQUIRED (VERSION 3.2)
|
||||
PROJECT (DKS)
|
||||
SET (DKS_VERSION_MAJOR 1)
|
||||
SET (DKS_VERSION_MINOR 0.1)
|
||||
SET (PACKAGE \"dks\")
|
||||
SET (PACKAGE_BUGREPORT \"locagoons.uldis@psi.ch\")
|
||||
SET (PACKAGE_NAME \"DKS\")
|
||||
SET (PACKAGE_STRING \"DKS\ 1.0.1\")
|
||||
SET (PACKAGE_TARNAME \"dks\")
|
||||
SET (PACKAGE_VERSION \"1.0.1\")
|
||||
SET (VERSION \"1.0.1\")
|
||||
|
||||
SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
|
||||
|
||||
#get compiler name
|
||||
#STRING (REGEX REPLACE ".*/([A-Za-z]*)$" "\\1" COMPILER_NAME ${CMAKE_CXX_COMPILER})
|
||||
STRING (REGEX REPLACE ".*/" "" COMPILER_NAME ${CMAKE_CXX_COMPILER})
|
||||
MESSAGE (STATUS "Your compiler is: ${COMPILER_NAME}")
|
||||
MESSAGE (STATUS "Your compiler is: ${CMAKE_CXX_COMPILER}")
|
||||
|
||||
MESSAGE (STATUS "C compiler: ${CMAKE_C_COMPILER_ID}")
|
||||
MESSAGE (STATUS "CXX compiler: ${CMAKE_CXX_COMPILER_ID}")
|
||||
|
||||
#opencl and cuda kernel files are in the builds include directory
|
||||
SET (OPENCL_KERNELS -DOPENCL_KERNELS=\\"${CMAKE_INSTALL_PREFIX}/include/\\")
|
||||
MESSAGE (STATUS "OpenCL kernel files: ${OPENCL_KERNELS}")
|
||||
|
||||
#find boost
|
||||
set (BOOSTROOT $ENV{BOOST_DIR})
|
||||
SET (Boost_USE_STATIC_LIBS OFF)
|
||||
SET (Boost_USE_STATIC_RUNTIME OFF)
|
||||
FIND_PACKAGE(Boost 1.55.0 REQUIRED COMPONENTS filesystem system)
|
||||
IF (Boost_FOUND)
|
||||
MESSAGE (STATUS "Found boost include dir: ${Boost_INCLUDE_DIRS}")
|
||||
MESSAGE (STATUS "Found boost library dir: ${Boost_LIBRARY_DIRS}")
|
||||
MESSAGE (STATUS "Found boost libraries: ${Boost_LIBRARIES}")
|
||||
INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIRS})
|
||||
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
|
||||
ENDIF (Boost_FOUND)
|
||||
|
||||
#enable UQTK
|
||||
OPTION (USE_UQTK "Use UQTK" OFF)
|
||||
|
||||
|
||||
#intel icpc compiler specific flags
|
||||
IF (${CMAKE_C_COMPILER_ID} STREQUAL "Intel" OR USE_INTEL)
|
||||
|
||||
#for intel compiler turn on openmp and opencl
|
||||
OPTION (USE_OPENCL "Use OpenCL" ON)
|
||||
OPTION (USE_CUDA "Use CUDA" OFF)
|
||||
OPTION (USE_MIC "Use intel MIC" ON)
|
||||
|
||||
#find xiar and xild and set flags for offload build on mic
|
||||
FIND_PROGRAM(XIAR xiar)
|
||||
IF(XIAR)
|
||||
MESSAGE(STATUS "xiar found: ${XIAR}")
|
||||
SET(CMAKE_AR "${XIAR}")
|
||||
ENDIF(XIAR)
|
||||
MARK_AS_ADVANCED(XIAR)
|
||||
SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> rcs -qoffload-build <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> rcs -qoffload-build <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
|
||||
FIND_PROGRAM(XILD xild)
|
||||
IF(XILD)
|
||||
SET(CMAKE_LINKER "${XILD}")
|
||||
ENDIF(XILD)
|
||||
MARK_AS_ADVANCED(XILD)
|
||||
|
||||
#set flags for openmp and opencl
|
||||
#TODO: check which opencl to use: nvidia, amd, intel, apple
|
||||
SET (CMAKE_CXX_FLAGS "-DDEBUG -O3 -Wall -offload -mkl -openmp -lOpenCL -lpthread -DDKS_MIC -DDKS_OPENCL -qopt-report=5 -qopt-report-phase=vec -std=c++11")
|
||||
|
||||
IF (${COMPILER_NAME} STREQUAL "mpicxx" OR ${COMPILER_NAME} STREQUAL "mpiicpc")
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDKS_MPI")
|
||||
ENDIF (${COMPILER_NAME} STREQUAL "mpicxx" OR ${COMPILER_NAME} STREQUAL "mpiicpc")
|
||||
|
||||
ENDIF (${CMAKE_C_COMPILER_ID} STREQUAL "Intel" OR USE_INTEL)
|
||||
|
||||
#gnu copmpiler specific flags
|
||||
IF ( (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") AND NOT USE_INTEL)
|
||||
|
||||
|
||||
OPTION (USE_OPENCL "Use OpenCL" ON)
|
||||
OPTION (USE_CUDA "Use CUDA" OFF)
|
||||
OPTION (USE_MIC "Use intel MIC" OFF)
|
||||
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG -O3 -Wall -fopenmp -std=c++11 -D__wsu")
|
||||
|
||||
FIND_PACKAGE(CUDA)
|
||||
IF (CUDA_FOUND)
|
||||
SET (USE_CUDA ON)
|
||||
INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})
|
||||
LINK_DIRECTORIES(${CUDA_TOOLKIT_ROOT_DIR}/lib64)
|
||||
|
||||
MESSAGE (STATUS "cuda include: ${CUDA_INCLUDE_DIRS}")
|
||||
MESSAGE (STATUS "cuda libs: ${CUDA_TOOLKIT_ROOT_DIR}/lib64")
|
||||
MESSAGE (STATUS "cuda version: ${CUDA_VERSION}")
|
||||
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lcudart -lcufft -lcublas -lnvToolsExt -DDKS_CUDA")
|
||||
SET (CUDA_NVCC_FLAGS "-arch=sm_35 -DDEBUG -lcufft -lcublas -lcudart -fmad=false")
|
||||
|
||||
SET (CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} ${OPENCL_KERNELS}")
|
||||
|
||||
#if cuda version >= 7.0 add runtime commpilation flags
|
||||
IF (NOT CUDA_VERSION VERSION_LESS "7.0")
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lnvrtc -lcuda")
|
||||
ENDIF (NOT CUDA_VERSION VERSION_LESS "7.0")
|
||||
|
||||
MESSAGE (STATUS "nvcc flags: ${CUDA_NVCC_FLAGS}")
|
||||
|
||||
SET(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE OFF)
|
||||
#set(CUDA_SEPARABLE_COMPILATION ON)
|
||||
SET(BUILD_SHARED_LIBS OFF)
|
||||
|
||||
ENDIF (CUDA_FOUND)
|
||||
|
||||
IF (NOT CUDA_FOUND)
|
||||
|
||||
MESSAGE(STATUS "CUDA not found, looking for OpenCL")
|
||||
|
||||
FIND_PACKAGE(OpenCL)
|
||||
IF (OpenCL_FOUND)
|
||||
MESSAGE(STATUS "OpenCL version : ${OpenCL_VERSION_STRING}")
|
||||
MESSAGE(STATUS "OpenCL include dir: ${OpenCL_INCLUDE_DIR}")
|
||||
MESSAGE(STATUS "OpenCL library dir: ${OpenCL_LIBRARY}")
|
||||
INCLUDE_DIRECTORIES(${OpenCL_INCLUDE_DIR})
|
||||
LINK_DIRECTORIES(${OpenCL_LIBRARY})
|
||||
ENDIF (OpenCL_FOUND)
|
||||
|
||||
ENDIF (NOT CUDA_FOUND)
|
||||
|
||||
#if mac OS and no CUDA set apple opencl flags
|
||||
IF (APPLE AND NOT CUDA_FOUND)
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework opencl -lpthread -DDKS_OPENCL")
|
||||
ENDIF(APPLE AND NOT CUDA_FOUND)
|
||||
|
||||
#if cuda found set cuda opencl flags
|
||||
IF (CUDA_FOUND)
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lOpenCL -lpthread -DDKS_OPENCL")
|
||||
ENDIF (CUDA_FOUND)
|
||||
|
||||
#if cuda not found but amd opencl found set opencl flags
|
||||
IF (NOT CUDA_FOUND AND OpenCL_FOUND)
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lOpenCL -lpthread -DDKS_OPENCL")
|
||||
ENDIF(NOT CUDA_FOUND AND OpenCL_FOUND)
|
||||
|
||||
#if mpi compiler used set mpi flag
|
||||
IF (${COMPILER_NAME} STREQUAL "mpicxx")
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDKS_MPI")
|
||||
ENDIF (${COMPILER_NAME} STREQUAL "mpicxx")
|
||||
|
||||
ENDIF ( (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") AND NOT USE_INTEL)
|
||||
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENCL_KERNELS}")
|
||||
MESSAGE (STATUS "Compiler flags: ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
ADD_SUBDIRECTORY (src)
|
||||
|
||||
IF (ENABLE_TESTS)
|
||||
ADD_SUBDIRECTORY (test)
|
||||
ENDIF (ENABLE_TESTS)
|
||||
|
||||
ADD_SUBDIRECTORY (auto-tuning)
|
||||
|
||||
### write configure files ###
|
||||
CONFIGURE_FILE ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config_install.cmake )
|
||||
|
||||
### install files ###
|
||||
INSTALL (
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config_install.cmake
|
||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/cmake/${PROJECT_NAME}"
|
||||
RENAME ${PROJECT_NAME}Config.cmake
|
||||
)
|
Reference in New Issue
Block a user