计算化学公社

 找回密码 Forget password
 注册 Register
Views: 20317|回复 Reply: 33

[Quantum ESPRESSO] CentOS下GPU加速版QE的编译安装

[复制链接 Copy URL]

1464

帖子

1

威望

2599

eV
积分
4083

Level 6 (一方通行)

喵星人

发表于 Post on 2021-3-24 21:25:24 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 喵星大佬 于 2021-5-3 01:47 编辑

QE-6.7的GPU加速版本已经可以使用免费的Nvidia HPC SDK进行编译,而无需纠结Cuda Toolkit版本及对应PGI编译器版本,方便了许多,在大体系(其实也不能太大,显存消耗很大)SCF速度方面提升明显,这边就简单介绍一些QE的GPU版本编译方法。环境为CentOS8.3,显卡为RTX2060s,本文中文件路径为个人习惯,读者按情况自行调整。

1. 下载安装Cuda Toolkit
1.1 禁用nouveau
为了安装Cuda Toolkit,必须先关闭自带的nouveau显卡驱动
通过
lsmod |grep nouveau







查看nouveau是否开启,如果返回相应的nouveau情况,则通过
touch /etc/modprobe.d/blacklist.conf
echo -e 'blacklist nouveau\noptions nouveau modeset=0' > /etc/modprobe.d/blacklist.conf
dracut --force
reboot







将其禁用并重启
重启后再次通过
lsmod |grep nouveau







查看nouveau的状态,若无返回,则可继续安装

注意:在禁用nouveau前,如果使用的Linux版本带有图形界面,则通过
systemctl get-default







命令查看默认的登录模式,若为图形界面模式,则通过
systemctl set-default multi-user.target

命令将其设置为命令行模式,否则无法安装


1.2.下载Cuda Toolkit


注意,安装Cuda Toolkit需要dkms,若此前没有安装,则可通过dnf安装
dnf install -y epel-release
dnf install  -y dkms



在Nvidia的网站查找自己系统对应Cuda Toolkit版本的下载路径
https://developer.nvidia.com/cuda-downloads
当前为11.2版本,通过
cd /tmp
wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run

将安装包下载到/tmp目录




1.3 安装Cuda Toolkit

给下载到/tmp文件夹中安装程序添加执行权限并安装


sudo chmod +x cuda_11.2.1_460.32.03_linux.run
sudo sh cuda_11.2.1_460.32.03_linux.run

输入“accept”继续,并选择“install”开始安装
安装完成后,添加相应的Cuda环境变量
echo -e '\nexport CUDA_HOME=/usr/local/cuda-11.2\nexport PATH=$PATH:$CUDA_HOME/bin\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64\n'  >>  ~/.bashrc

source ~/.bashrc






查看nvcc编译器的版本,若显示正确,则表明安装成功。
nvcc --version




1.4 测试Cuda Toolkit

其测试文件在/root目录(使用root用户安装)或~/用户名(使用普通用户安装)目录下,也可以通过自带的测试文件进行测试
cd ~
cd NVIDIA_CUDA-11.2_Samples/
make






等待约十几分钟,编译完成,测试
cd bin/x86_64/linux/release
./deviceQuery


若显示均为pass,则表明工作正常,此时~目录中NVIDIA_CUDA-11.2_Samples文件夹和/tmp目录中的cuda_11.2.1_460.32.03_linux.run均可删除


2.安装NVIDIA HPC SDK
2.1 下载NVIDIA HPC SDK
当前(2021年3月24日)最新版本为21.2,撰文时(2021年2月10日)为21.1,本文采用21.1版本,新版本所应该同样可以
首先下载NVIDIA HPC SDK安装包
cd /tmp
wget
https://developer.download.nvidia.com/hpc-sdk/21.1/nvhpc_2021_211_Linux_x86_64_cuda_11.2.tar.gz





2.2解压并安装
tar -xvf nvhpc_2021_211_Linux_x86_64_cuda_11.2.tar
cd nvhpc_2021_211_Linux_x86_64_cuda_11.2/
./install






按回车确认安装位置,默认为/opt/nvidia/hpc_sdk,之后按“1”选择单机安装,安装程序会自行找到之前安装的cuda toolkit安装完成后按回车结束
echo -e '\n\nexport NVARCH=`uname -s`_`uname -m`\nexport NVCOMPILERS=/opt/nvidia/hpc_sdk\nexport MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/21.1/compilers/man\nexport PATH=$NVCOMPILERS/$NVARCH/21.1/compilers/bin:$PATH\n'
>>  ~/.bashrc



加载新添加的环境变量
source ~/.bashrc





可以通过查看PGI编译器版本查看之前安装是否正确
pgcc --version




若显示正确,至此NVIDIA HPC SDK安装完成,/tmp目录下的nvhpc_2021_211_Linux_x86_64_cuda_11.2.tar文件及nvhpc_2021_211_Linux_x86_64_cuda_11.2文件夹均可删除




3. 安装Quantum ESPRESSO-GPU版本
3.1 下载QE6.7-GPU版本

点击地址
https://gitlab.com/QEF/q-e-gpu/-/releases
qe-gpu-6.7下的Source code (tar.gz)
得到文件q-e-gpu-qe-gpu-6.7.tar.gz,通过sftp传入文件夹,此处为/opt目录


3.2 编译Quantum ESPRESSO-GPU(单GPU版本)
解压并配置
cd /opt
gunzip -r q-e-gpu-qe-gpu-6.7.tar.gz
tar -xvf q-e-gpu-qe-gpu-6.7.tar
mv q-e-gpu-qe-gpu-6.7 qe-6.7-gpu
cd qe-6.7-gpu
./configure --with-cuda=/usr/local/cuda-11.2 --with-cuda-runtime=11.2 --with-cuda-cc=75 --enable-openmp --with-scalapack=no

为了方便,将其文件夹改名为qe-6.7-gpu,--with-cuda-cc=75为Turing架构显卡(2060s),若为其他显卡自行调整


配置完成无误后进行编译,注意,尽管可以使用make all编译所有部分,但是目前仅pw.x,pp.x,cp.x模块可以使用GPU加速,其他模块编译完成后无法使用,比如生成赝势的模块等,此处仅编译这三个模块,采用8核并行编译
make pw -j8
make cp -j8
make pp -j8

完成后,添加环境变量并加载
echo -e '\nexport PATH=$PATH:/opt/qe-6.7-gpu/bin\n'   >>  ~/.bashrc
source ~/.bashrc

至此,单GPU版编译完成


3.3 使用NVIDIA HPC SDK编译openmpi
多GPU需使用openmpi并行,此处使用NVIDIA HPC SDK编译openmpi
点击地址
https://www.open-mpi.org/software/ompi/v4.0/
下载openmpi4.0.5源码文件openmpi-4.0.5.tar.gz,通过sftp传入文件夹,此处为/tmp目录


解压,配置并安装(此时须加载之前设置的Cuda及NVIDIA HPC SDK环境变量)
cd /tmp
source /opt/scripts/evnvhpc.sh
gunzip -r openmpi-4.0.5.tar.gz
tar -xvf openmpi-4.0.5.tar
cd openmpi-4.0.5/
./configure --prefix=/opt/tools/openmpi-4.0.5-nv --disable-builtin-atomics CC=pgcc FC=pgfortran CXX=pgc++

将其安装在/opt/tools/openmpi-4.0.5-nv目录中(可自行调整),选择使用NVIDIA HPC SDK提供的编译器
编译并安装
make all install

完成后添加相应的环境变量

echo -e '\nexport PATH=$PATH:/opt/tools/openmpi-4.0.5-nv/bin\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/tools/openmpi-4.0.5-nv/lib\n'  >>  ~/.bashrc
source ~/.bashrc

此时通过查看mpiexec版本查看编译安装是否正确

mpiexec --version

若显示正确(PGI编译的),则可继续编译Quantum ESPRESSO-GPU(mpi版)

3.4 编译Quantum ESPRESSO-GPU(mpi版)

该部分内容与3.2部分完全相同,在./configure的过程中会自动找到mpi(已经加载的环境变量)并使用

如果有多张显卡使用此版本,若仅单张显卡则不要使用此版本


4. 运行




GPU加速版QE运行方式,和纯cpu版本基本一样,单GPU版本直接
pw.x < XXX.in > xxx.out


就可以了


如果是多GPU版本


mpirun -np N pw.x < XXX.in > xxx.out



N为GPU数,同时还可以通过OMP_NUM_THREADS=M设置MPI线程内的并行

5.总结
其实相对于2-30核的双路CPU运算,一般的游戏卡提速有限,此处使用的2060s相比较而言并不能有明显的加速效果

使用http://bbs.keinsci.com/thread-17661-1-1.html提供的石墨炔测试文件,24核(双路2678v3)所花时间比2060s略高(分别花费约23min和约28min),但是在第一个测试文件(单晶硅)中,GPU花费了更长的时间(分别花费了约50s和约1min10s),当然由于所用GPU本身并不强,仅供参考。若有更强的显卡/多张显卡等情况,欢迎展示测试结果。







评分 Rate

参与人数
Participants 10
威望 +1 eV +40 收起 理由
Reason
趣宝集 + 3 好物!
muuu2333 + 4
kuangll + 4 赞!
朙天儿 + 5 赞!
naoki + 5 谢谢分享
doublezhang + 5 为你升级助一臂之力
j5888xm + 5 你太可爱
sobereva + 1
m083020036 + 4 谢谢分享
biogon + 5

查看全部评分 View all ratings

1854

帖子

1

威望

4106

eV
积分
5980

Level 6 (一方通行)

发表于 Post on 2021-3-24 22:42:55 | 显示全部楼层 Show all
NGC docker 不香吗?
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
App,  https://gitee.com/hpc4you/linux
hpc4you toolkit,  https://gitee.com/hpc4you/hpc
电邮hpc4you@163.com VX: hpc4you

197

帖子

5

威望

1689

eV
积分
1986

Level 5 (御坂)

发表于 Post on 2021-10-18 14:17:03 | 显示全部楼层 Show all
请问该怎么查看--with-cuda-cc=后面该填的数字?我用了nvidia-smi命令的输出有一行说“| 27%   40C    P2    68W / 250W |   6588MiB / 11019MiB |     26%      Default |”,是不是就该写68?

1464

帖子

1

威望

2599

eV
积分
4083

Level 6 (一方通行)

喵星人

 楼主 Author| 发表于 Post on 2021-10-18 14:50:36 | 显示全部楼层 Show all
Freeman 发表于 2021-10-18 14:17
请问该怎么查看--with-cuda-cc=后面该填的数字?我用了nvidia-smi命令的输出有一行说“| 27%   40C    P2   ...

这个68W明显是现在的功耗是68W,-cc=后面的数字是根据你的显卡型号来的

1464

帖子

1

威望

2599

eV
积分
4083

Level 6 (一方通行)

喵星人

 楼主 Author| 发表于 Post on 2021-10-18 14:56:18 | 显示全部楼层 Show all
补充一下啊,6.8版本后,GPU和CPU版本合并了,直接下载主分支按同样的方法编译即可

197

帖子

5

威望

1689

eV
积分
1986

Level 5 (御坂)

发表于 Post on 2021-10-18 15:16:26 | 显示全部楼层 Show all
喵星大佬 发表于 2021-10-18 14:50
这个68W明显是现在的功耗是68W,-cc=后面的数字是根据你的显卡型号来的

请问该怎么查看--with-cuda-cc=后面该填的数字?(已知显卡型号)

1188

帖子

5

威望

2758

eV
积分
4046

Level 6 (一方通行)

发表于 Post on 2021-10-18 16:19:59 | 显示全部楼层 Show all
Freeman 发表于 2021-10-18 15:16
请问该怎么查看--with-cuda-cc=后面该填的数字?(已知显卡型号)

Your GPU Compute Capability
把那个数去掉小数点

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
Freeman + 5 谢谢

查看全部评分 View all ratings

132

帖子

0

威望

701

eV
积分
833

Level 4 (黑子)

发表于 Post on 2021-10-19 21:05:08 | 显示全部楼层 Show all
这加速效果不明显呀,组内买了两台3080ti服务器还没到,感觉只能当亮机卡了

1464

帖子

1

威望

2599

eV
积分
4083

Level 6 (一方通行)

喵星人

 楼主 Author| 发表于 Post on 2021-10-19 21:47:08 | 显示全部楼层 Show all
Aridea 发表于 2021-10-19 21:05
这加速效果不明显呀,组内买了两台3080ti服务器还没到,感觉只能当亮机卡了

3080Ti搞这个讲道理不知道咋样,手上只有2060s和笔记本的3070(win),没法测试了,等你的机器到了你可以测试一下效果怎么样,不过好歹一张2060s在石墨炔那个测试体系下面比24的E5v3核略快一些

132

帖子

0

威望

701

eV
积分
833

Level 4 (黑子)

发表于 Post on 2021-10-19 22:12:15 | 显示全部楼层 Show all
喵星大佬 发表于 2021-10-19 21:47
3080Ti搞这个讲道理不知道咋样,手上只有2060s和笔记本的3070(win),没法测试了,等你的机器到了你可以测 ...

嗯嗯,估计差别不大,周期性GPU加速估计就vasp这种商业软件能强点

1464

帖子

1

威望

2599

eV
积分
4083

Level 6 (一方通行)

喵星人

 楼主 Author| 发表于 Post on 2021-10-19 22:44:39 | 显示全部楼层 Show all
Aridea 发表于 2021-10-19 22:12
嗯嗯,估计差别不大,周期性GPU加速估计就vasp这种商业软件能强点

其实这个做不大体系主要原因是显存耗的太厉害了,加速效果的话其实还行。如果是3090这种本来显存就很大再加上NVLink加持2合1的话照理说有一定使用价值,当然这是显卡差不多原价能拿到的情况,问题就是现在3090的价格只能用离谱来形容了

132

帖子

0

威望

701

eV
积分
833

Level 4 (黑子)

发表于 Post on 2021-10-19 23:07:14 | 显示全部楼层 Show all
喵星大佬 发表于 2021-10-19 22:44
其实这个做不大体系主要原因是显存耗的太厉害了,加速效果的话其实还行。如果是3090这种本来显存就很大再 ...

确实,货币超发没办法,过两年估计能降下来

1188

帖子

5

威望

2758

eV
积分
4046

Level 6 (一方通行)

发表于 Post on 2021-11-2 17:59:37 | 显示全部楼层 Show all
本帖最后由 snljty 于 2021-11-2 18:00 编辑

刚编译了一下QE 6.8的GPU版本,借宝地做一下记录。
QE 6.8版本不管是GPU版本还是CPU版本都需要下载一个devxlib,这对不能联互联网的机器很麻烦。可以自己手动下载一个
devicexlib-master.tar.gz
然后传上去,放到QE 6.8源代码解压后的external目录内,
  1. tar -xzf devicexlib-master.tar.gz
复制代码
解压,删掉原来的devxlib空目录,把解压后的目录devicexlib-master重命名为devxlib(此时可删掉devicexlib-master.tar.gz压缩包)即可。
硬件是Intel Xeon Silver 4214R,12核双路,配2块Nvidia Geforce RTX 3080Ti。怎么查架构对应的编号看7楼,基本20系都是75,30系都是86。
编译使用openmpi-4.1.1(使用nvhpc-21.9-nompi编译),cuda-11.4,intel oneAPI中的mkl和nvhpc-21.9-nompi环境(目前版本是2021.4.0),编译前加载这些环境(如有不明白这步的,可以留言交流。)。编译openmpi的步骤同楼主。然后设定环境变量指定编译器为pgi系列。
配置QE编译用的选项是
  1. ./configure --prefix=xxxxxx --with-cuda=/usr/local/cuda-11.4 --with-cuda-runtime=11.4 --with-cuda-cc=86 --enable-openmp --with-scalapack=intel F90=`which pgfortran` CC=`which pgcc` MPIF90=`which mpif90`
复制代码

写了MKL但是编译时候没有检测到用到,比较疑惑,有时间再排查问题。
然后
  1. make pw cp pp -j 24
  2. make install
复制代码

即可。

没什么时间做测试,简单跑了一下上面的硅任务。
Silver 4214R单颗(12核):42.77s
Silver 4214R单核+1块RTX 3080Ti: 40.19s
均为Wall time

待更新

132

帖子

0

威望

701

eV
积分
833

Level 4 (黑子)

发表于 Post on 2021-11-22 17:21:49 | 显示全部楼层 Show all
snljty 发表于 2021-11-2 17:59
刚编译了一下QE 6.8的GPU版本,借宝地做一下记录。
QE 6.8版本不管是GPU版本还是CPU版本都需要下载一个dev ...

达姐,我们双路8171m一块3080ti,看了你的测试过我不打算搞gpu了,感觉没啥用,5%的加速加了个寂寞呀

1464

帖子

1

威望

2599

eV
积分
4083

Level 6 (一方通行)

喵星人

 楼主 Author| 发表于 Post on 2021-11-23 08:09:35 | 显示全部楼层 Show all
本帖最后由 喵星大佬 于 2021-11-23 08:14 编辑
Aridea 发表于 2021-11-22 17:21
达姐,我们双路8171m一块3080ti,看了你的测试过我不打算搞gpu了,感觉没啥用,5%的加速加了个寂寞呀

用处在于GPU跑QE的时候CPU可以干别的
再就是,体系越大加速越明显,但是显存可能会不够

本版积分规则 Credits rule

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

GMT+8, 2023-2-7 02:47 , Processed in 0.201962 second(s), 22 queries .

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