Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 43 additions & 59 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -184,71 +184,52 @@ if(COMMIT_INFO)
endif()
endif()

# Different exe files of ABACUS
unset(ABACUS_BIN_NAME CACHE)
# Determine the ABACUS executable name.
if(NOT ENABLE_LCAO)
set(_abacus_bin_level "pw")
# TODO: Not well-defined now.
elseif(ENABLE_LIBRI AND ENABLE_MLALGO)
set(_abacus_bin_level "max")
elseif(ENABLE_LIBRI)
set(_abacus_bin_level "std")
# TODO: Not well-defined now.
elseif(ENABLE_MLALGO)
set(_abacus_bin_level "ml")
else()
set(_abacus_bin_level "basic")
endif()

# Case : LCAO or PW
if(ENABLE_LCAO)
# Case: CUDA is enabled (suffix with 'g' for GPU)
if(USE_CUDA)
if(ENABLE_MPI)
if(NOT ENABLE_LIBRI AND NOT ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_basic_gpu)
elseif(ENABLE_LIBRI AND NOT ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_std_gpu)
elseif(NOT ENABLE_LIBRI AND ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_ml_gpu)
elseif(ENABLE_LIBRI AND ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_max_gpu)
endif()
endif()
# Case: CPU is enabled (suffix with 'p' for parallel)
else()
if(ENABLE_MPI)
if(NOT ENABLE_LIBRI AND NOT ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_basic_para)
elseif(ENABLE_LIBRI AND NOT ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_std_para)
elseif(NOT ENABLE_LIBRI AND ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_ml_para)
elseif(ENABLE_LIBRI AND ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_max_para)
endif()
else()
if(NOT ENABLE_LIBRI AND NOT ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_basic_ser)
elseif(ENABLE_LIBRI AND NOT ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_std_ser)
elseif(NOT ENABLE_LIBRI AND ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_ml_ser)
elseif(ENABLE_LIBRI AND ENABLE_MLALGO)
set(ABACUS_BIN_NAME abacus_max_ser)
endif()
endif()
endif()
# Case : PW only
if(ENABLE_MPI)
set(_abacus_bin_para "para")
elseif(ENABLE_OPENMP)
set(_abacus_bin_para "omp")
else()
if(USE_CUDA)
if(ENABLE_MPI)
set(ABACUS_BIN_NAME abacus_pw_gpu)
endif()
else()
if(ENABLE_MPI)
set(ABACUS_BIN_NAME abacus_pw_para)
else()
set(ABACUS_BIN_NAME abacus_pw_ser)
endif()
endif()
set(_abacus_bin_para "ser")
endif()

if(USE_CUDA OR USE_ROCM)
set(_abacus_bin_device "gpu")
elseif(USE_CUDA_ON_DCU)
set(_abacus_bin_device "dcu")
elseif(USE_DSP)
set(_abacus_bin_device "dsp")
elseif(USE_SW)
set(_abacus_bin_device "sw")
endif()

# if(USE_KML)
# set(_abacus_bin_device "kp")
# endif()

if(_abacus_bin_device)
set(ABACUS_BIN_NAME "abacus_${_abacus_bin_level}_${_abacus_bin_device}")
else()
set(ABACUS_BIN_NAME "abacus_${_abacus_bin_level}_${_abacus_bin_para}")
endif()

# Use DSP hardware
if (USE_DSP)
if(ENABLE_ELPA)
message(WARNING USE_DSP is incompatible with ELPA; switching off ENABLE_ELPA)
set(ENABLE_ELPA OFF)
endif()
set(ABACUS_BIN_NAME abacus_dsp)
if(USE_DSP AND ENABLE_ELPA)
message(FATAL_ERROR "USE_DSP is incompatible with ELPA.")
endif()

list(APPEND CMAKE_MODULE_PATH
Expand Down Expand Up @@ -499,6 +480,9 @@ endif()
# version. Use cmake with AMD-ROCm:
# https://rocmdocs.amd.com/en/latest/Installation_Guide/Using-CMake-with-AMD-ROCm.html
if(USE_ROCM)
message(
DEPRECATION
"Option USE_ROCM is deprecated and will be ignored in a future release. ")
cmake_minimum_required(VERSION 3.18)
if(NOT DEFINED ROCM_PATH)
set(ROCM_PATH
Expand Down
Loading