You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: toolchain/README.md
+81-33Lines changed: 81 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# The ABACUS Toolchain
2
2
3
-
Version 2024.3
3
+
Version 2025.1
4
4
5
5
## Author
6
6
@@ -27,12 +27,13 @@ and give setup files that you can use to compile ABACUS.
27
27
-[x] Support for [LibRI](https://github.com/abacusmodeling/LibRI) by submodule or automatic installation from github.com (but installed LibRI via `wget` seems to have some problem, please be cautious)
28
28
-[x] A mirror station by Bohrium database, which can download CEREAL, LibNPY, LibRI and LibComm by `wget` in China Internet.
29
29
-[x] Support for GPU compilation, users can add `-DUSE_CUDA=1` in builder scripts.
30
+
-[x] Support for AMD compiler and math lib `AOCL` and `AOCC` (not fully complete due to flang and AOCC-ABACUS compliation error)
30
31
-[ ] Change the downloading url from cp2k mirror to other mirror or directly downloading from official website. (doing)
32
+
-[ ] Support a JSON or YAML configuration file for toolchain, which can be easily modified by users.
31
33
-[ ] A better README and Detail markdown file.
32
34
-[ ] Automatic installation of [DEEPMD](https://github.com/deepmodeling/deepmd-kit).
33
35
-[ ] Better compliation method for ABACUS-DEEPMD and ABACUS-DEEPKS.
34
36
-[ ] Modulefile generation scripts.
35
-
-[ ] Support for AMD compiler and math lib like `AOCL` and `AOCC`
36
37
37
38
38
39
## Usage Online & Offline
@@ -49,6 +50,8 @@ There are also well-modified script to run *install_abacus_toolchain.sh* for `gn
49
50
> ./toolchain_gnu.sh
50
51
# for intel-mkl
51
52
> ./toolchain_intel.sh
53
+
# for amd aocc-aocl
54
+
> ./toolchain_amd.sh
52
55
# for intel-mkl-mpich
53
56
> ./toolchain_intel-mpich.sh
54
57
```
@@ -94,7 +97,7 @@ The above station will be updated handly but one should notice that the version
94
97
If one want to install ABACUS by toolchain OFFLINE,
95
98
one can manually download all the packages from [cp2k-static/download](https://www.cp2k.org/static/downloads) or official website
96
99
and put them in *build* directory by formatted name
97
-
like *fftw-3.3.10.tar.gz*, or *openmpi-5.0.5.tar.bz2*,
100
+
like *fftw-3.3.10.tar.gz*, or *openmpi-5.0.6.tar.bz2*,
98
101
then run this toolchain.
99
102
All package will be detected and installed automatically.
100
103
Also, one can install parts of packages OFFLINE and parts of packages ONLINE
@@ -109,19 +112,23 @@ just by using this toolchain
109
112
110
113
The needed dependencies version default:
111
114
112
-
-`cmake` 3.30.0
115
+
-`cmake` 3.31.2
113
116
-`gcc` 13.2.0 (which will always NOT be installed, But use system)
114
-
-`OpenMPI`4.1.6 (5.0.5 can be used but have some problem in OpenMP parallel computation in ELPA)
115
-
-`MPICH` 4.2.2
117
+
-`OpenMPI`5.0.6 (Version 5 OpenMPI is good but will have compability problem, user can manually downarade to Version 4 in toolchain scripts)
118
+
-`MPICH` 4.3.0
116
119
-`OpenBLAS` 0.3.28 (Intel toolchain need `get_vars.sh` tool from it)
117
120
-`ScaLAPACK` 2.2.1 (a developing version)
118
121
-`FFTW` 3.3.10
119
-
-`LibXC`6.2.2
120
-
-`ELPA`2024.05.001
122
+
-`LibXC`7.0.0
123
+
-`ELPA`2025.01.001
121
124
-`CEREAL` 1.3.2
122
125
-`RapidJSON` 1.1.0
123
-
And Intel-oneAPI need user or server manager to manually install from Intel.
Dependencies below are optional, which is NOT installed by default:
127
134
@@ -130,7 +137,7 @@ Dependencies below are optional, which is NOT installed by default:
130
137
-`LibRI` 0.2.0
131
138
-`LibComm` 0.1.1
132
139
133
-
Users can install them by using `--with-*=install` in toolchain*.sh, which is `no` in default.
140
+
Users can install them by using `--with-*=install` in toolchain*.sh, which is `no` in default. Also, user can specify the absolute path of the package by `--with-*=path/to/package` in toolchain*.sh to allow toolchain to use the package.
134
141
> Notice: LibRI, LibComm and Libnpy is on actively development, you should check-out the package version when using this toolchain. Also, LibRI and LibComm can be installed by github submodule, that is also work for libnpy, which is more recommended.
135
142
136
143
Users can easily compile and install dependencies of ABACUS
@@ -151,6 +158,8 @@ If compliation is successful, a message will be shown like this:
151
158
> ./build_abacus_gnu.sh
152
159
> To build ABACUS by intel-toolchain, just use:
153
160
> ./build_abacus_intel.sh
161
+
> To build ABACUS by amd-toolchain in gcc-aocl, just use:
162
+
> ./build_abacus_amd.sh
154
163
> or you can modify the builder scripts to suit your needs.
155
164
```
156
165
@@ -180,11 +189,70 @@ or you can also do it in a more completely way:
180
189
181
190
## Common Problems and Solutions
182
191
183
-
### LibRI and LibComm for EXX
192
+
### Intel-oneAPI problem
193
+
194
+
#### OneAPI 2025.0 problem
195
+
196
+
Generally, OneAPI 2025.0 can be useful to compile basic function of ABACUS, but one will encounter compatible problem related to something. Here is the treatment
197
+
- related to rapidjson:
198
+
-- Not to use rapidjson in your toolchain
199
+
-- or use the master branch of [RapidJSON](https://github.com/Tencent/rapidjson)
200
+
- related to LibRI: not to use LibRI or downgrade your OneAPI.
201
+
202
+
#### ELPA problem via Intel-oneAPI toolchain in AMD server
203
+
204
+
The default compiler for Intel-oneAPI is `icpx` and `icx`, which will cause problem when compling ELPA in AMD server. (Which is a problem and needed to have more check-out)
205
+
206
+
The best way is to change `icpx` to `icpc`, `icx` to `icc`. user can manually change it in *toolchain_intel.sh* via `--with-intel-classic=yes`
207
+
208
+
Notice: `icc` and `icpc` from Intel Classic Compiler of Intel-oneAPI is not supported for 2024.0 and newer version. And Intel-OneAPI 2023.2.0 can be found in QE website. You need to download Base-toolkit for MKL and HPC-toolkit for MPi and compiler for Intel-OneAPI 2023.2.0, while in Intel-OneAPI 2024.x, only the HPC-toolkit is needed.
209
+
210
+
You can get Intel-OneAPI in [QE-managed website](https://pranabdas.github.io/espresso/setup/hpc/#installing-intel-oneapi-libraries), and use this code to get Intel oneAPI Base Toolkit and HPC Toolkit:
Related discussion here [#4976](https://github.com/deepmodeling/abacus-develop/issues/4976)
217
+
218
+
#### link problem in early 2023 version oneAPI
219
+
220
+
Sometimes Intel-oneAPI have problem to link `mpirun`,
221
+
which will always show in 2023.2.0 version of MPI in Intel-oneAPI.
222
+
Try `source /path/to/setvars.sh` or install another version of IntelMPI may help.
223
+
224
+
which is fixed in 2024.0.0 version of Intel-oneAPI,
225
+
And will not occur in Intel-MPI before 2021.10.0 (Intel-oneAPI before 2023.2.0)
226
+
227
+
More problem and possible solution can be accessed via [#2928](https://github.com/deepmodeling/abacus-develop/issues/2928)
228
+
229
+
### AMD AOCC-AOCL problem
230
+
231
+
You cannot use AOCC to complie abacus now, see [#5982](https://github.com/deepmodeling/abacus-develop/issues/5982) .
232
+
233
+
However, use AOCC-AOCL to compile dependencies is permitted and usually get boosting in ABACUS effciency. But you need to get rid of `flang` while compling ELPA. Toolchain itself help you make this `flang` shade in default, and you can manully use `flang` by setting `--with-flang=yes` in `toolchain_amd.sh` to have a try.
184
234
185
-
- GCC toolchain with OpenMPI cannot compile LibComm v0.1.1 due to the different MPI variable type from MPICH and IntelMPI, see discussion here [#5033](https://github.com/deepmodeling/abacus-develop/issues/5033), you can switch to GCC-MPICH or Intel toolchain
235
+
Notice: ABACUS via GCC-AOCL in AOCC-AOCL toolchain have no application with DeePKS, DeePMD and LibRI.
236
+
237
+
### OpenMPI problem
238
+
239
+
#### in EXX and LibRI
240
+
241
+
- GCC toolchain with OpenMPI cannot compile LibComm v0.1.1 due to the different MPI variable type from MPICH and IntelMPI, see discussion here [#5033](https://github.com/deepmodeling/abacus-develop/issues/5033), you can try use a newest branch of LibComm by
. yet another is switching to GCC-MPICH or Intel toolchain
186
250
- It is recommended to use Intel toolchain if one wants to include EXX feature in ABACUS, which can have much better performance and can use more than 16 threads in OpenMP parallelization to accelerate the EXX process.
187
251
252
+
#### OpenMPI-v5
253
+
254
+
OpenMPI in version 5 has huge update, lead to compatibility problem. If one wants to use the OpenMPI in version 4 (4.1.6), one can specify `--with-openmpi-4th=yes` in *toolchain_gnu.sh*
255
+
188
256
### GPU version of ABACUS
189
257
190
258
For GPU version of ABACUS (do not GPU version installer of ELPA, which is still doing work), add following options in build*.sh:
@@ -242,26 +310,6 @@ When you encounter problem like `GLIBCXX_3.4.29 not found`, it is sure that your
242
310
243
311
After my test, you need `gcc`>11.3.1 to enable deepmd feature in ABACUS.
244
312
245
-
### Intel-oneAPI problem
246
-
247
-
#### ELPA problem via Intel-oneAPI toolchain in AMD server
248
-
249
-
The default compiler for Intel-oneAPI is `icpx` and `icx`, which will cause problem when compling ELPA in AMD server. (Which is a problem and needed to have more check-out)
250
-
251
-
The best way is to change `icpx` to `icpc`, `icx` to `icc`. user can manually change it in toolchain*.sh via `--with-intel-classic=yes`
252
-
253
-
Notice: `icc` and `icpc` from Intel Classic Compiler of Intel-oneAPI is not supported for 2024.0 and newer version. And Intel-OneAPI 2023.2.0 can be found in website. See discussion here [#4976](https://github.com/deepmodeling/abacus-develop/issues/4976)
254
-
255
-
#### link problem in early 2023 version oneAPI
256
-
257
-
Sometimes Intel-oneAPI have problem to link `mpirun`,
258
-
which will always show in 2023.2.0 version of MPI in Intel-oneAPI.
259
-
Try `source /path/to/setvars.sh` or install another version of IntelMPI may help.
260
-
261
-
which is fixed in 2024.0.0 version of Intel-oneAPI,
262
-
And will not occur in Intel-MPI before 2021.10.0 (Intel-oneAPI before 2023.2.0)
263
-
264
-
More problem and possible solution can be accessed via [#2928](https://github.com/deepmodeling/abacus-develop/issues/2928)
0 commit comments