-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1502 from rbberger/cmake_cleanup
Refactor CMake configuration
- Loading branch information
Showing
30 changed files
with
1,159 additions
and
1,138 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
############################################################################### | ||
# Coverage | ||
# | ||
# Requires latest gcovr (for GCC 8.1 support):# | ||
# pip install git+https://github.com/gcovr/gcovr.git | ||
############################################################################### | ||
if(ENABLE_COVERAGE) | ||
find_program(GCOVR_BINARY gcovr) | ||
find_package_handle_standard_args(GCOVR DEFAULT_MSG GCOVR_BINARY) | ||
|
||
if(GCOVR_FOUND) | ||
get_filename_component(ABSOLUTE_LAMMPS_SOURCE_DIR ${LAMMPS_SOURCE_DIR} ABSOLUTE) | ||
|
||
add_custom_target( | ||
gen_coverage_xml | ||
COMMAND ${GCOVR_BINARY} -s -x -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.xml | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||
COMMENT "Generating XML Coverage Report..." | ||
) | ||
|
||
add_custom_target( | ||
gen_coverage_html | ||
COMMAND ${GCOVR_BINARY} -s --html --html-details -r ${ABSOLUTE_LAMMPS_SOURCE_DIR} --object-directory=${CMAKE_BINARY_DIR} -o coverage.html | ||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||
COMMENT "Generating HTML Coverage Report..." | ||
) | ||
endif() | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
############################################################################### | ||
# Build documentation | ||
############################################################################### | ||
option(BUILD_DOC "Build LAMMPS documentation" OFF) | ||
if(BUILD_DOC) | ||
include(ProcessorCount) | ||
ProcessorCount(NPROCS) | ||
find_package(PythonInterp 3 REQUIRED) | ||
|
||
set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv) | ||
|
||
file(GLOB DOC_SOURCES ${LAMMPS_DOC_DIR}/src/[^.]*.txt) | ||
file(GLOB PDF_EXTRA_SOURCES ${LAMMPS_DOC_DIR}/src/lammps_commands*.txt ${LAMMPS_DOC_DIR}/src/lammps_support.txt ${LAMMPS_DOC_DIR}/src/lammps_tutorials.txt) | ||
list(REMOVE_ITEM DOC_SOURCES ${PDF_EXTRA_SOURCES}) | ||
|
||
add_custom_command( | ||
OUTPUT docenv | ||
COMMAND ${VIRTUALENV} docenv | ||
) | ||
|
||
set(DOCENV_BINARY_DIR ${CMAKE_BINARY_DIR}/docenv/bin) | ||
|
||
add_custom_command( | ||
OUTPUT requirements.txt | ||
DEPENDS docenv | ||
COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/utils/requirements.txt requirements.txt | ||
COMMAND ${DOCENV_BINARY_DIR}/pip install -r requirements.txt --upgrade | ||
COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters | ||
) | ||
|
||
set(RST_FILES "") | ||
set(RST_DIR ${CMAKE_BINARY_DIR}/rst) | ||
file(MAKE_DIRECTORY ${RST_DIR}) | ||
foreach(TXT_FILE ${DOC_SOURCES}) | ||
get_filename_component(FILENAME ${TXT_FILE} NAME_WE) | ||
set(RST_FILE ${RST_DIR}/${FILENAME}.rst) | ||
list(APPEND RST_FILES ${RST_FILE}) | ||
add_custom_command( | ||
OUTPUT ${RST_FILE} | ||
DEPENDS requirements.txt docenv ${TXT_FILE} | ||
COMMAND ${DOCENV_BINARY_DIR}/txt2rst -o ${RST_DIR} ${TXT_FILE} | ||
) | ||
endforeach() | ||
|
||
add_custom_command( | ||
OUTPUT html | ||
DEPENDS ${RST_FILES} | ||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LAMMPS_DOC_DIR}/src ${RST_DIR} | ||
COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${RST_DIR} html | ||
) | ||
|
||
add_custom_target( | ||
doc ALL | ||
DEPENDS html | ||
SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES} | ||
) | ||
|
||
install(DIRECTORY ${CMAKE_BINARY_DIR}/html DESTINATION ${CMAKE_INSTALL_DOCDIR}) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# Utility functions | ||
function(list_to_bulletpoints result) | ||
list(REMOVE_AT ARGV 0) | ||
set(temp "") | ||
foreach(item ${ARGV}) | ||
set(temp "${temp}* ${item}\n") | ||
endforeach() | ||
set(${result} "${temp}" PARENT_SCOPE) | ||
endfunction(list_to_bulletpoints) | ||
|
||
function(validate_option name values) | ||
string(TOLOWER ${${name}} needle_lower) | ||
string(TOUPPER ${${name}} needle_upper) | ||
list(FIND ${values} ${needle_lower} IDX_LOWER) | ||
list(FIND ${values} ${needle_upper} IDX_UPPER) | ||
if(${IDX_LOWER} LESS 0 AND ${IDX_UPPER} LESS 0) | ||
list_to_bulletpoints(POSSIBLE_VALUE_LIST ${${values}}) | ||
message(FATAL_ERROR "\n########################################################################\n" | ||
"Invalid value '${${name}}' for option ${name}\n" | ||
"\n" | ||
"Possible values are:\n" | ||
"${POSSIBLE_VALUE_LIST}" | ||
"########################################################################") | ||
endif() | ||
endfunction(validate_option) | ||
|
||
function(get_lammps_version version_header variable) | ||
file(READ ${version_header} line) | ||
set(MONTHS x Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) | ||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\1" day "${line}") | ||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\2" month "${line}") | ||
string(REGEX REPLACE "#define LAMMPS_VERSION \"([0-9]+) ([A-Za-z]+) ([0-9]+)\"" "\\3" year "${line}") | ||
string(STRIP ${day} day) | ||
string(STRIP ${month} month) | ||
string(STRIP ${year} year) | ||
list(FIND MONTHS "${month}" month) | ||
string(LENGTH ${day} day_length) | ||
string(LENGTH ${month} month_length) | ||
if(day_length EQUAL 1) | ||
set(day "0${day}") | ||
endif() | ||
if(month_length EQUAL 1) | ||
set(month "0${month}") | ||
endif() | ||
set(${variable} "${year}${month}${day}" PARENT_SCOPE) | ||
endfunction() | ||
|
||
function(check_for_autogen_files source_dir) | ||
message(STATUS "Running check for auto-generated files from make-based build system") | ||
file(GLOB SRC_AUTOGEN_FILES ${source_dir}/style_*.h) | ||
file(GLOB SRC_AUTOGEN_PACKAGES ${source_dir}/packages_*.h) | ||
list(APPEND SRC_AUTOGEN_FILES ${SRC_AUTOGEN_PACKAGES} ${source_dir}/lmpinstalledpkgs.h ${source_dir}/lmpgitversion.h) | ||
foreach(_SRC ${SRC_AUTOGEN_FILES}) | ||
get_filename_component(FILENAME "${_SRC}" NAME) | ||
if(EXISTS ${source_dir}/${FILENAME}) | ||
message(FATAL_ERROR "\n########################################################################\n" | ||
"Found header file(s) generated by the make-based build system\n" | ||
"\n" | ||
"Please run\n" | ||
"make -C ${source_dir} purge\n" | ||
"to remove\n" | ||
"########################################################################") | ||
endif() | ||
endforeach() | ||
endfunction() | ||
|
||
macro(pkg_depends PKG1 PKG2) | ||
if(PKG_${PKG1} AND NOT (PKG_${PKG2} OR BUILD_${PKG2})) | ||
message(FATAL_ERROR "${PKG1} package needs LAMMPS to be build with ${PKG2}") | ||
endif() | ||
endmacro() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
if(PKG_COMPRESS) | ||
find_package(ZLIB REQUIRED) | ||
include_directories(${ZLIB_INCLUDE_DIRS}) | ||
list(APPEND LAMMPS_LINK_LIBS ${ZLIB_LIBRARIES}) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
if(PKG_CORESHELL) | ||
set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL) | ||
set(CORESHELL_SOURCES) | ||
set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}") | ||
|
||
# detects styles which have a CORESHELL version | ||
RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES) | ||
|
||
get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES) | ||
|
||
list(APPEND LIB_SOURCES ${CORESHELL_SOURCES}) | ||
include_directories(${CORESHELL_SOURCES_DIR}) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,194 @@ | ||
if(PKG_GPU) | ||
if (CMAKE_VERSION VERSION_LESS "3.1") | ||
message(FATAL_ERROR "For the GPU package you need at least cmake-3.1") | ||
endif() | ||
set(GPU_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/GPU) | ||
set(GPU_SOURCES ${GPU_SOURCES_DIR}/gpu_extra.h | ||
${GPU_SOURCES_DIR}/fix_gpu.h | ||
${GPU_SOURCES_DIR}/fix_gpu.cpp) | ||
|
||
set(GPU_API "opencl" CACHE STRING "API used by GPU package") | ||
set(GPU_API_VALUES opencl cuda) | ||
set_property(CACHE GPU_API PROPERTY STRINGS ${GPU_API_VALUES}) | ||
validate_option(GPU_API GPU_API_VALUES) | ||
string(TOUPPER ${GPU_API} GPU_API) | ||
|
||
set(GPU_PREC "mixed" CACHE STRING "LAMMPS GPU precision") | ||
set(GPU_PREC_VALUES double mixed single) | ||
set_property(CACHE GPU_PREC PROPERTY STRINGS ${GPU_PREC_VALUES}) | ||
validate_option(GPU_PREC GPU_PREC_VALUES) | ||
string(TOUPPER ${GPU_PREC} GPU_PREC) | ||
|
||
if(GPU_PREC STREQUAL "DOUBLE") | ||
set(GPU_PREC_SETTING "DOUBLE_DOUBLE") | ||
elseif(GPU_PREC STREQUAL "MIXED") | ||
set(GPU_PREC_SETTING "SINGLE_DOUBLE") | ||
elseif(GPU_PREC STREQUAL "SINGLE") | ||
set(GPU_PREC_SETTING "SINGLE_SINGLE") | ||
endif() | ||
|
||
file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp) | ||
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu) | ||
|
||
if(GPU_API STREQUAL "CUDA") | ||
find_package(CUDA REQUIRED) | ||
find_program(BIN2C bin2c) | ||
if(NOT BIN2C) | ||
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.") | ||
endif() | ||
option(CUDPP_OPT "Enable CUDPP_OPT" ON) | ||
option(CUDA_MPS_SUPPORT "Enable tweaks to support CUDA Multi-process service (MPS)" OFF) | ||
if(CUDA_MPS_SUPPORT) | ||
set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY") | ||
endif() | ||
|
||
set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)") | ||
|
||
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu) | ||
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu) | ||
|
||
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu ${LAMMPS_LIB_BINARY_DIR}/gpu) | ||
|
||
if(CUDPP_OPT) | ||
cuda_include_directories(${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) | ||
file(GLOB GPU_LIB_CUDPP_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cpp) | ||
file(GLOB GPU_LIB_CUDPP_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini/[^.]*.cu) | ||
endif() | ||
|
||
# build arch/gencode commands for nvcc based on CUDA toolkit version and use choice | ||
# --arch translates directly instead of JIT, so this should be for the preferred or most common architecture | ||
set(GPU_CUDA_GENCODE "-arch=${GPU_ARCH} ") | ||
# Fermi (GPU Arch 2.x) is supported by CUDA 3.2 to CUDA 8.0 | ||
if((CUDA_VERSION VERSION_GREATER "3.1") AND (CUDA_VERSION VERSION_LESS "9.0")) | ||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_20,code=[sm_20,compute_20] ") | ||
endif() | ||
# Kepler (GPU Arch 3.x) is supported by CUDA 5 and later | ||
if(CUDA_VERSION VERSION_GREATER "4.9") | ||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_30,code=[sm_30,compute_30] -gencode arch=compute_35,code=[sm_35,compute_35] ") | ||
endif() | ||
# Maxwell (GPU Arch 5.x) is supported by CUDA 6 and later | ||
if(CUDA_VERSION VERSION_GREATER "5.9") | ||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52] ") | ||
endif() | ||
# Pascal (GPU Arch 6.x) is supported by CUDA 8 and later | ||
if(CUDA_VERSION VERSION_GREATER "7.9") | ||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_60,code=[sm_60,compute_60] -gencode arch=compute_61,code=[sm_61,compute_61] ") | ||
endif() | ||
# Volta (GPU Arch 7.0) is supported by CUDA 9 and later | ||
if(CUDA_VERSION VERSION_GREATER "8.9") | ||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_70,code=[sm_70,compute_70] ") | ||
endif() | ||
# Turing (GPU Arch 7.5) is supported by CUDA 10 and later | ||
if(CUDA_VERSION VERSION_GREATER "9.9") | ||
string(APPEND GPU_CUDA_GENCODE "-gencode arch=compute_75,code=[sm_75,compute_75] ") | ||
endif() | ||
|
||
cuda_compile_fatbin(GPU_GEN_OBJS ${GPU_LIB_CU} OPTIONS | ||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DNV_KERNEL -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) | ||
|
||
cuda_compile(GPU_OBJS ${GPU_LIB_CUDPP_CU} OPTIONS ${CUDA_REQUEST_PIC} | ||
-DUNIX -O3 --use_fast_math -Wno-deprecated-gpu-targets -DUCL_CUDADR ${GPU_CUDA_GENCODE} -D_${GPU_PREC_SETTING}) | ||
|
||
foreach(CU_OBJ ${GPU_GEN_OBJS}) | ||
get_filename_component(CU_NAME ${CU_OBJ} NAME_WE) | ||
string(REGEX REPLACE "^.*_lal_" "" CU_NAME "${CU_NAME}") | ||
add_custom_command(OUTPUT ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h | ||
COMMAND ${BIN2C} -c -n ${CU_NAME} ${CU_OBJ} > ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h | ||
DEPENDS ${CU_OBJ} | ||
COMMENT "Generating ${CU_NAME}_cubin.h") | ||
list(APPEND GPU_LIB_SOURCES ${LAMMPS_LIB_BINARY_DIR}/gpu/${CU_NAME}_cubin.h) | ||
endforeach() | ||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h") | ||
|
||
|
||
add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS}) | ||
target_link_libraries(gpu ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) | ||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS}) | ||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -DMPI_GERYON -DUCL_NO_EXIT ${GPU_CUDA_MPS_FLAGS}) | ||
if(CUDPP_OPT) | ||
target_include_directories(gpu PRIVATE ${LAMMPS_LIB_SOURCE_DIR}/gpu/cudpp_mini) | ||
target_compile_definitions(gpu PRIVATE -DUSE_CUDPP) | ||
endif() | ||
|
||
list(APPEND LAMMPS_LINK_LIBS gpu) | ||
|
||
add_executable(nvc_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) | ||
target_compile_definitions(nvc_get_devices PRIVATE -DUCL_CUDADR) | ||
target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY}) | ||
target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS}) | ||
|
||
|
||
elseif(GPU_API STREQUAL "OPENCL") | ||
find_package(OpenCL REQUIRED) | ||
set(OCL_TUNE "generic" CACHE STRING "OpenCL Device Tuning") | ||
set(OCL_TUNE_VALUES intel fermi kepler cypress generic) | ||
set_property(CACHE OCL_TUNE PROPERTY STRINGS ${OCL_TUNE_VALUES}) | ||
validate_option(OCL_TUNE OCL_TUNE_VALUES) | ||
string(TOUPPER ${OCL_TUNE} OCL_TUNE) | ||
|
||
include(OpenCLUtils) | ||
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h) | ||
|
||
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu) | ||
list(REMOVE_ITEM GPU_LIB_CU | ||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu | ||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu | ||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu | ||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu | ||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu | ||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu | ||
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu | ||
) | ||
|
||
foreach(GPU_KERNEL ${GPU_LIB_CU}) | ||
get_filename_component(basename ${GPU_KERNEL} NAME_WE) | ||
string(SUBSTRING ${basename} 4 -1 KERNEL_NAME) | ||
GenerateOpenCLHeader(${KERNEL_NAME} ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h ${OCL_COMMON_HEADERS} ${GPU_KERNEL}) | ||
list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/${KERNEL_NAME}_cl.h) | ||
endforeach() | ||
|
||
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu) | ||
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu) | ||
GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu) | ||
GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu) | ||
GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu) | ||
GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu) | ||
GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu) | ||
|
||
list(APPEND GPU_LIB_SOURCES | ||
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h | ||
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h | ||
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h | ||
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h | ||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h | ||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h | ||
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h | ||
) | ||
|
||
add_library(gpu STATIC ${GPU_LIB_SOURCES}) | ||
target_link_libraries(gpu ${OpenCL_LIBRARIES}) | ||
target_include_directories(gpu PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/gpu ${OpenCL_INCLUDE_DIRS}) | ||
target_compile_definitions(gpu PRIVATE -D_${GPU_PREC_SETTING} -D${OCL_TUNE}_OCL -DMPI_GERYON -DUCL_NO_EXIT) | ||
target_compile_definitions(gpu PRIVATE -DUSE_OPENCL) | ||
|
||
list(APPEND LAMMPS_LINK_LIBS gpu) | ||
|
||
add_executable(ocl_get_devices ${LAMMPS_LIB_SOURCE_DIR}/gpu/geryon/ucl_get_devices.cpp) | ||
target_compile_definitions(ocl_get_devices PRIVATE -DUCL_OPENCL) | ||
target_link_libraries(ocl_get_devices PRIVATE ${OpenCL_LIBRARIES}) | ||
target_include_directories(ocl_get_devices PRIVATE ${OpenCL_INCLUDE_DIRS}) | ||
endif() | ||
|
||
# GPU package | ||
FindStyleHeaders(${GPU_SOURCES_DIR} FIX_CLASS fix_ FIX) | ||
|
||
set_property(GLOBAL PROPERTY "GPU_SOURCES" "${GPU_SOURCES}") | ||
|
||
# detects styles which have GPU version | ||
RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES) | ||
|
||
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES) | ||
|
||
list(APPEND LIB_SOURCES ${GPU_SOURCES}) | ||
include_directories(${GPU_SOURCES_DIR}) | ||
endif() |
Oops, something went wrong.