计算化学公社

标题: 使用aocc+aocl从头编译使用openmpi的vasp6 [打印本页]

作者
Author:
biogon    时间: 2023-5-11 14:40
标题: 使用aocc+aocl从头编译使用openmpi的vasp6
本帖最后由 biogon 于 2024-1-29 10:33 编辑

看到坛里有用amd官方给的用spack编译vasp的速度不理想的帖子,写个从头用aocc+aocl编译vasp的教程。
现在先随便写点,很多细节等以后补充。
1. 安装aocc和aocl
在amd官网下载3.2.0版本的aocc和aocl并安装(细节有时间再写)
4.1/4.0版本可用于编译vasp6.3.2以后的版本
安装好后需要添加环境变量,使在命令行中输入flang/clang有输出

aocl需要下载基于aocc构建的版本

2. 编译基于aocc3.2.0的openmpi(4.1.4版本)
编译过程基本与正常编译openmpi无异,区别就是在configure时要添加
  1. CC=clang CXX=clang++ FC=flang
复制代码

3. 编译vasp
makefile(纯mpi)在下面已经提供,自己用只要修改里面的所有的
  1. /opt/apps/amd/aocl/3.2.0
复制代码
为自己安装的aocl路径即可
cpu架构选项
  1. VASP_TARGET_CPU ?= -march=znver2
复制代码
改成自己的cpu类型(1 2 3 or 4)

带VTST,VASPsol, Wannier90, HDF5可正常编译出,DFT-D4无法编译出

别的细节等有时间再补充


12.19更新
比较新的openmpi使用时configure需要使用编译器绝对路径,不然编译会报错
./configure CC=$编译器安装路径/aocc-compiler-4.1.0/bin/clang CXX=$编译器安装路径/aocc-compiler-4.1.0/bin/clang++ FC=$编译器安装路径/aocc-compiler-4.1.0/bin/flang --prefix=$安装路径

1.29
实测编译使用aocc4.1.0编译openmpi5.0.x,系统gnu编译器版本最低为11,否则编译就报错

作者
Author:
chever    时间: 2023-5-11 16:21
先来支持一波,马上编译试试看
作者
Author:
chever    时间: 2023-5-11 18:17
本帖最后由 chever 于 2023-5-11 18:18 编辑

请教一下,楼主编译的vasp版本是6.几。我编译6.2.0出现unknown argument: '-zenver2'
作者
Author:
biogon    时间: 2023-5-11 18:58
chever 发表于 2023-5-11 18:17
请教一下,楼主编译的vasp版本是6.几。我编译6.2.0出现unknown argument: '-zenver2'

6.3,不认的话这个注释掉应该就行了
作者
Author:
chever    时间: 2023-5-12 11:43
biogon 发表于 2023-5-11 18:58
6.3,不认的话这个注释掉应该就行了

感谢楼主,已成功编译。在手头算的一个体系里面比Intel Parallel Studio XE 2019编译的vasp.5.4.4+加速代码还要快20%
作者
Author:
wypkdhd    时间: 2023-5-24 22:37
chever 发表于 2023-5-12 11:43
感谢楼主,已成功编译。在手头算的一个体系里面比Intel Parallel Studio XE 2019编译的vasp.5.4.4+加速代 ...

请教下层主你的cpu是哪个?什么体系用多少个核快了百分之20?可否告知具体的电子步时间差异。
作者
Author:
chever    时间: 2023-5-25 09:14
wypkdhd 发表于 2023-5-24 22:37
请教下层主你的cpu是哪个?什么体系用多少个核快了百分之20?可否告知具体的电子步时间差异。

7R32,非严谨测试vasp 6.3版本下48核跑5*5*4 Ni(111),相比xe2020编译的电子步从20s减少到16s左右
作者
Author:
wuy069    时间: 2023-5-25 14:36
chever 发表于 2023-5-11 18:17
请教一下,楼主编译的vasp版本是6.几。我编译6.2.0出现unknown argument: '-zenver2'

VASP_TARGET_CPU ?= -march=znver2
作者
Author:
wypkdhd    时间: 2023-5-25 15:09
本帖最后由 wypkdhd 于 2023-5-25 15:10 编辑
chever 发表于 2023-5-25 09:14
7R32,非严谨测试vasp 6.3版本下48核跑5*5*4 Ni(111),相比xe2020编译的电子步从20s减少到16s左右

我邮箱wypkdhd@163.com,方便了把incar和poscar发我,我拿我的7543也测试下。方便了把您那边20s和16s两个outcat也发给我,我刚好测试完能补充下帖子。
作者
Author:
JiangZiya    时间: 2023-5-31 16:52
请问楼主,这个编译方法是针对AMD CPU的吗,Intel的CPU是否可用,如果可以,需要修改什么吗
作者
Author:
biogon    时间: 2023-5-31 20:34
JiangZiya 发表于 2023-5-31 16:52
请问楼主,这个编译方法是针对AMD CPU的吗,Intel的CPU是否可用,如果可以,需要修改什么吗

Intel的CPU用oneapi编译
作者
Author:
JiangZiya    时间: 2023-5-31 22:08
biogon 发表于 2023-5-31 20:34
Intel的CPU用oneapi编译

我参考卢天老师的帖子用oneAPI编译过VASP5.4.4,但是同样的方法编译VASP6.3的时候出问题,后来没折腾了
作者
Author:
Weldingspock    时间: 2023-6-1 21:23
JiangZiya 发表于 2023-5-31 22:08
我参考卢天老师的帖子用oneAPI编译过VASP5.4.4,但是同样的方法编译VASP6.3的时候出问题,后来没折腾了

不应该啊,oneapi编译vasp6.3非常简单?,你是报什么错
作者
Author:
JiangZiya    时间: 2023-6-4 18:27
Weldingspock 发表于 2023-6-1 21:23
不应该啊,oneapi编译vasp6.3非常简单?,你是报什么错

已经不记得了,有半年多没折腾了,后来一直用的5.4.4,准备有时间再尝试
作者
Author:
JUmao    时间: 2023-7-18 18:30
本帖最后由 JUmao 于 2023-7-18 18:31 编辑

你好,我正在尝试编译,目前openmpi已经编译完成了,但是在编译vasp的时候遇到了问题,想要参考你的makefile.include文件,但是作为一名新用户我无法下载,可以的话方便将makefile.include文件发送到我的邮箱中吗,962933072@@qq.com
作者
Author:
biogon    时间: 2023-7-19 15:35
JUmao 发表于 2023-7-18 18:30
你好,我正在尝试编译,目前openmpi已经编译完成了,但是在编译vasp的时候遇到了问题,想要参考你的makefil ...

能下了
作者
Author:
phxsuns    时间: 2023-7-20 23:08
楼主,啥时候能出一个详细的教程?用AOCC编译VASP总失败
作者
Author:
biogon    时间: 2023-7-21 08:59
phxsuns 发表于 2023-7-20 23:08
楼主,啥时候能出一个详细的教程?用AOCC编译VASP总失败

你先给出来报错在哪
作者
Author:
fantexi113    时间: 2023-8-30 14:12
AOCC和AOCL安装好了后,安装open MPI在配置时出错,提示
“*** Fortran compiler
checking whether we are using the GNU Fortran compiler... no
checking whether flang accepts -g... no
checking whether ln -s works... yes
checking if Fortran compiler works... no

configure: error: Could not run a simple Fortran program.  Aborting.”,

系统用的Rocky9.2,配置时用的“CC=clang CXX=clang++ FC=flang”
作者
Author:
biogon    时间: 2023-9-4 14:39
fantexi113 发表于 2023-8-30 14:12
AOCC和AOCL安装好了后,安装open MPI在配置时出错,提示
“*** Fortran compiler
checking whether we ar ...

编译器环境变量没生效?

作者
Author:
zmjsce    时间: 2023-12-4 13:51
biogon 发表于 2023-9-4 14:39
编译器环境变量没生效?

我也遇到了相同的报错提示,这时候 which clang是有正常输出路径的。source 环境变量也已经输入过了
作者
Author:
zmjsce    时间: 2023-12-4 17:03
fantexi113 发表于 2023-8-30 14:12
AOCC和AOCL安装好了后,安装open MPI在配置时出错,提示
“*** Fortran compiler
checking whether we ar ...

解决了,是缺少gfortran的原因。
yum install gcc-gfortran
作者
Author:
雾雨魔理沙    时间: 2023-12-20 17:37
本帖最后由 雾雨魔理沙 于 2023-12-20 17:44 编辑

求助:环境rocky linux9.3,amd 7950x

参考的贴子http://bbs.keinsci.com/thread-40792-1-1.html

which clang、clang++、flang都有路径显示,
编译时也写的绝对路径,如下:
  1. ./configure CC=/opt/aocc-compiler-4.1.0/bin/clang CXX=/opt/aocc-compiler-4.1.0/bin/clang++ FC=/opt/aocc-compiler-4.1.0/bin/flang --prefix=/opt/openmpi-5.0.0-aocc
复制代码


但是在编译openmpi-5.0.0和openmpi-4.1.6  时均报错。

错误显示:
*** C++ compiler and preprocessor
checking whether the compiler supports GNU C++... yes
checking whether /opt/aocc-compiler-4.1.0/bin/clang++ accepts -g... yes
checking for /opt/aocc-compiler-4.1.0/bin/clang++ option to enable C++11 features... none needed
checking dependency style of /opt/aocc-compiler-4.1.0/bin/clang++... gcc3
checking how to run the C++ preprocessor... /opt/aocc-compiler-4.1.0/bin/clang++ -E
checking if C and C++ are link compatible... no
**********************************************************************
* It appears that your C++ compiler is unable to link against object
* files created by your C compiler.  This generally indicates either
* a conflict between the options specified in CFLAGS and CXXFLAGS
* or a problem with the local compiler installation.  More
* information (including exactly what command was given to the
* compilers and what error resulted when the commands were executed) is
* available in the config.log file in this directory.
**********************************************************************
configure: error: C and C++ compilers are not link compatible.  Can not continue.

请问是什么原因呢,该如何解决?



作者
Author:
biogon    时间: 2023-12-27 14:53
雾雨魔理沙 发表于 2023-12-20 17:37
求助:环境rocky linux9.3,amd 7950x

参考的贴子http://bbs.keinsci.com/thread-40792-1-1.html

g++装了没
作者
Author:
雾雨魔理沙    时间: 2023-12-28 12:45
biogon 发表于 2023-12-27 14:53
g++装了没

已经解决,安装了c++和gfortran后就可以了
作者
Author:
ggshining    时间: 2024-1-22 11:27
雾雨魔理沙 发表于 2023-12-28 12:45
已经解决,安装了c++和gfortran后就可以了

我也到这个问题,而且which clang、clang++、flang、g++、c++、gfortran都有显示,都装了,还是有这个问题,难道是版本吗?系统也是rocky9, gcc11,求助
作者
Author:
ggshining    时间: 2024-1-22 12:03
fantexi113 发表于 2023-8-30 14:12
AOCC和AOCL安装好了后,安装open MPI在配置时出错,提示
“*** Fortran compiler
checking whether we ar ...

请问下这个问题解决了吗?怎么解决的呀
我也遇到这个问题了,一模一样的提示Fortran不成功,which gfortran、gcc、c++、g++都是有位置的
作者
Author:
neocc    时间: 2024-1-24 00:00
参考多个教程后编译还是不通过
https://www.bilibili.com/opus/870747530826088515
http://bbs.keinsci.com/forum.php ... 0792&highlight=aocc
https://www.vasp.at/forum/viewtopic.php?t=18794

用的是makefile.include.aocc_ompi_aocl作为makefile.include

编译过程中出现gfortran: error: unrecognized command line option ‘-fno-fortran-main’; did you mean ‘-fcx-fortran-rules’?
gfortran: error: unrecognized command line option ‘-Mbackslash’; did you mean ‘-fbackslash’?

我把makefile.include 中的 FFLAGS      = -w -fno-fortran-main -Mbackslash 改成了 FFLAGS      = -w -fcx-fortran-rules -fbackslash

先用make veryclean 再用make DEPS=1 -j64

然后就出现wave.mod找不到的报错
这些报错应该怎么解决呢
作者
Author:
雾雨魔理沙    时间: 2024-1-24 10:58
neocc 发表于 2024-1-24 00:00
参考多个教程后编译还是不通过
https://www.bilibili.com/opus/870747530826088515
http://bbs.keinsc ...

你可以把你的环境(如电脑配置,软件版本等)先写出来,可能这样会方便大家知道你的错误原因
作者
Author:
neocc    时间: 2024-1-24 13:08
本帖最后由 neocc 于 2024-1-24 21:26 编辑
雾雨魔理沙 发表于 2024-1-24 10:58
你可以把你的环境(如电脑配置,软件版本等)先写出来,可能这样会方便大家知道你的错误原因

好的

AMD EPYC 9654

CentOS Linux release 8.5.2111

vasp642+VTSTcodes198

作者
Author:
biogon    时间: 2024-1-26 14:53
neocc 发表于 2024-1-24 13:08
好的

AMD EPYC 9654

你先换个系统吧,别用这玩意了
作者
Author:
biogon    时间: 2024-1-26 14:57
ggshining 发表于 2024-1-22 12:03
请问下这个问题解决了吗?怎么解决的呀
我也遇到这个问题了,一模一样的提示Fortran不成功,which gfort ...

版本呢
作者
Author:
ggshining    时间: 2024-1-26 22:52
biogon 发表于 2024-1-26 14:57
版本呢

问题解决了,还是gcc的问题,装完aocc要用clang clang++ flang -v看下三者自动识别的gcc位置是否正确,我的就是flang自动找的gcc位置与前两个的gcc11不对应。把系统中多的gcc版本删掉或者重命名掉文件夹就好了
作者
Author:
biogon    时间: 2024-1-28 20:36
ggshining 发表于 2024-1-26 22:52
问题解决了,还是gcc的问题,装完aocc要用clang clang++ flang -v看下三者自动识别的gcc位置是否正确,我 ...

这个可以替换的
作者
Author:
云空    时间: 2024-2-13 13:42
chever 发表于 2023-5-12 11:43
感谢楼主,已成功编译。在手头算的一个体系里面比Intel Parallel Studio XE 2019编译的vasp.5.4.4+加速代 ...

大佬,请问下aocc编译后怎么运行呢?我编译成功了,但是运行不起来
作者
Author:
Weldingspock    时间: 2024-2-14 10:46
我用aocc+aocl编译的vasp.6.4.2比 intel oneapi编译的速度只快了5%左右。系统是Cent os 8,gnu版本是8.3.1,cpu是amd 9554。openmpi版本是4.1.6。最后运行vasp的命令直接是mpirun -np ** vasp_std。请问最后的运行命令需要改吗还是有一些别的参数需要修改?
作者
Author:
biogon    时间: 2024-2-19 12:24
Weldingspock 发表于 2024-2-14 10:46
我用aocc+aocl编译的vasp.6.4.2比 intel oneapi编译的速度只快了5%左右。系统是Cent os 8,gnu版本是8.3.1 ...

系统换新内核的,运行可以采用如下方法
  1. # Mapping of process to hardware resources
  2. # For AMD EPYC processors it is recommended to use a single rank per L3 cache
  3. # and set OMP_NUM_THREADS to the number of cores per L3 cache. Below is the example
  4. # for 4th Gen EPYC processors with 8 cores per L3 cache, hence using OMP_NUM_THREADS=8
  5. export NUM_CORES=$(nproc)
  6. export OMP_NUM_THREADS=8
  7. NUM_MPI_RANKS=$(( $NUM_CORES / $OMP_NUM_THREADS ))

  8. # Running VASP
  9. mpirun -np $NUM_MPI_RANKS --map-by ppr:1:l3cache:pe=$OMP_NUM_THREADS vasp_std
复制代码



作者
Author:
Jiongci-21    时间: 2024-7-23 00:59
biogon 发表于 2024-1-28 20:36
这个可以替换的

您好,请问安装aocc的时候怎么指定clang, clang++, 和flang选用已安装的更高版本的gcc呢?(非root用户)我load了gcc13.3的环境,但是./install.sh 得到的还是选择系统默认的gcc8。需要在install.sh里改动哪一部分吗?
由于我想装最新的openmpi,gcc8就一直报错。

(, 下载次数 Times of downloads: 31)

作者
Author:
biogon    时间: 2024-7-25 12:39
Jiongci-21 发表于 2024-7-23 00:59
您好,请问安装aocc的时候怎么指定clang, clang++, 和flang选用已安装的更高版本的gcc呢?(非root用户)我 ...

编译前export绝对路径
作者
Author:
Jiongci-21    时间: 2024-7-26 00:52
biogon 发表于 2024-7-25 12:39
编译前export绝对路径

超算管理员装了gcc13.3,我也module load了,which gcc, gcc -v,以及检查$PATH都是gcc13.3没有问题,然而安装的时候还是指向了gcc8,是不是Rocky Linux系统的一个bug。

  1. (base) [c.junchi@soursop aocc-compiler-4.2.0]$ which gcc
  2. /project/compute/compilers/gcc-13.3.0/bin/gcc
  3. (base) [c.junchi@soursop aocc-compiler-4.2.0]$ gcc -v
  4. Using built-in specs.
  5. COLLECT_GCC=gcc
  6. COLLECT_LTO_WRAPPER=/project/engineering/compilers/gcc-13.3.0/bin/../libexec/gcc/x86_64-pc-linux-gnu/13.3.0/lto-wrapper
  7. Target: x86_64-pc-linux-gnu
  8. Configured with: ../gcc-13.3.0/configure --prefix=/project/compute/compilers/gcc-13.3.0 --enable-languages=c,c++,fortran,go,objc,obj-c++
  9. Thread model: posix
  10. Supported LTO compression algorithms: zlib zstd
  11. gcc version 13.3.0 (GCC)
复制代码
  1. (base) [c.junchi@soursop aocc-compiler-4.2.0]$ echo -e "PATH:\n${PATH//:/\\n}\n"
  2. PATH:
  3. /home/research/c.junchi/opt/amd/AOCC-gcc13/aocc-compiler-4.2.0/share/opt-viewer
  4. /home/research/c.junchi/opt/amd/AOCC-gcc13/aocc-compiler-4.2.0/bin
  5. /project/compute/compilers/gcc-13.3.0/bin
复制代码
  1. (base) [c.junchi@soursop aocc-compiler-4.2.0]$ bash install.sh
  2. Successfully generated setenv file:/home/research/c.junchi/opt/amd/AOCC-gcc13/setenv_AOCC.sh

  3. AOCC installation is complete

  4. Compiler has been installed in following location:
  5. ~/opt/amd/AOCC-gcc13/aocc-compiler-4.2.0/bin/clang
  6. ~/opt/amd/AOCC-gcc13/aocc-compiler-4.2.0/bin/clang++
  7. ~/opt/amd/AOCC-gcc13/aocc-compiler-4.2.0/bin/flang

  8. Steps to setup AOCC:
  9.         (1) Setup AOCC environment by executing below command:
  10.                 source /home/research/c.junchi/opt/amd/AOCC-gcc13/setenv_AOCC.sh

  11.         (2) For location and version of AOCC's clang enter commands given below
  12.                 which clang
  13.                 clang -v

  14. (base) [c.junchi@soursop aocc-compiler-4.2.0]$ source /home/research/c.junchi/opt/amd/AOCC-gcc13/setenv_AOCC.sh
  15. (base) [c.junchi@soursop aocc-compiler-4.2.0]$ which clang
  16. ~/opt/amd/AOCC-gcc13/aocc-compiler-4.2.0/bin/clang
  17. (base) [c.junchi@soursop aocc-compiler-4.2.0]$ clang -v
  18. AMD clang version 16.0.3 (CLANG: AOCC_4.2.0-Build#89 2023_12_13)
  19. Target: x86_64-unknown-linux-gnu
  20. Thread model: posix
  21. InstalledDir: /home/research/c.junchi/opt/amd/AOCC-gcc13/aocc-compiler-4.2.0/bin
  22. Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/8
  23. Selected GCC installation: /usr/lib/gcc/x86_64-redhat-linux/8
复制代码




作者
Author:
biogon    时间: 2024-7-26 08:59
Jiongci-21 发表于 2024-7-26 00:52
超算管理员装了gcc13.3,我也module load了,which gcc, gcc -v,以及检查$PATH都是gcc13.3没有问题,然 ...

On RHEL and SLES systems, if you have multiple versions of devtoolset installed and the latest
version does not provide a GCC installation, use the compiler option -gcc-install-dir pointing to the
correct GCC version to be used. As an alternative solution for the RHEL systems, use the following
command to enable devtoolset version 9:
作者
Author:
zmjsce    时间: 2024-10-18 01:57
neocc 发表于 2024-1-24 00:00
参考多个教程后编译还是不通过
https://www.bilibili.com/opus/870747530826088515
http://bbs.keinsc ...

相同系统,相同配置,我也遇到了一样的报错




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3