|
本帖最后由 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
-
查看全部评分 View all ratings
|