计算化学公社

标题: CentOS下GPU加速版QE的编译安装 [打印本页]

作者
Author:
喵星大佬    时间: 2021-3-24 21:25
标题: CentOS下GPU加速版QE的编译安装
本帖最后由 喵星大佬 于 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本身并不强,仅供参考。若有更强的显卡/多张显卡等情况,欢迎展示测试结果。








作者
Author:
abin    时间: 2021-3-24 22:42
NGC docker 不香吗?
作者
Author:
Freeman    时间: 2021-10-18 14:17
请问该怎么查看--with-cuda-cc=后面该填的数字?我用了nvidia-smi命令的输出有一行说“| 27%   40C    P2    68W / 250W |   6588MiB / 11019MiB |     26%      Default |”,是不是就该写68?
作者
Author:
喵星大佬    时间: 2021-10-18 14:50
Freeman 发表于 2021-10-18 14:17
请问该怎么查看--with-cuda-cc=后面该填的数字?我用了nvidia-smi命令的输出有一行说“| 27%   40C    P2   ...

这个68W明显是现在的功耗是68W,-cc=后面的数字是根据你的显卡型号来的
作者
Author:
喵星大佬    时间: 2021-10-18 14:56
补充一下啊,6.8版本后,GPU和CPU版本合并了,直接下载主分支按同样的方法编译即可
作者
Author:
Freeman    时间: 2021-10-18 15:16
喵星大佬 发表于 2021-10-18 14:50
这个68W明显是现在的功耗是68W,-cc=后面的数字是根据你的显卡型号来的

请问该怎么查看--with-cuda-cc=后面该填的数字?(已知显卡型号)
作者
Author:
snljty    时间: 2021-10-18 16:19
Freeman 发表于 2021-10-18 15:16
请问该怎么查看--with-cuda-cc=后面该填的数字?(已知显卡型号)

Your GPU Compute Capability
把那个数去掉小数点
作者
Author:
Aridea    时间: 2021-10-19 21:05
这加速效果不明显呀,组内买了两台3080ti服务器还没到,感觉只能当亮机卡了
作者
Author:
喵星大佬    时间: 2021-10-19 21:47
Aridea 发表于 2021-10-19 21:05
这加速效果不明显呀,组内买了两台3080ti服务器还没到,感觉只能当亮机卡了

3080Ti搞这个讲道理不知道咋样,手上只有2060s和笔记本的3070(win),没法测试了,等你的机器到了你可以测试一下效果怎么样,不过好歹一张2060s在石墨炔那个测试体系下面比24的E5v3核略快一些
作者
Author:
Aridea    时间: 2021-10-19 22:12
喵星大佬 发表于 2021-10-19 21:47
3080Ti搞这个讲道理不知道咋样,手上只有2060s和笔记本的3070(win),没法测试了,等你的机器到了你可以测 ...

嗯嗯,估计差别不大,周期性GPU加速估计就vasp这种商业软件能强点
作者
Author:
喵星大佬    时间: 2021-10-19 22:44
Aridea 发表于 2021-10-19 22:12
嗯嗯,估计差别不大,周期性GPU加速估计就vasp这种商业软件能强点

其实这个做不大体系主要原因是显存耗的太厉害了,加速效果的话其实还行。如果是3090这种本来显存就很大再加上NVLink加持2合1的话照理说有一定使用价值,当然这是显卡差不多原价能拿到的情况,问题就是现在3090的价格只能用离谱来形容了
作者
Author:
Aridea    时间: 2021-10-19 23:07
喵星大佬 发表于 2021-10-19 22:44
其实这个做不大体系主要原因是显存耗的太厉害了,加速效果的话其实还行。如果是3090这种本来显存就很大再 ...

确实,货币超发没办法,过两年估计能降下来
作者
Author:
snljty    时间: 2021-11-2 17:59
本帖最后由 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

待更新
作者
Author:
Aridea    时间: 2021-11-22 17:21
snljty 发表于 2021-11-2 17:59
刚编译了一下QE 6.8的GPU版本,借宝地做一下记录。
QE 6.8版本不管是GPU版本还是CPU版本都需要下载一个dev ...

达姐,我们双路8171m一块3080ti,看了你的测试过我不打算搞gpu了,感觉没啥用,5%的加速加了个寂寞呀
作者
Author:
喵星大佬    时间: 2021-11-23 08:09
本帖最后由 喵星大佬 于 2021-11-23 08:14 编辑
Aridea 发表于 2021-11-22 17:21
达姐,我们双路8171m一块3080ti,看了你的测试过我不打算搞gpu了,感觉没啥用,5%的加速加了个寂寞呀

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

作者
Author:
Aridea    时间: 2021-11-23 16:01
喵星大佬 发表于 2021-11-23 08:09
用处在于GPU跑QE的时候CPU可以干别的
再就是,体系越大加速越明显,但是显存可能会不够

Soga,那这么说还是很厉害呀
作者
Author:
shine    时间: 2021-11-23 16:56
老师,您好。我想向您请教一下:我的GPU 是RTX3080Ti, 我在Centos8.0上安装的驱动版本是NVIDIA-Linux-x86_64-470.86,安装成功后继续安装了cuda,版本是cuda_11.1.0_455.23.05_linux.run。安装时系统默认的也是图形界面,进入命令界面安装的驱动和cuda,安装成功后,进入不了图形界面是怎么回事?
作者
Author:
喵星大佬    时间: 2021-11-23 17:28
shine 发表于 2021-11-23 16:56
老师,您好。我想向您请教一下:我的GPU 是RTX3080Ti, 我在Centos8.0上安装的驱动版本是NVIDIA-Linux-x86_6 ...

在图形界面下似乎装不了驱动吧
作者
Author:
shine    时间: 2021-11-24 09:03
喵星大佬 发表于 2021-11-23 17:28
在图形界面下似乎装不了驱动吧

嗯嗯,谢谢老师回复。老师,您好,我先是在命令界面下装的驱动和cuda,装好后进不了图形化界面了,不清楚是怎么回事,不知您在安装中有没有遇到这种情况?
作者
Author:
喵星大佬    时间: 2021-11-24 09:13
shine 发表于 2021-11-24 09:03
嗯嗯,谢谢老师回复。老师,您好,我先是在命令界面下装的驱动和cuda,装好后进不了图形化界面了,不清楚 ...

装完之后
  1. systemctl set-default graphical.target
复制代码

就好了
作者
Author:
shine    时间: 2021-11-25 10:02
喵星大佬 发表于 2021-11-24 09:13
装完之后

就好了

好的,谢谢老师
作者
Author:
kuangll    时间: 2021-12-5 09:19
本帖最后由 kuangll 于 2021-12-5 09:21 编辑
abin 发表于 2021-3-24 22:42
NGC docker 不香吗?

GPU版本推荐NGC上做好的容器镜像(已经更新到QE 6.8): https://catalog.ngc.nvidia.com/o ... rs/quantum_espresso
作者
Author:
kuangll    时间: 2021-12-5 10:50
本帖最后由 kuangll 于 2021-12-6 20:47 编辑
使用http://bbs.keinsci.com/thread-17661-1-1.html提供的石墨炔测试文件,24核(双路2678v3)所花时间比2060s略高(分别花费约23min和约28min),但是在第一个测试文件(单晶硅)中,GPU花费了更长的时间(分别花费了约50s和约1min10s),当然由于所用GPU本身并不强,仅供参考。若有更强的显卡/多张显卡等情况,欢迎展示测试结果。

试了下用NGC上的qe-6.8容器,在1块V100上跑了下楼主链接里的石墨算例,可以跑到466.72s。

  1.      General routines
  2.      calbec       :      2.71s CPU      4.02s WALL (  176594 calls)
  3.      fft          :     19.96s CPU     10.17s WALL (     140 calls)
  4.                                         0.04s GPU  (      11 calls)
  5.      ffts         :      0.61s CPU      0.32s WALL (      21 calls)
  6.      fftw         :      1.39s CPU     86.63s WALL (  182318 calls)
  7.                                        54.17s GPU  (  182318 calls)
  8.      interpolate  :      2.25s CPU      1.29s WALL (      11 calls)

  9.      Parallel routines

  10.      PWSCF        :    342.89s CPU    466.72s WALL


  11.    This run was terminated on:   2:20:13   5Dec2021

  12. =------------------------------------------------------------------------------=
  13.    JOB DONE.
  14. =------------------------------------------------------------------------------=
复制代码

作者
Author:
喵星大佬    时间: 2021-12-5 17:43
kuangll 发表于 2021-12-5 10:50
试了下用NGC上的qe-6.8容器,在1块V100上跑了下楼主链接里的石墨烯算例,可以跑到466.72s。

那加速效果是相当可观了
作者
Author:
snljty    时间: 2021-12-6 12:50
本帖最后由 snljty 于 2021-12-6 14:41 编辑
snljty 发表于 2021-11-2 17:59
刚编译了一下QE 6.8的GPU版本,借宝地做一下记录。
QE 6.8版本不管是GPU版本还是CPU版本都需要下载一个dev ...

跑了一下链接里石墨炔的那个例子,编译的是MPI+GPU版,但是资源限制目前测试只用了一块GPU,相当于mpirun -np 1 OMP_NUM_THREADS=1 pw.x,不清楚是否会和编译完全不支持MPI的版本有明显差别。
Silver 4214R单颗CPU,用12核,纯OpenMP并行,1h32m。纯MPI并行,36m26.20s。
Silver 4214R单核+1块RTX 3080Ti,15m22.35s。
作者
Author:
喵星大佬    时间: 2021-12-6 14:38
snljty 发表于 2021-12-6 12:50
跑了一下链接里石墨烯(应该是吧)的那个例子,编译的是MPI+GPU版,但是资源限制目前测试只用了一块GPU, ...

那个应该是石墨炔,你跑出来的结果跟我测试的基本一致,我是24核E5V3纯MPI并行28min,单核+2060s跑23min,这个基本是2060s跟3080Ti的差距了,但是按楼上的情况看V100貌似快得多,只要8min不到
作者
Author:
snljty    时间: 2021-12-6 14:42
本帖最后由 snljty 于 2021-12-6 14:43 编辑
喵星大佬 发表于 2021-12-6 14:38
那个应该是石墨炔,你跑出来的结果跟我测试的基本一致,我是24核E5V3纯MPI并行28min,单核+2060s跑23min ...

谢谢指正。看来双精度依赖性也不小?
作者
Author:
喵星大佬    时间: 2021-12-6 14:52
snljty 发表于 2021-12-6 14:42
谢谢指正。看来双精度依赖性也不小?

不好说,也可能是因为内存速度的原因,毕竟V100是HBM2显存,比DDR4快接近一个数量级
作者
Author:
kuangll    时间: 2021-12-6 21:30
还是石墨炔算例,补充一个A100 40GB单卡测试结果, 运行时间284.18s,相比前面V100提升1.6倍。(注:使用了MPS启动4个进程,-npool 4)
  1.      General routines
  2.      calbec       :      1.62s CPU      1.65s WALL (   89990 calls)
  3.      fft          :     10.97s CPU      3.11s WALL (     140 calls)
  4.                                         0.25s GPU  (      11 calls)
  5.      ffts         :      0.38s CPU      0.11s WALL (      21 calls)
  6.      fftw         :      1.05s CPU     36.22s WALL (   92852 calls)
  7.                                        20.11s GPU  (   92852 calls)
  8.      interpolate  :      1.22s CPU      0.43s WALL (      11 calls)

  9.      Parallel routines

  10.      PWSCF        :    283.93s CPU    284.18s WALL
复制代码


作者
Author:
kuangll    时间: 2021-12-6 21:33
喵星大佬 发表于 2021-12-6 14:52
不好说,也可能是因为内存速度的原因,毕竟V100是HBM2显存,比DDR4快接近一个数量级

有道理,需要用工具分析下才知道是哪一块对性能影响比较大。
作者
Author:
喵星大佬    时间: 2021-12-6 23:44
本帖最后由 喵星大佬 于 2021-12-9 05:23 编辑
kuangll 发表于 2021-12-6 21:30
还是石墨炔算例,补充一个A100 40GB单卡测试结果, 运行时间284.18s,相比前面V100提升1.6倍。(注:使用了 ...

如果仅以这个例子的速度来看,一块A100近6W,由于跑的时候CPU基本在瞧所以成本上不计入,24核的2678V3加上内存和板子算近8000,近似算8倍价格。即使不考虑并行效率要达到这个速度也要6倍左右,这样看来专业卡的性价比反而并不算低。
按照Nvidia官方的测试,QE在4*A100上能做到相对于2代黄金双路36核15倍的速度提升(SXM版,4*PCIe版为11倍)

其实在Gromacs的时候发现了,按照官方的测试,A100的速度明显快于A40(A6000),所以显然也快与3090,多卡并行方面更加明显,显然是因为更好的NVLink的优势,跑单任务速度扩展性相对于一般游戏卡好得多。当然价格肯定还是高的多的,就看手头有多少了

相关测试结果可以看这里

https://developer.nvidia.com/hpc-application-performance

作者
Author:
hzliew    时间: 2022-11-28 14:32
楼主好,请问一下,为什么我按照您这个方法安装,在configure的时候总是退出啊?提示是:
............
setting LDFLAGS... -g -pthread -fopenmp
checking for Fortran flag to compile .f90 files... (cached) none
checking whether Fortran compiler accepts -Mcuda=cuda11.8... no
configure: error: You do not have the cudafor module. Are you using NVHPC compiler?

作者
Author:
tanzicong    时间: 2022-12-4 15:57
hzliew 发表于 2022-11-28 14:32
楼主好,请问一下,为什么我按照您这个方法安装,在configure的时候总是退出啊?提示是:
............
s ...

CUDA环境没有配置好,请检查以下是否已经把nvidia hpc sdk的套件添加到环境变量中。nvcc --version/pgcc --version是否有返回信息?或者改用module来调用cuda 环境。
作者
Author:
hzliew    时间: 2023-1-18 19:06
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
pgcc --version

pgcc (aka nvc) 22.11-0 64-bit target on x86-64 Linux -tp haswell
PGI Compilers and Tools
Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES.  All rights reserved.

包括nvcc,nvfortran,等等,都有版本显示。
但始终提示出错:
                    Sets the limit of stack variables in a procedure or kernel, in KB
    ptxinfo         Print ptxas information
    [no]unroll      Enable automatic inner loop unrolling (default at -O3)
    [no]managed     Use CUDA Managed Memory
    beta            Enable beta code generation features
    autocompare     Automatically compare OpenACC CPU/GPU results: implies redundant
    redundant       Redundant OpenACC CPU/GPU execution
    [no]implicitsections
                    Implicitly convert array element to array section in OpenMP or OpenACC data clauses
make[1]: *** [../make.inc:16:parallel_include.o] 错误 1
make[1]: 离开目录“/home/hz/Downloads/qe-7.1/UtilXlib”
make: *** [Makefile:209:libutil] 错误 1

不知道是何故?
作者
Author:
Santz    时间: 2024-2-21 14:15
hzliew 发表于 2022-11-28 14:32
楼主好,请问一下,为什么我按照您这个方法安装,在configure的时候总是退出啊?提示是:
............
s ...

这个错误大概率是因为./configure使用的还是gfortran,而非nvfortran,尽量使用最新的nvhpc。在./configure之前确保已加载了nvhpc。
  1. module load nvhpc/23.11
  2. export PATH=/home/software/apps/nvidia/hpc_sdk/23.11/Linux_x86_64/23.11/compilers/bin:$PATH
  3. export MANPATH=/home/software/apps/nvidia/hpc_sdk/23.11/Linux_x86_64/23.11/compilers/man:$MANPATH
  4. export PATH=/home/software/apps/nvidia/hpc_sdk/23.11/Linux_x86_64/23.11/comm_libs/mpi/bin:$PATH
复制代码


作者
Author:
snljty2    时间: 2024-2-21 14:26
hzliew 发表于 2022-11-28 14:32
楼主好,请问一下,为什么我按照您这个方法安装,在configure的时候总是退出啊?提示是:
............
s ...

参考 13楼 ./configure的参数加上
  1. F90=`which pgfortran` CC=`which pgcc` MPIF90=`which mpif90`
复制代码

作者
Author:
qchem    时间: 2024-4-2 21:32
snljty 发表于 2021-11-2 17:59
刚编译了一下QE 6.8的GPU版本,借宝地做一下记录。
QE 6.8版本不管是GPU版本还是CPU版本都需要下载一个dev ...

checking version of nvfortran... nvfortran 24.3-0
setting F90... nvfortran
setting MPIF90... nvfortran
checking whether the compiler supports GNU C... yes
checking whether /opt/nvidia/hpc_sdk/Linux_x86_64/24.3/compilers/bin/pgcc accepts -g... yes
checking for /opt/nvidia/hpc_sdk/Linux_x86_64/24.3/compilers/bin/pgcc option to enable C11 features... none needed
setting CC... /opt/nvidia/hpc_sdk/Linux_x86_64/24.3/compilers/bin/pgcc
setting CFLAGS... -O3
using F90... nvfortran
setting FFLAGS... -fast -mp
setting F90FLAGS... -fast -Mcache_align -Mpreprocess -Mlarge_arrays -mp
setting FFLAGS_NOOPT... -O0
setting FFLAGS_NOMAIN... -Mnomain
setting CPP... cpp
setting CPPFLAGS... -P -traditional -Uvector
setting LD... nvfortran
setting LDFLAGS... -mp
checking whether Fortran compiler accepts -cuda -gpu=cuda12.4... no
configure: error: You do not have the cudafor module. Are you using NVHPC compiler?

还是出错呀,请问要怎么办?
作者
Author:
snljty2    时间: 2024-6-4 16:20
qchem 发表于 2024-4-2 21:32
checking version of nvfortran... nvfortran 24.3-0
setting F90... nvfortran
setting MPIF90... nvf ...

在源码目录install/configure文件里搜
  1. elif test "$pgf_version" != ""
复制代码
,找到后面几行的
  1. version=`echo $pgf_version | cut -d ' ' -f2`
复制代码
一句,改成
  1. version=`echo $pgf_version | sed 's/(.*) //' | awk '{print $2}'`
复制代码
。然后记住使用的CUDA版本得是对应NvHPC支持的版本,可以尝试用NvHPC自带的CUDA环境。




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