diff --git a/CMakeLists.txt b/CMakeLists.txt index 5556be319e..b2ea09adbf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -184,63 +184,30 @@ 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_feature "pw") +elseif(ENABLE_LIBRI AND ENABLE_MLALGO) + set(_abacus_bin_feature "max") +elseif(ENABLE_LIBRI) + set(_abacus_bin_feature "std") +elseif(ENABLE_MLALGO) + set(_abacus_bin_feature "ml") +else() + set(_abacus_bin_feature "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(USE_CUDA OR USE_ROCM) + set(_abacus_bin_backend "gpu") +elseif(ENABLE_MPI) + set(_abacus_bin_backend "para") +elseif(ENABLE_OPENMP) + set(_abacus_bin_backend "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_backend "ser") endif() +set(ABACUS_BIN_NAME "abacus_${_abacus_bin_feature}_${_abacus_bin_backend}") # Use DSP hardware if (USE_DSP)