MLIP 安装

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 导入 oneAPI 套件
module purge
module load intel-oneapi-compilers/2021.4.0
module load intel-oneapi-mpi/2021.4.0
module load intel-oneapi-mkl/2021.4.0
module load intel-oneapi-tbb/2021.4.0


# 编译 MLIP-2
git clone https://gitlab.com/ashapeev/mlip-2.git
cd mlip-2
./configure # 生成 make/config.mk 文件;会自动检测所在平台是否有 MPI 环境及编译器(GPU 或 Intel);可将 XXX_LIB 改成 Intel oneAPI 的编译器(icx、icpx、ifx)
make mlp # 生成 bin 和 obj 目录
make libinterface # 生成 lib 目录


# 编译 MLIP-2 与 LAMMPS 的接口
cd ..
git clone https://gitlab.com/ashapeev/interface-lammps-mlip-2.git
cd interface-lammps-mlip-2
cp ../mlip-2/lib/lib_mlip_interface.a .

# 在 preinstall.sh 脚本中添加需安装、卸载的 package
# preinstall.sh 作用:拷贝 mlip lib 到 LAMMPS lib 目录 和 USER-MLIP 到 LAMMPS src 目录
make yes-basic
# 注释 install.sh 脚本中的 make mpi-stubs 命令

# 编译写法;可在 make $TARGET -lgfortran 命令所在行后面添加 -jN 并行编译
./install.sh <path-to-lammps> <lammps-target>
# 示例
./install.sh ../lammps-29Aug2024 intel_cpu_intelmpi

# 其他 LAMMPS target
oneapi # 可使用这个
g++_mpich
mpi
g++_serial
serial

# 检查
./intel_cpu_intelmpi -h # Pair styles 会多出 mlip

相关问题

1
2
3
4
5
6
/usr/bin/ld: CMakeFiles/mlp.dir/dev_src/mlp/dev_self_test.cpp.o:/home/XXX/opt/mlip-2/dev_src/mlp/../combined_any_local_mlip.h:63: more undefined references to `vtable for CombinedAnyLocalMLIP follow
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/mlp.dir/build.make:650: mlp] Error 1
make[1]: *** [CMakeFiles/Makefile2:874: CMakeFiles/mlp.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
1
2
3
4
5
6
7
8
9
10
/usr/bin/ld: liblammps.a(pair_MLIP.cpp.o): in function `LAMMPS_NS::PairMLIP::~PairMLIP()':
/home/XXX/opt/lammps-29Aug2024/src/pair_MLIP.cpp:67: undefined reference to `MLIP_finalize()'
/usr/bin/ld: liblammps.a(pair_MLIP.cpp.o): in function `LAMMPS_NS::PairMLIP::compute(int, int)':
/home/XXX/opt/lammps-29Aug2024/src/pair_MLIP.cpp:85: undefined reference to `MLIP_calc_nbh(int, int*, int*, int**, int, int, double**, int*, double**, double&, double*, double**)'
/usr/bin/ld: /home/XXX/opt/lammps-29Aug2024/src/pair_MLIP.cpp:123: undefined reference to `MLIP_calc_cfg(int, double*, double**, int*, int*, double&, double**, double*)'
/usr/bin/ld: liblammps.a(pair_MLIP.cpp.o): in function `LAMMPS_NS::PairMLIP::init_style()':
/home/XXX/opt/lammps-29Aug2024/src/pair_MLIP.cpp:211: undefined reference to `MLIP_init(char const*, char const*, int, double&, int&)'
/usr/bin/ld: /home/XXX/opt/lammps-29Aug2024/src/pair_MLIP.cpp:209: undefined reference to `MLIP_init(char const*, char const*, int, double&, int&)'
/usr/bin/ld: /home/XXX/opt/lammps-29Aug2024/src/pair_MLIP.cpp:206: undefined reference to `MLIP_finalize()'
collect2: error: ld returned 1 exit status
  • 不建议在 Arm 平台编译,可 module load 的程序少且版本旧;不建议在 Manager 编译,Intel 版本较老

  • preinstall.sh 中添加 make yes-STUBS,编译报错:需注释 make yes-STUBS

1
2
3
4
../mpi.cpp:18:24: fatal error: ../version.h: No such file or directory
#include "../version.h"
^
compilation terminated.
  • tbbmalloc 报错:还需导入 intel-oneapi-tbb/2021.4.0
1
2
ld: cannot find -ltbbmalloc
make[1]: *** [Makefile:98: ../lmp_intel_cpu_intelmpi] Error 1
  • mpi-stubs 放在 intel_cpu_intelmpi 前的作用:平台中若无 MPI 环境,提供一个虚拟的 MPI 库,“欺骗” 需要 MPI 环境的包,使其正常编译;不会对其造成影响(还是建议将其注释掉)
1
2
make mpi-stubs
make intel_cpu_intelmpi -lgfortran