1) 随着VASP.6.2.0,我们正式发布了VASP:Official的OpenACC GPU端口,因为我们现在强烈建议使用此OpenACC版本在GPU加速系统上运行VASP。 VASP以前的CUDA-C GPU端口被认为已弃用,不再积极开发、维护或支持。截至VASP.6.3.0,VASP的CUDA-C GPU端口已完全断开。 CUDA C已经GG了,不太明白原因,应该CUDA C性能会好一些吧? 2) 软件堆栈 编译器 要编译VASP的OpenACC版本,您需要NVIDIA HPC-SDK的最新版本(>=21.2)。 原则上,任何至少支持OpenACC标准2.6的编译器都应该做到这一点,但我们只尝试并测试了上述编译器。 注意:NVIDIA HPC-SDK版本22.1和22.2有一个严重的错误,禁止将OpenACC版本与OpenMP线程一起执行。当使用这些编译器版本时,您应该在不支持OpenMP的情况下进行编译。自NVIDIA HPC-SDK版本22.3起,此错误已修复。 图书馆 数字库:FFTW、BLAS、LAPACK和scaLAPACK。如果您使用的是NVIDIA HPC-SDK,您必须自己安装的唯一数字库是FFTW。后三种(BLAS、LAPACK和scaLAPACK)随SDK一起提供。或者,您也可以链接到提供这四种功能的英特尔oneAPI MKL库的安装。 NVIDIA CUDA工具包(>=10.0)。所有必需的CUDA工具包组件都作为NVIDIA HPC-SDK的一部分提供。 一个支持CUDA的MPI版本。与NVIDIA HPC-SDK一起打包的OpenMPI安装具有CUDA意识。 NVIDIA集体通信库(NCCL)(>=2.7.8)。这个库不是一个严格的要求,但出于性能原因,强烈建议使用它。NCCL的适当安装作为NVIDIA HPC-SDK的一部分进行装运。 驱动程序 您需要一个至少支持CUDA-10.0的CUDA驱动程序。 3) 硬件 我们只使用以下NVIDIA GPU测试了VASP的OpenACC GPU端口: NVIDIA数据中心GPU:P100(Pascal)、V100(Volta)和A100(Ampere)。 NVIDIA Quadro GPU:GP100(Pascal)和GV100(Volta)。 注意:在其他NVIDIA GPU(如“游戏”硬件)上运行VASP在技术上是可行的,但不可取:这些GPU不太适合,因为它们不提供快速双精度浮点运算(FP64)性能,而且通常内存较小,没有纠错码(ECC)功能。 4) 特点和限制 VASP的大多数功能都已使用OpenACC移植到GPU,但涉及RPA:GW和ACFDT的所有功能除外。这是正在进行的工作。 出于性能原因,应避免使用波函数的并行FFT(NCORE>1)。目前,即使INCAR文件中另有规定,OpenACC版本也会自动切换到NCORE=1。 由于使用了NCCL,VASP的OpenACC版本只能使用每个可用GPU的单个MPI列来执行: 在大多数情况下,使用NCCL具有很大的性能优势。然而,我们意识到,对于小型系统上的计算,保留多个MPI列共享GPU的能力是有用的,并计划使NCCL的使用成为可选的,以消除这一限制。 5) |
说点什么...