Skip to content

Commit 61734d8

Browse files
Toolchain 202601 (#7310)
* feat: 分析toolchain目录功能 Co-authored-by: traeagent <traeagent@users.noreply.github.com> * feat: 分析toolchain目录功能 Co-authored-by: traeagent <traeagent@users.noreply.github.com> * chore(toolchain): remove legacy installer entrypoint * docs(toolchain): spec cuda version in dashboard * feat(toolchain): show cuda version in summary * docs(toolchain): spec gcc cuda compat warning * feat(toolchain): warn on gcc>=14 with cuda<13 * remove useless coding docs * fix(toolchain): shorten the commit version of LibRI, LibComm, cereal and rapidjson in installation * docs(toolchain): add Gitee mirror for toolchain packages for CN network --------- Co-authored-by: traeagent <traeagent@users.noreply.github.com>
1 parent c86993b commit 61734d8

26 files changed

Lines changed: 165 additions & 1016 deletions

.github/workflows/toolchain_quick.yaml

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ on:
33
pull_request:
44
paths:
55
- toolchain/**
6-
- .github/workflows/toolchain_quick.yml
6+
- .github/workflows/toolchain_quick.yaml
77
push:
88
branches:
99
- develop
1010
paths:
1111
- toolchain/**
12-
- .github/workflows/toolchain_quick.yml
12+
- .github/workflows/toolchain_quick.yaml
1313
workflow_dispatch:
1414
jobs:
1515
lint-and-sanity:
@@ -43,7 +43,7 @@ jobs:
4343
shellcheck --version
4444
find toolchain -type f -name '*.sh' -print0 | xargs -0 -n1 shellcheck -x || true
4545
46-
dry-run-matrix:
46+
pack-run-matrix:
4747
runs-on: ubuntu-latest
4848
strategy:
4949
fail-fast: false
@@ -56,27 +56,26 @@ jobs:
5656
run: |
5757
sudo apt-get update
5858
sudo apt-get install -y dos2unix
59-
- name: Dry run
59+
- name: Pack run
6060
run: |
6161
set -euo pipefail
6262
cd toolchain
6363
rm -rf build install
6464
find . -type f -name '*.sh' -exec chmod +x {} +
6565
if [ "${{ matrix.variant }}" = "gnu" ]; then
66-
./toolchain_gnu.sh --dry-run --skip-system-checks
66+
./toolchain_gnu.sh --pack-run --skip-system-checks
6767
elif [ "${{ matrix.variant }}" = "intel" ]; then
68-
./toolchain_intel.sh --dry-run --skip-system-checks
68+
./toolchain_intel.sh --pack-run --skip-system-checks
6969
elif [ "${{ matrix.variant }}" = "cuda" ]; then
70-
./toolchain_gnu.sh --dry-run --skip-system-checks --enable-cuda --gpu-ver 70
70+
./toolchain_gnu.sh --pack-run --skip-system-checks --enable-cuda --gpu-ver 70
7171
fi
7272
- name: Upload setup
7373
if: always()
7474
uses: actions/upload-artifact@v7
7575
with:
76-
name: toolchain-${{ matrix.variant }}-dryrun
76+
name: toolchain-${{ matrix.variant }}-packrun
7777
path: |
7878
toolchain/install/setup
7979
toolchain/compile.log
8080
toolchain/compile.err
8181
if-no-files-found: ignore
82-

docs/advanced/install.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ cmake -B build -DDeePMD_DIR=/dir_to_deepmd-kit -DTorch_DIR=/dir_to_pytorch
5858
## Build with NEP
5959
This interface enables running MD simulations with the NEP model. It requires the [NEP_CPU](https://github.com/brucefan1983/NEP_CPU) library, which can be easily installed using toolchain as shown below:
6060
```bash
61-
./install_abacus_toolchain.sh --with-nep=install
61+
./install_abacus_toolchain_new.sh --with-nep=install
6262
```
6363

6464
To build ABACUS:

toolchain/README.md

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ABACUS Toolchain
22

3-
[![Version](https://img.shields.io/badge/version-2025.3-blue.svg)](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain)
3+
[![Version](https://img.shields.io/badge/version-2026.1-blue.svg)](https://github.com/deepmodeling/abacus-develop/tree/develop/toolchain)
44
[![License](https://img.shields.io/badge/license-GPL--compatible-green.svg)](#license)
55
[![Platform](https://img.shields.io/badge/platform-Linux-lightgrey.svg)]()
66

@@ -139,12 +139,23 @@ For air-gapped systems or unreliable internet:
139139
# 1. Create build directory and download packages
140140
mkdir build
141141
# Download required packages to build/ directory with proper naming
142-
# e.g., fftw-3.3.10.tar.gz, openmpi-5.0.8.tar.bz2
142+
# e.g., fftw-3.3.11.tar.gz, openmpi-5.0.10.tar.bz2
143143

144144
# 2. Run toolchain (will detect local packages)
145145
./toolchain_gnu.sh
146146
```
147147

148+
The downloading process can be facilitated via `./toolchain_gnu.sh --pack-run`.
149+
150+
Also, for users in China, we provide a Gitee mirror repository with pre-downloaded packages:
151+
```bash
152+
# Clone the Gitee repository in toolchain directory
153+
git clone https://gitee.com/jamesmisaka/abacus_toolchain_build.git
154+
# Move packages to build directory
155+
mv abacus_toolchain_build/* build/
156+
# Then run toolchain normally
157+
```
158+
148159
### Hybrid Installation
149160

150161
Mix online and offline packages as needed - the toolchain automatically detects locally available packages and downloads missing ones.
@@ -178,20 +189,20 @@ Mix online and offline packages as needed - the toolchain automatically detects
178189
| CMake | 3.31.7 / 3.30.5 | Build system | BSD-3-Clause | Install |
179190
| GCC | 13.2.0 / 11.4.0 | C/C++ compiler | GPL-3.0-or-later WITH GCC-exception-3.1 | Install |
180191
| **MPI Libraries** |||||
181-
| OpenMPI | 5.0.8 / 4.1.6 | MPI implementation | BSD-3-Clause-Open-MPI | Install |
182-
| MPICH | 4.3.1 / 4.1.0 | Alternative MPI | mpich2 (BSD-like) | Alternative |
192+
| OpenMPI | 5.0.10 / 4.1.8 | MPI implementation | BSD-3-Clause-Open-MPI | Install |
193+
| MPICH | 5.0.1 / 4.3.2 | Alternative MPI | mpich2 (BSD-like) | Alternative |
183194
| **Math Libraries** |||||
184-
| OpenBLAS | 0.3.30 / 0.3.27 | Linear algebra | BSD-3-Clause | Install |
185-
| ScaLAPACK | 2.2.2 / 2.2.1 | Parallel linear algebra | BSD-3-Clause | Install |
195+
| OpenBLAS | 0.3.33 / 0.3.30 | Linear algebra | BSD-3-Clause | Install |
196+
| ScaLAPACK | 2.2.3 / 2.2.1 | Parallel linear algebra | BSD-3-Clause | Install |
186197
| **Scientific Libraries** |||||
187-
| FFTW | 3.3.10 / 3.3.10 | Fast Fourier Transform | GPL-2.0-or-later | Install |
198+
| FFTW | 3.3.11 / 3.3.10 | Fast Fourier Transform | GPL-2.0-or-later | Install |
188199
| LibXC | 7.0.0 / 6.2.2 | Exchange-correlation | MPL-2.0 | Install |
189-
| ELPA | 2025.06.001 / 2024.05.001 | Eigenvalue solver | LGPL-3.0-only | Install |
200+
| ELPA | 2026.02.001 / 2024.05.001 | Eigenvalue solver | LGPL-3.0-only | Install |
190201
| **Advanced Features** |||||
191-
| Cereal | master | C++ Serialization | BSD | Install |
192-
| RapidJSON | master | JSON parsing | MIT | Install |
193-
| LibRI | master | EXX calculations | GPL-3.0 | Install |
194-
| LibComm | master | EXX calculations | GPL-3.0 | Install |
202+
| Cereal | pinned commit | C++ Serialization | BSD | Install |
203+
| RapidJSON | pinned commit | JSON parsing | MIT | Install |
204+
| LibRI | pinned commit | EXX calculations | GPL-3.0 | Install |
205+
| LibComm | pinned commit | EXX calculations | GPL-3.0 | Install |
195206
| LibTorch | 2.1.2 / 1.12.1 | MLALGO support | BSD-3-Clause | Optional |
196207
| LibNPY | 1.0.1 / 1.0.1 | NumPy I/O | MIT | Optional |
197208
| NEP | main | Neuroevolution potential | MIT | Optional |
@@ -226,11 +237,11 @@ One can also manually edit the `toolchain_gnu.sh` for selecting specific version
226237
# Refer to scripts/package_versions.sh for specific version numbers
227238

228239
CMAKE_VERSION="main" # main=3.31.7, alt=3.30.5
229-
OPENMPI_VERSION="main" # main=5.0.8, alt=4.1.6
230-
OPENBLAS_VERSION="main" # main=0.3.30, alt=0.3.27
231-
ELPA_VERSION="main" # main=2025.06.001, alt=2024.05.001
240+
OPENMPI_VERSION="main" # main=5.0.10, alt=4.1.8
241+
OPENBLAS_VERSION="main" # main=0.3.33, alt=0.3.30
242+
ELPA_VERSION="main" # main=2026.02.001, alt=2024.05.001
232243
LIBXC_VERSION="main" # main=7.0.0, alt=6.2.2
233-
SCALAPACK_VERSION="main" # main=2.2.2, alt=2.2.1
244+
SCALAPACK_VERSION="main" # main=2.2.3, alt=2.2.1
234245
# Optional Libraries
235246
LIBTORCH_VERSION="main" # main=2.1.2, alt=1.12.1 (use alt for older GLIBC)
236247
```
@@ -467,19 +478,6 @@ NPROCS_OVERWRITE=4 ./toolchain_gnu.sh --with-gcc --with-openmpi
467478
- **CI/CD environments**: Match container resource limits
468479
- **Debugging**: Use single-core compilation for clearer error messages
469480

470-
### Legacy Script Options
471-
472-
The deprecated `install_abacus_toolchain.sh` supports additional options:
473-
474-
| Option | Description | Availability |
475-
|--------|-------------|--------------|
476-
| `--dry-run` | Test configuration without installation | ✅ New & Legacy |
477-
| `--pack-run` | Download packages without building | ✅ New & Legacy |
478-
| `--no-check-certificate` | Skip SSL certificate verification | ⚠️ Legacy only (use `DOWNLOAD_CERT_POLICY=skip`) |
479-
| `-j N` | Limit parallel compilation processes | ⚠️ Legacy only (use `NPROCS_OVERWRITE=N`) |
480-
481-
> **Migration Note**: The new toolchain system (`toolchain_*.sh` scripts) is recommended over the legacy `install_abacus_toolchain.sh`. Legacy options like `--no-check-certificate` and `-j N` are replaced by environment variables `DOWNLOAD_CERT_POLICY` and `NPROCS_OVERWRITE` respectively.
482-
483481
### Environment Management
484482

485483
The toolchain generates several setup files:
@@ -509,15 +507,14 @@ scripts/
509507
| File | Purpose |
510508
|------|---------|
511509
| `install_abacus_toolchain_new.sh` | Main orchestration script (new version) |
512-
| `install_abacus_toolchain.sh` | Legacy main script (deprecated) |
513510
| `toolchain_*.sh` | Frontend scripts for specific toolchains |
514511
| `scripts/lib/config_manager.sh` | Configuration management |
515512
| `scripts/lib/package_manager.sh` | Package installation logic |
516513
| `scripts/lib/user_interface.sh` | User interaction and output |
517514
| `scripts/common_vars.sh` | Shared variables and defaults |
518515
| `scripts/tool_kit.sh` | Utility functions and macros |
519516
| `scripts/parse_if.py` | Parser for IF_XYZ constructs |
520-
| `checksums.sha256` | Pre-calculated SHA256 checksums for packages |
517+
| `install/<pkg>/install_successful` | Per-package install lock/checksum file generated by `write_checksums` |
521518

522519
### Script Structure Details
523520

toolchain/build_abacus_aocc-aocl.sh

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@ BUILD_DIR=build_abacus_aocc_aocl
2222
rm -rf $BUILD_DIR
2323

2424
PREFIX=$ABACUS_DIR
25-
ELPA=$INSTALL_DIR/elpa-2025.06.001/cpu
26-
# ELPA=$INSTALL_DIR/elpa-2025.06.001/nvidia # for elpa-gpu
27-
CEREAL=$INSTALL_DIR/cereal-master/include/cereal
28-
LIBXC=$INSTALL_DIR/libxc-7.0.0
29-
RAPIDJSON=$INSTALL_DIR/rapidjson-master
25+
ELPA=${ELPA_ROOT}
26+
CEREAL=${CEREAL_ROOT}/include
27+
LIBXC=${LIBXC_ROOT}
28+
RAPIDJSON=${RAPIDJSON_ROOT}
3029
LAPACK=$AOCLhome/lib
3130
SCALAPACK=$AOCLhome/lib
3231
FFTW3=$AOCLhome
33-
LIBRI=$INSTALL_DIR/LibRI-master
34-
LIBCOMM=$INSTALL_DIR/LibComm-master
32+
LIBRI=${LIBRI_ROOT}
33+
LIBCOMM=${LIBCOMM_ROOT}
3534
USE_CUDA=OFF # set ON to enable gpu-abacus
3635
# NEP_DIR=$INSTALL_DIR/NEP_CPU-main
3736
# LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch
@@ -83,4 +82,4 @@ cat << EOF
8382
Done!
8483
To use the installed ABACUS version
8584
You need to source ${TOOL}/abacus_env.sh first !
86-
EOF
85+
EOF

toolchain/build_abacus_gcc-aocl.sh

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,15 @@ BUILD_DIR=build_abacus_gcc_aocl
2222
rm -rf $BUILD_DIR
2323

2424
PREFIX=$ABACUS_DIR
25-
ELPA=$INSTALL_DIR/elpa-2025.06.001/cpu
26-
# ELPA=$INSTALL_DIR/elpa-2025.06.001/nvidia # for elpa-gpu
27-
CEREAL=$INSTALL_DIR/cereal-master/include/cereal
28-
LIBXC=$INSTALL_DIR/libxc-7.0.0
29-
RAPIDJSON=$INSTALL_DIR/rapidjson-master
25+
ELPA=${ELPA_ROOT}
26+
CEREAL=${CEREAL_ROOT}/include
27+
LIBXC=${LIBXC_ROOT}
28+
RAPIDJSON=${RAPIDJSON_ROOT}
3029
LAPACK=$AOCLhome/lib
3130
SCALAPACK=$AOCLhome/lib
3231
FFTW3=$AOCLhome
33-
LIBRI=$INSTALL_DIR/LibRI-master
34-
LIBCOMM=$INSTALL_DIR/LibComm-master
32+
LIBRI=${LIBRI_ROOT}
33+
LIBCOMM=${LIBCOMM_ROOT}
3534
USE_CUDA=OFF # set ON to enable gpu-abacus
3635
# NEP_DIR=$INSTALL_DIR/NEP_CPU-main
3736
# LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch
@@ -81,4 +80,4 @@ cat << EOF
8180
Done!
8281
To use the installed ABACUS version
8382
You need to source ${TOOL}/abacus_env.sh first !
84-
EOF
83+
EOF

toolchain/build_abacus_gcc-mkl.sh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,12 @@ BUILD_DIR=build_abacus_gcc_mkl
2222
rm -rf $BUILD_DIR
2323

2424
PREFIX=$ABACUS_DIR
25-
ELPA=$INSTALL_DIR/elpa-2025.06.001/cpu
26-
# ELPA=$INSTALL_DIR/elpa-2025.06.001/nvidia # for elpa-gpu
27-
CEREAL=$INSTALL_DIR/cereal-master/include/cereal
28-
LIBXC=$INSTALL_DIR/libxc-7.0.0
29-
RAPIDJSON=$INSTALL_DIR/rapidjson-master
30-
LIBRI=$INSTALL_DIR/LibRI-master
31-
LIBCOMM=$INSTALL_DIR/LibComm-master
25+
ELPA=${ELPA_ROOT}
26+
CEREAL=${CEREAL_ROOT}/include
27+
LIBXC=${LIBXC_ROOT}
28+
RAPIDJSON=${RAPIDJSON_ROOT}
29+
LIBRI=${LIBRI_ROOT}
30+
LIBCOMM=${LIBCOMM_ROOT}
3231
USE_CUDA=OFF # set ON to enable gpu-abacus
3332
# NEP_DIR=$INSTALL_DIR/NEP_CPU-main
3433
# LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch

toolchain/build_abacus_gnu.sh

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,15 @@ BUILD_DIR=build_abacus_gnu
2020
rm -rf $BUILD_DIR
2121

2222
PREFIX=$ABACUS_DIR
23-
LAPACK=$INSTALL_DIR/openblas-0.3.30/lib
24-
SCALAPACK=$INSTALL_DIR/scalapack-2.2.2/lib
25-
ELPA=$INSTALL_DIR/elpa-2025.06.001/cpu
26-
# ELPA=$INSTALL_DIR/elpa-2025.06.001/nvidia # for elpa-gpu
27-
FFTW3=$INSTALL_DIR/fftw-3.3.10
28-
CEREAL=$INSTALL_DIR/cereal-master/include/cereal
29-
LIBXC=$INSTALL_DIR/libxc-7.0.0
30-
RAPIDJSON=$INSTALL_DIR/rapidjson-master/
31-
LIBRI=$INSTALL_DIR/LibRI-master
32-
LIBCOMM=$INSTALL_DIR/LibComm-master
23+
LAPACK=${OPENBLAS_ROOT}/lib
24+
SCALAPACK=${SCALAPACK_ROOT}/lib
25+
ELPA=${ELPA_ROOT}
26+
FFTW3=${FFTW_ROOT}
27+
CEREAL=${CEREAL_ROOT}/include
28+
LIBXC=${LIBXC_ROOT}
29+
RAPIDJSON=${RAPIDJSON_ROOT}
30+
LIBRI=${LIBRI_ROOT}
31+
LIBCOMM=${LIBCOMM_ROOT}
3332
USE_CUDA=OFF # set ON to enable gpu-abacus
3433
# NEP_DIR=$INSTALL_DIR/NEP_CPU-main
3534
# LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch

toolchain/build_abacus_intel.sh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,12 @@ BUILD_DIR=build_abacus_intel
2222
rm -rf $BUILD_DIR
2323

2424
PREFIX=$ABACUS_DIR
25-
ELPA=$INSTALL_DIR/elpa-2024.05.001/cpu
26-
# ELPA=$INSTALL_DIR/elpa-2024.05.001/nvidia # for gpu-lcao
27-
CEREAL=$INSTALL_DIR/cereal-master/include
28-
LIBXC=$INSTALL_DIR/libxc-7.0.0
29-
RAPIDJSON=$INSTALL_DIR/rapidjson-master
30-
LIBRI=$INSTALL_DIR/LibRI-master
31-
LIBCOMM=$INSTALL_DIR/LibComm-master
25+
ELPA=${ELPA_ROOT}
26+
CEREAL=${CEREAL_ROOT}/include
27+
LIBXC=${LIBXC_ROOT}
28+
RAPIDJSON=${RAPIDJSON_ROOT}
29+
LIBRI=${LIBRI_ROOT}
30+
LIBCOMM=${LIBCOMM_ROOT}
3231
USE_CUDA=OFF # set ON to enable gpu-abacus
3332
# NEP_DIR=$INSTALL_DIR/NEP_CPU-main
3433
# LIBTORCH=$INSTALL_DIR/libtorch-2.1.2/share/cmake/Torch

0 commit comments

Comments
 (0)