计算化学公社

标题: EPYC9654使用aocc+aocl编译的openmpi和vasp的问题 [打印本页]

作者
Author:
lue611    时间: 2024-3-7 15:54
标题: EPYC9654使用aocc+aocl编译的openmpi和vasp的问题
本帖最后由 lue611 于 2024-3-7 17:23 编辑

双路9654,系统rocky linux 9.2,参考论坛使用AOCC+AOCL编译,遇到的问题和下面这个帖子几乎一模一样:
http://bbs.keinsci.com/thread-42168-1-1.html

一开始AOCC+AOCL正常,which clang之类的也正常

问题1:遇到了帖子里的第二个问题,报错也一致,后面更换了openMPI 4.1.6才解决,该如何安装5.0.0版本?
报错:
make[2]: 进入目录“/opt/openmpi-5.0.0/ompi/tools/ompi_info”
  CC       ompi_info.o
  CC       param.o
  CCLD     ompi_info
ld.lld: error: undefined reference due to --no-allow-shlib-undefined: __extendhfsf2
>>> referenced by ../../../ompi/.libs/libmpi.so
ld.lld: error: undefined reference due to --no-allow-shlib-undefined: __truncsfhf2
>>> referenced by ../../../ompi/.libs/libmpi.so
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Makefile:1472:ompi_info] 错误 1
make[2]: 离开目录“/opt/openmpi-5.0.0/ompi/tools/ompi_info”
make[1]: *** [Makefile:2798:all-recursive] 错误 1
make[1]: 离开目录“/opt/openmpi-5.0.0/ompi”
make: *** [Makefile:1532:all-recursive] 错误 1



问题2:之后的vasp编译正常,但是make test -j全部报错,就截取了最后一些报错信息:

exiting run_vasp_nc
exiting run_recipe Tl_z_RPR
./runtest: line 852: OUTCAR: No such file or directory
./runtest: line 852: OUTCAR: No such file or directory
(standard_in) 2: syntax error
spin-orbit splitting in the p shell is
./runtest: line 471: OUTCAR: No such file or directory
ERROR: the test yields different results for the energies, please check
-----------------------------------------------------------------------
paste: energy_outcar: No such file or directory
ERROR: compare_numbertable can't find file energy_outcar
./runtest: line 593: OUTCAR: No such file or directory
ERROR: the test yields different results for the forces, please check
---------------------------------------------------------------------
cat: force: No such file or directory
ERROR: compare_numbertable can't find file force
grep: OUTCAR: No such file or directory
Warning: ieee_inexact is signaling
FORTRAN STOP
ERROR: the stress tensor is different, please check
---------------------------------------------------
---------------------------------------------------------------------------
WARNING: Number of rows and/or columns in files stress and stress.ref
  disagree.
Please check! Continuing using the smaller number of columns and/or rows.
---------------------------------------------------------------------------

==================================================================
SUMMARY:
==================================================================
The following tests failed, please check the output file manually:
andersen_nve andersen_nve_constrain_fixed andersen_nve_constrain_fixed_RPR andersen_nve_RPR andersen_nvt andersen_nvt_fixed andersen_nvt_RPR bulk_GaAs_ACFDT bulk_GaAs_ACFDT_RPR bulk_GaAs_G0W0_sym bulk_GaAs_G0W0_sym_RPR bulk_GaAs_scGW0_ALGO=D_sym bulk_GaAs_scGW0_ALGO=D_sym_RPR bulk_GaAs_scGW0_sym bulk_GaAs_scGW0_sym_RPR bulk_GaAs_scGW_ALGO=D_sym bulk_GaAs_scGW_ALGO=D_sym_RPR bulk_GaAs_scGW_sym bulk_GaAs_scGW_sym_RPR bulk_InP_SOC_DFT_ISYM=2 bulk_InP_SOC_DFT_ISYM=2_RPR bulk_InP_SOC_DFT_ISYM=3 bulk_InP_SOC_DFT_ISYM=3_RPR bulk_InP_SOC_G0W0_sym bulk_InP_SOC_G0W0_sym_RPR bulk_InP_SOC_PBE0_nosym bulk_InP_SOC_PBE0_sym bulk_InP_SOC_PBE0_sym_RPR bulk_SiO2_elastic_properties_ibrion6 bulk_SiO2_elastic_properties_ibrion6_RPR bulk_SiO2_elastic_properties_ibrion8 bulk_SiO2_elastic_properties_ibrion8_RPR bulk_SiO2_HSE bulk_SiO2_HSE_RPR bulk_SiO2_LOPTICS bulk_SiO2_LOPTICS_RPR bulk_SiO2_LPEAD bulk_SiO2_LPEAD_RPR bulk_SiO2_PBE0 bulk_SiO2_PBE0_RPR CrS CrS_RPR GaAs_LEPSILON GaAs_LEPSILON_LPEAD GaAs_LEPSILON_LPEAD_RPR GaAs_LEPSILON_RPR H2_bare_HF HEG_333_LW md_8_Cu_IALGO=38 md_8_Cu_IALGO=38_RPR md_8_Cu_IALGO=48 md_8_Cu_IALGO=48_RPR NiOLDAU=1 NiOLDAU=1_RPR NiOLDAU=2 NiOLDAU=2_RPR NiOsLDAU=2_x NiOsLDAU=2_x_RPR NiOsLDAU=2_y NiOsLDAU=2_y_RPR NiOsLDAU=2_z NiOsLDAU=2_z_RPR SiC8_GW0R SiC_ACFDTR_T SiC_HSE06_ALGO=A SiC_HSE06_ALGO=A_RPR SiC_HSE06_ALGO=D SiC_HSE06_ALGO=D_RPR SiC_phon SiC_phon_RPR Tl_x Tl_x_RPR Tl_y Tl_y_RPR Tl_z Tl_z_RPR
make[1]: *** [makefile:21: test] Error 1
make[1]: Leaving directory '/home/ps/SOFTWARE/ALL_VASP_AOCC/VASP_AOCC_AOCL/vasp.6.4.2/testsuite'
make: *** [makefile:36: test] Error 2

问题3:自己算了个结构优化的例子,也和帖子一样,需要晶格常数改到小数点3位才能正常计算,但是完成后也出问题,从最后一步算完后.out文件显示这个:
  15 F= -.10715863E+04 E0= -.10715863E+04  d E =-.111778E-01  mag=    64.0000
curvature:  -0.81 expect dE=-0.666E-02 dE for cont linesearch -0.118E-04
trial: gam= 0.40823 g(F)=  0.818E-02 g(S)=  0.000E+00 ort = 0.702E-03 (trialstep = 0.115E+01)
search vector abs. value=  0.144E-01
reached required accuracy - stopping structural energy minimisation
writing wavefunctions

本来正常到这里就应该结束了,但是输出了一堆下面这个(四行一个循环输出了一堆,我只是取了两个),这是什么原因
Warning: ieee_invalid is signaling
Warning: ieee_underflow is signaling
Warning: ieee_inexact is signaling
FORTRAN STOP
Warning: ieee_invalid is signaling
Warning: ieee_underflow is signaling
Warning: ieee_inexact is signaling
FORTRAN STOP


最后说一下,9654性价比固然高,但是vasp用起来各种问题为啥有些人还推荐啊,检查了好几遍,已经仔细地跟着帖子编译了还是有问题,是哪里还有隐藏的编译设置没讲吗。。。还没买机子的,贵就贵点,老老实实用intel吧




作者
Author:
Entropy.S.I    时间: 2024-3-7 22:53
提醒一下,现在配一台跑VASP能打败双路9654的机器,只需要花1万出头。建议把双路9654用在该用的地方,例如CP2K、Gaussian、ORCA。
作者
Author:
Weldingspock    时间: 2024-3-8 10:25
问题1:我在哪个帖子中看到过,需要你的gcc高于某个版本才可以用openmpi 5.0.0
问题2:不会
问题3:不会,但是我也遇到了一样的问题。因为能正常计算所以就没管
作者
Author:
gog    时间: 2024-3-8 10:48
Entropy.S.I 发表于 2024-3-7 22:53
提醒一下,现在配一台跑VASP能打败双路9654的机器,只需要花1万出头。建议把双路9654用在该用的地方,例如C ...

vasp基本功能编译成功,比较容易。但不同功能,需要不同的编译脚本。硬件支持不好,很麻烦的。这个可难了。
作者
Author:
lue611    时间: 2024-3-8 13:45
本帖最后由 lue611 于 2024-3-8 14:31 编辑
Weldingspock 发表于 2024-3-8 10:25
问题1:我在哪个帖子中看到过,需要你的gcc高于某个版本才可以用openmpi 5.0.0
问题2:不会
问题3:不会 ...

我本来想将就算得了,但是发现结构优化速度挺好,跑md时速度奇慢。。。
顺便说下,我测了下gcc13.2还是没法装5.0.0,后面我想试用oneapi装还因为gcc的原因报错了。。。淦

作者
Author:
喝杯热水    时间: 2024-3-8 14:28
我有一台7950x,跟9654算是同一代产品。我用过CP2K的toolchain带来的依赖编译VASP,效果还不错,跟intel服务器在计算精度上并没有差别。速度上也很合理。
作者
Author:
Picardo    时间: 2024-3-11 20:06
Entropy.S.I 发表于 2024-3-7 22:53
提醒一下,现在配一台跑VASP能打败双路9654的机器,只需要花1万出头。建议把双路9654用在该用的地方,例如C ...

1w多的是什么配置啊,有没有详说的帖子
作者
Author:
rogerjun    时间: 2024-4-13 18:15
本帖最后由 rogerjun 于 2024-4-14 22:36 编辑

问题1:clang -v检查一下clang链接的gcc版本,我测试了一下,clang链接到gcc-12时可正常安装openmpi 5.0.x
问题3:解决方案:https://www.vasp.at/forum/viewtopic.php?t=19390
更新:问题3:选择oflag -O3优化或者编译ompi-omp版本这两种方式下,vasp运行正常。测试了一下,ompi-omp版本比纯mpi版本略快一丢丢

作者
Author:
ginlpein    时间: 2024-5-11 12:24
Weldingspock 发表于 2024-3-8 10:25
问题1:我在哪个帖子中看到过,需要你的gcc高于某个版本才可以用openmpi 5.0.0
问题2:不会
问题3:不会 ...

您好,关于楼主问题1的第三个报错您有头绪吗?
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
我用openmpi5.0.3填了一堆软件环境,make时候最后卡着了,对于这个报错我完全没有头绪,网上也搜不到咋个办法,请问您对这个报错大概和哪块相关有头绪吗?或者知道如何解决这个报错完成make
作者
Author:
ginlpein    时间: 2024-5-11 12:27
rogerjun 发表于 2024-4-13 18:15
问题1:clang -v检查一下clang链接的gcc版本,我测试了一下,clang链接到gcc-12时可正常安装openmpi 5.0.x
...

请问,楼主make时候的第三个报错您有头绪吗?
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
我卡在这好久,搜不到这个报错属于哪个方面,不知道该从哪着手
作者
Author:
rogerjun    时间: 2024-5-12 22:36
本帖最后由 rogerjun 于 2024-5-12 23:19 编辑
ginlpein 发表于 2024-5-11 12:27
请问,楼主make时候的第三个报错您有头绪吗?
clang-16: error: linker command failed with exit code  ...

我这边的情况是,安装openmpi5.0.2时,错误信息指明clang链接到的gcc版本较低,查看clang -v发现链接的gcc版本为11,在安装了gcc-toolset-12后,clang版本链接到了gcc12,报错就解决了
更新:我看了层主的一些回复的帖子,你需要先clang -v看一下你的clang链接到何版本的gcc了,我这边的情况是gcc11不行,12可。请注意安装了gcc-toolset之后你需要load这个环境,使用scl enable gcc-toolset-xx bash或者写个module再load都行,主要是需要改变clang -v链接的gcc版本。供参考

作者
Author:
ginlpein    时间: 2024-5-13 15:05
rogerjun 发表于 2024-5-12 22:36
我这边的情况是,安装openmpi5.0.2时,错误信息指明clang链接到的gcc版本较低,查看clang -v发现链接的gc ...

您好,关于gcc版本切换问题可以请您不吝赐教吗?
我之前也有注意到gcc版本问题,可惜yum库里只有gcc11和gcc-Toolset-13。
gcc11版make失败以后,我参考资料使用scl enable gcc-Toolset-13 bash来切换gcc版本。
但使用scl enable gcc-Toolset-13 bash替换后,我发现gcc --version显示使用版本确实替换到13了。但重新安装aocc后,clang -v关联的依旧是已安装gcc路径依旧指向11的版本路径,请问clang关联的gcc版本您是如何修改的?
为了尝试解决这个我甚至考虑去gnu官网下载gcc13版来源码编译安装,可惜源码编译也出毛病了。
作者
Author:
rogerjun    时间: 2024-5-13 16:52
本帖最后由 rogerjun 于 2024-5-13 17:00 编辑
ginlpein 发表于 2024-5-13 15:05
您好,关于gcc版本切换问题可以请您不吝赐教吗?
我之前也有注意到gcc版本问题,可惜yum库里只有gcc11和 ...

是的,rockylinux 9.3在gcc-13加载后clang依然会依赖11的gcc(这一问题我这边也复现了,很诡异),但是如果安装了gcc-toolset-12后clang却会自动指向gcc-12。如果你那边不行,可以尝试以下命令:alias clang='clang --gcc-install-dir=/opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13' ,保险起见,flang clang++ clang-16等也做相似操作,应该是可以将clang链接转到想要的gcc版本上的。供参考
另外,rocklinux 9.3是可以安装gcc-toolset-12的

作者
Author:
ginlpein    时间: 2024-5-18 00:29
rogerjun 发表于 2024-5-13 16:52
是的,rockylinux 9.3在gcc-13加载后clang依然会依赖11的gcc(这一问题我这边也复现了,很诡异),但是如 ...

感谢您的耐心解答,切gcc-toolset-12确实就解决问题了。Rocky9.3的gcc版本切换真是迷之错误。
后续想问您一下,您后续基于aocc,aocl + openmpi编译VASP是否出现关于以下gfortran相关的问题?
gfortran: error: unrecognized command-line option ‘-fno-fortran-main’
gfortran: error: unrecognized command-line option ‘-Mbackslash’; did you mean ‘-fbackslash’?
make[2]: *** [makefile:167: c2f_interface.o] Error 1
make[2]: Leaving directory '/opt/vasp.6.4.2/build/std'
cp: cannot stat 'vasp': No such file or directory
make[1]: *** [makefile:129: all] Error 1
make[1]: Leaving directory '/opt/vasp.6.4.2/build/std'
make: *** [makefile:17: std] Error 2

我搜索相关信息,本论坛和VASP论坛里有提到类似错误可能是环境变量问题导致mpif90用的不是aocc指向的mpif90。我的环境变量配置完成后,“which mpif90"和”mpif90 -show“的输出都指向了openmpi的安装位置,但是“mpif90 -v”指向了gfortran的安装位置,不知道是不是配置问题?感觉按照各类教程mpif90的环境变量设置应该是生效的。
以下是我各命令输出情况:
  1. $ which mpif90
  2. /opt/openmpi-5.0.3/bin/mpif90

  3. $ mpif90 -show
  4. gfortran -I/opt/openmpi-5.0.3/include -I/opt/openmpi-5.0.3/lib -L/opt/openmpi-5.0.3/lib -Wl,-rpath -Wl,/opt/openmpi-5.0.3/lib -Wl,--enable-new-dtags -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi

  5. $ mpif90 -v
  6. Using built-in specs.
  7. COLLECT_GCC=/opt/rh/gcc-toolset-12/root/usr/bin/gfortran
  8. COLLECT_LTO_WRAPPER=/opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/lto-wrapper
  9. OFFLOAD_TARGET_NAMES=nvptx-none
  10. OFFLOAD_TARGET_DEFAULT=1
  11. Target: x86_64-redhat-linux
  12. Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/gcc-toolset-12/root/usr --mandir=/opt/rh/gcc-toolset-12/root/usr/share/man --infodir=/opt/rh/gcc-toolset-12/root/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-12.2.1-20221121/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none --without-cuda-driver --enable-offload-defaulted --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_64=x86-64-v2 --with-arch_32=x86-64 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
  13. Thread model: posix
  14. Supported LTO compression algorithms: zlib zstd
  15. gcc version 12.2.1 20221121 (Red Hat 12.2.1-7) (GCC)
复制代码

作者
Author:
rogerjun    时间: 2024-5-18 14:54
ginlpein 发表于 2024-5-18 00:29
感谢您的耐心解答,切gcc-toolset-12确实就解决问题了。Rocky9.3的gcc版本切换真是迷之错误。
后续想问 ...

我后续就都是正常安装了。感觉你这个环境变量设置有些问题,就感觉编译出来的openmpi不是依赖clang、clang++ flang编译的,以下是我的“mpif90 -show”信息:
$ mpif90 -show
flang -I/opt/OpenMPI/5.0.3/aocc-4.2.0_gcc-toolset-12/include -I/opt/OpenMPI/5.0.3/aocc-4.2.0_gcc-toolset-12/lib -L/opt/OpenMPI/5.0.3/aocc-4.2.0_gcc-toolset-12/lib -Wl,-rpath -Wl,/opt/OpenMPI/5.0.3/aocc-4.2.0_gcc-toolset-12/lib -Wl,--enable-new-dtags -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi
作者
Author:
ginlpein    时间: 2024-5-18 22:34
rogerjun 发表于 2024-5-18 14:54
我后续就都是正常安装了。感觉你这个环境变量设置有些问题,就感觉编译出来的openmpi不是依赖clang、clan ...

您好,感谢耐心解答!
我看到您安装路径里面有aocc-4.2.0_gcc-toolset-12这一级,请问这一级是openmpi编译过程中自动生成的吗?还是您安装gcc-toolset-12时候搞的?
另外,环境变量方面您在openmpi编译前是否有什么特别的调整?
因为我的整个编译用的机子是在刚装完Rocky9.3 DVD-ISO镜像上搞得,aocc和aocl用的rpm包安装,gcc gfortran g++都是因为openmpi根据openmpi编译报错的信息才用yum安装的。理论上应该不会多出什么不必要的包,.bashrc在openmpi编译前也仅添了setenv_AOCC.sh和amd-libs.cfg的source,所以不是很明白为啥环境变量搞得一团糟。(因为不必要的都没安装的原因,我连module都没有,后面曾一度搞了个module但都没包在module list里显示)
作者
Author:
rogerjun    时间: 2024-5-19 11:05
本帖最后由 rogerjun 于 2024-5-20 09:43 编辑
ginlpein 发表于 2024-5-18 22:34
您好,感谢耐心解答!
我看到您安装路径里面有aocc-4.2.0_gcc-toolset-12这一级,请问这一级是openmpi编 ...

“aocc-4.2.0_gcc-toolset-12”这个目录是我为了区分不同编译方法下得到的openmpi版本所以自己设置的目录名称。环境变量方面看起来你的操作没什么问题。我觉得你可以去检查一下openmpi configure后得到的config.log文件,搜索一下Fortran或者flang之类的关键词,看看编译openmpi时flang是否成功链接上了,从你的错误信息看来,openmpi编译时可能没链接上flang,而使用了gnu的gfortran.
更新:甭纠结了兄弟,我测试了一下,核数比较少的时候(我是双路7R32和单路9654,使用<=96核),使用intel oneAPI(2024.1)编译得到的vasp6.4.2要比aocc的快得多,而且编译过程畅通无阻。也有人说核数多了之后aocc比较快的,但是核数少的时候还是oneAPI更牛。

作者
Author:
ginlpein    时间: 2024-5-20 15:35
本帖最后由 ginlpein 于 2024-5-20 15:38 编辑
rogerjun 发表于 2024-5-19 11:05
“aocc-4.2.0_gcc-toolset-12”这个目录是我为了区分不同编译方法下得到的openmpi版本所以自己设置的目录 ...

真的十分感谢您多次的解答!
log里面您flang链接成功的语句是啥?方便参考一下吗?

然后oneAPI的问题。。。其实我就是从oneAPI那边转过来的,机子到的时候有人帮忙搞了oneAPI+vasp6.3.2的组合,运行没问题,但是计算速度奇慢无比,都查不到问题在哪。。。同样插满全部内存的情况下,新机子在硬件全面升级的情况下,同一个SCF收敛任务128核并行是老机子(2019XE+2015MPI+VASP5.4.4)时间花费的10倍。。。所以这次就只能下定主意自己刷机然后自己分别走一遍AOCC和oneAPI编译的路线来测试了。
作者
Author:
rogerjun    时间: 2024-5-20 16:19
ginlpein 发表于 2024-5-20 15:35
真的十分感谢您多次的解答!
log里面您flang链接成功的语句是啥?方便参考一下吗?

flang链接上的信息大概是这些?
“configure:5802: *** Fortran compiler
configure:29064: checking for Fortran compiler version
configure:29073: flang --version >&5
AMD clang version 16.0.3 (CLANG: AOCC_4.2.0-Build#89 2023_12_13)”

“configure:29520: checking if Fortran compiler works
configure:29552: flang -o conftest    conftest.f  >&5
configure:29552: $? = 0
configure:29552: ./conftest
configure:29552: $? = 0
configure:29569: result: yes”

我这边测试的结果确实是oneAPI编译开启avx指令集后的vasp6.4.2速度远超aocc编译版本,郁闷中。。。现在怀疑我aocc编译漏了些参数,居然amd自己的U优化不过Intel、、、层主后续方便的话,可否提供测试算例的一些数据,我们也交流一下哪种编译速度更快的问题

作者
Author:
Jiongci-21    时间: 2024-7-23 04:42
rogerjun 发表于 2024-4-13 18:15
问题1:clang -v检查一下clang链接的gcc版本,我测试了一下,clang链接到gcc-12时可正常安装openmpi 5.0.x
...

请问对于问题1,安装aocc时候clang只会链接linux系统默认的那个gcc版本吗。我非root用户,但是系统里装了几个版本的gcc,我load 了gcc13但是安装之后仍然是gcc8。请问有没有好的解决办法。
作者
Author:
kkTina    时间: 2024-9-15 19:55
请问最后一个问题解决了吗
作者
Author:
scprosper    时间: 2025-1-22 19:27
双路9654+ubuntu22.04,aocc和aocl版本4.2.0,openmpi版本4.1.6(此前由于编译cp2k还存在5.0.6版本),成功实现vasp 6.4.2+vtst的编译。
同样遇到问题3,将OFLAG由-O2更改为-O3问题得以部分解决。可以正常跑计算,输出文件正常,但是仍然存在warning(-np x则报x次):
Warning: ieee_invalid is signaling
Warning: ieee_underflow is signaling
Warning: ieee_inexact is signaling
FORTRAN STOP
由于不影响正常使用暂时不打算处理,后续如出现其他异常再考虑使用oneapi。




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