计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1199|回复 Reply: 6
打印 Print 上一主题 Last thread 下一主题 Next thread

[CP2K] 求助:CP2K编译正常,但运行中提醒当前编译版本不支持CPU的avx512指令集

[复制链接 Copy URL]

39

帖子

0

威望

274

eV
积分
313

Level 3 能力者

跳转到指定楼层 Go to specific reply
楼主
请教大家,按照社长的方法CP2K第一性原理程序在CentOS中的简易安装方法 - 第一性原理 (First Principle) - 计算化学公社 (keinsci.com),在AMD 7950x + 64G + Ubuntu24.04上顺利编译了CP2K-2024.1,运行任务没啥问题,但总会出现下面的提示,意思是说当前编译版本不支持CPU的avx512指令集。
  1. *** HINT in environment.F:920 :: The compiler target flags (generic) used ***
  2. *** to build this binary cannot exploit all extensions of this CPU model  ***
  3. *** (x86_avx512). Consider compiler target flags as part of FCFLAGS and   ***
  4. *** CFLAGS (ARCH file).                                                   ***
复制代码


另外,我在另一台Intel Xeon E5v4*2 上编译,会有类似的提醒,关于x86_avx2指令集。


按照一些帖子的说法,把cp2k/tool/toolchain/script/generate_arch_file.sh里的OPT_FLAGS="-O2 改成OPT_FLAGS="-O3, 即提高编译等级就可以支持先进指令集,但我试了编译过不去,总是报错(没有保存报错信息)。


请教大家,如何编译才能启用avx512或avx2呢?需要修改哪个文件或哪一步呢?


39

帖子

0

威望

274

eV
积分
313

Level 3 能力者

7#
 楼主 Author| 发表于 Post on 2025-3-4 09:32:26 | 只看该作者 Only view this author
Assiduitas 发表于 2025-3-3 16:15
AMD 7900x+64G+Ubuntu22.04/24.04遇到一样的问题,显示编译没使用最优的AVX512指令集。已解决!!!

下 ...

谢谢你,这是迄今我看到的抓住了问题的关键、最详细的解决方案!

41

帖子

0

威望

392

eV
积分
433

Level 3 能力者

6#
发表于 Post on 2025-3-3 16:15:42 | 只看该作者 Only view this author
本帖最后由 Assiduitas 于 2025-3-4 09:00 编辑

AMD 7900x+64G+Ubuntu22.04/24.04遇到一样的问题,显示编译没使用最优的AVX512指令集。已解决!!!

下面分享一下本人解决心得:
1.Linux系统:
最开始也是安装的Ubuntu,因为听别人说这个系统安装东西比较省心。但是基于目前的体验来看,如果是做计算,还是安装CentOS比较好。(虽然Ubuntu安装某些东西确实简单,CentOS安装起来稍微麻烦一点。但如当年明月所说:慢慢做才是最有效率的方式)具体可能是个人主观意向,请大家根据自己实际情况安装适合自己的Linux系统。
2.gcc/fortran的版本
出现这个报错的原因源头首先是gcc/fortran的版本,Ubuntu22.04/24.04检索搜索引擎信息,学习之后安装gcc/fortran,你用-v查看版本一般都是11,不会超过12。第一个问题就出现了:Zen4架构的CPU,需要gcc/fortran >13.1之后的版本才能正确识别znver4这个词。所有你用Ubuntu22.04/24.04想在AMD 7000系列以及更新的CPU安装CP2K,首先要更新gcc/fortran至比较新的版本,至少要>13.1。而我后面用的CentOS stream10(目前应该是下载的最新的CentOS版本自带的gcc/fortran是13/14版本,完全不是11这种古早的版本,所有没有这个问题)
3.用toolchain安装好所有的库后,sob老师教程中提到使用make -j 4 ARCH=local VERSION="ssmp psmp"的命令安装。此时arch中会有local.ssmp与local.psmp两个文件,你需要用文本编辑器打开,找到CFLAGS与FCFLAGS中 -mtune=native 的词条。把这个关键词换成你CPU对应的架构,对于AMD 7000都是Zen4,所以需要写成 -mtune=znver4。我是仿照AI给出的建议:写成了-march=znver4 -mtune=znver4。

总结:
1.检查gcc/fortran版本,不要太老,不然可能不支持最新的CPU机构。
2.检查local.psmp以及local.ssmp这两个文件,里面的-mtune=native部分用显式指令定义硬件的具体信息,别让他自动识别。

性能提升:原有的错误消除后,测试了一个120原子的slab的结构优化,使用popt版本计算性能提升了15%。

分割线- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Ubuntu安装成功心得:

Ubuntu安装成功的重点:更新gcc,gfortran以及g++到足够新的版本(能够支持zen4架构的CPU,即能够识别-march=znver4 -mtune=znver4)
1.gcc更新:
step1:运行gcc -v看看gcc的版本,如果小于13.1基本就是要更新。
           细致一点的操作是:gcc -march=native --help=target。查看支持的CPU架构类型
step2: 利用PPA库安装高版本号的gcc
            sudo add-apt-repository ppa:ubuntu-toolchain-r/test
          sudo apt update
            #示例安装gcc -13
            sudo apt install gcc -13
            #安装完毕需配置gcc -13,不然还是未升级前的gcc版本
            sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 13
          #查看gcc版本是否已经是gcc -13
          gcc -v

2.g++更新
step1:如上,把gcc的关键词更换为g++
step2:不同的语句:sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 -12
3.gfortran更新
step1:如上,把gcc的关键词更换为gfortran,以及查看版本命令是:gfortran --version
step2:不同的语句:sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-13 200

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
stishovite + 5 谢谢分享

查看全部评分 View all ratings

39

帖子

0

威望

274

eV
积分
313

Level 3 能力者

5#
 楼主 Author| 发表于 Post on 2024-6-28 10:26:01 | 只看该作者 Only view this author

非常感谢,我试试

2407

帖子

1

威望

5955

eV
积分
8382

Level 6 (一方通行)

4#
发表于 Post on 2024-6-27 11:35:46 | 只看该作者 Only view this author
stishovite 发表于 2024-6-27 08:38
谢谢大神回复,能否用AMD自己的blas编译呢?

spack aocc cp2k
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

39

帖子

0

威望

274

eV
积分
313

Level 3 能力者

3#
 楼主 Author| 发表于 Post on 2024-6-27 08:38:01 | 只看该作者 Only view this author
abin 发表于 2024-5-26 08:51
target-cpu=native

不过,BLAS相关,仅仅支持到zen2.

谢谢大神回复,能否用AMD自己的blas编译呢?

2407

帖子

1

威望

5955

eV
积分
8382

Level 6 (一方通行)

2#
发表于 Post on 2024-5-26 08:51:36 | 只看该作者 Only view this author
target-cpu=native

不过,BLAS相关,仅仅支持到zen2.

其实你可以忽略以上的提示……
就跑用了target-cpu=native,
有可能还会遇到同样的提示信息。
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-15 21:44 , Processed in 0.353215 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list