From 04235ac3033d276ac735ac8fd2382e9eee8224c4 Mon Sep 17 00:00:00 2001 From: Growl Date: Thu, 6 Aug 2026 10:18:32 +0800 Subject: [PATCH 1/4] CMake: Revise ABACUS executable naming logic --- CMakeLists.txt | 93 ++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 59 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5556be319e9..cbd4fb08753 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -184,71 +184,46 @@ 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") +elseif(ENABLE_LIBRI AND ENABLE_MLALGO) + set(_abacus_bin_level "max") +elseif(ENABLE_LIBRI) + set(_abacus_bin_level "std") +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() + +set(ABACUS_BIN_NAME "abacus_${_abacus_bin_level}_${_abacus_bin_para}") + +if(_abacus_bin_device) + string(APPEND ABACUS_BIN_NAME "_${_abacus_bin_device}") +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 From e98151101b9c28e6e66ba4ef956960790743ec00 Mon Sep 17 00:00:00 2001 From: Levi Zhou <31941107+ZhouXY-PKU@users.noreply.github.com> Date: Thu, 13 Aug 2026 21:12:08 +0800 Subject: [PATCH 2/4] Refactor device selection logic and deprecate USE_ROCM Updated CMakeLists.txt to clarify device selection and mark USE_ROCM as deprecated. --- CMakeLists.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cbd4fb08753..cb77a44f4f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -187,10 +187,12 @@ endif() # 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() @@ -205,7 +207,9 @@ else() set(_abacus_bin_para "ser") endif() -if(USE_CUDA OR USE_ROCM) +if(USE_CUDA) + set(_abacus_bin_device "gpu") +elseif(USE_ROCM) set(_abacus_bin_device "gpu") elseif(USE_CUDA_ON_DCU) set(_abacus_bin_device "dcu") @@ -215,6 +219,10 @@ elseif(USE_SW) set(_abacus_bin_device "sw") endif() +# if(USE_KML) +# set(_abacus_bin_device "kp") +# endif() + set(ABACUS_BIN_NAME "abacus_${_abacus_bin_level}_${_abacus_bin_para}") if(_abacus_bin_device) @@ -474,6 +482,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 From 5b45933d6e88dc4f7de3c0f18a263d2274084fdb Mon Sep 17 00:00:00 2001 From: Levi Zhou <31941107+ZhouXY-PKU@users.noreply.github.com> Date: Thu, 13 Aug 2026 22:08:33 +0800 Subject: [PATCH 3/4] Update CMakeLists.txt --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cb77a44f4f1..296dbefdcaf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -223,10 +223,10 @@ endif() # set(_abacus_bin_device "kp") # endif() -set(ABACUS_BIN_NAME "abacus_${_abacus_bin_level}_${_abacus_bin_para}") - if(_abacus_bin_device) - string(APPEND ABACUS_BIN_NAME "_${_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 From abd9f0a67999949a64580fa797fbc21a3d55cac8 Mon Sep 17 00:00:00 2001 From: SY Wang Date: Thu, 13 Aug 2026 22:32:04 +0800 Subject: [PATCH 4/4] Drop duplication --- CMakeLists.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 296dbefdcaf..05af8265e9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -207,9 +207,7 @@ else() set(_abacus_bin_para "ser") endif() -if(USE_CUDA) - set(_abacus_bin_device "gpu") -elseif(USE_ROCM) +if(USE_CUDA OR USE_ROCM) set(_abacus_bin_device "gpu") elseif(USE_CUDA_ON_DCU) set(_abacus_bin_device "dcu")