一、Abinit简介

Abinit是一个软件套件,用于计算材料的光学,机械,振动和其他可观察特性。从密度泛函理论的量子方程式开始,可以建立基于DFT的微扰理论和多体格林函数(GW和DMFT)的高级应用。 Abinit可以计算任何化学成分的分子,纳米结构和固体,并带有几个完整而强大的原子电位表。
其主程序使用赝势和平面波,用密度泛函理论计算总能量,电荷密度,分子和周期性固体的电子结构,进行几何优化和分子动力学模拟,用TDDFT(对分子)或GW近似(多体微扰理论)计算激发态。此外还提供了大量的工具程序。程序的基组库包括了元素周期表1-109号所有元素。ABINIT适于固体物理,材料科学,化学和材料工程的研究,包括固体,分子,材料的表面,以及界面,如导体、半导体、绝缘体和金属。
Abinit关键字是:功能,可靠性,可移植性,文档,带有“免费软件许可证”。

简言之,Abinit是一个免费开源的物理化学粒子模拟计算软件。

二、系统环境说明与安装前准备

1.主机配置

CPU: 双路 Xeon Sliver 4114

内存: 128GB (8*16GB 6通道)

GPU: Tesla P100

硬盘: 1TB SSD (读取600+MB/s 写入600+MB/s 复制300+MB/s)

2.系统环境

CentOS 7.4

3.预先准备软件

本文使用intel的icc,ifort编译器,所以全程手动编译安装,没有用自动脚本。

如何安装intel编译器,请参照其他文章配置intel parallel studio xe

常用开发工具

git, make, automake, autoconf, libtool, perl, python,

编译器

icc,icpc,ifort(本文使用intel编译器)

编译依赖库

openmp

MPI库

openmpi

下载Abinit 8.6.3

wget https://www.abinit.org/sites/default/files/packages/abinit-8.6.3.tar.gz

解压缩

gunzip abinit-x.y.z.tar.gz | tar -xvf abinit-x.y.z.tar

最后得到abinit-x.y.z文件夹(x.y.z是版本号),即是源代码位置,后文的工作目录即为该文件夹

文件夹结构如下:

  • the sources of the abinit code (also, the files needed for generating the blas and lapack libraries), in the directories “src” and “lib”;
  • the documentation, in the directory “doc”;
  • the complete set of tests, and the pseudopotentials needed for the tests, in the directory “tests”;
  • all the scripts and information needed to produce makefiles, in other directories, especially “config”.

三、编译安装与配置

configure

编译CPU版本:

为了使用intel编译器,需要在配置前设置环境变量,否则默认的是GUN编译器。

另外,因为intel编译器自身集成了openmp库,所以这里默认开启了openmp支持,如果不想用或者没有openmp库,请删除相关参数。

创建build目录,方便文件管理:

mkdir ./build

cd ./build

编译:

../configure CC=icc CXX=icpc FC=ifort CFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” CXXFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” FCFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” –enable-openmp

需要注意修改一下几个地方:

1、请将CC CXX FC更改为你环境下的编译器(比如gcc g++ gfortran)

2、–enable-openmp是开启openmp库并行化,如果不使用openmp,请删除openmp相关的参数

3、请注意CFLAGS CXXFLAGS FCFLAGS里面的-qopenmp,该参数只适用于intel的编译器。GUN gcc编译器请用-fopenmp

4、请注意CFLAGS CXXFLAGS FCFLAGS里面的-xCORE-AVX512,这个编译选项是开启avx512指令集优化,适用于intel Skylake-X架构的Xeon处理器。如果是Xeon Phi的KNL架构,请改为-xMIC-AVX512,或者改为-xCOMMON-AVX512(适用于所有支持AVX512的处理器)。如果你的处理器不支持AVX512指令集,请删掉此选项,或者改为AVX2 AVX

编译支持MPI的CPU版本:

请确保openmpi库配置正确并加入了环境变量

../configure CC=mpiicc CXX=mpiicpc FC=mpiifort CFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” CXXFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” FCFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” –enable-openmp –enable-mpi

需要注意修改一下几个地方:

1、请将CC CXX FC更改为你环境下的mpi编译器(比如mpicc mpicxx mpif90)

2、请注意CFLAGS CXXFLAGS FCFLAGS里面的-qopenmp,该参数只适用于intel的编译器。GUN gcc编译器请用-fopenmp

3、请注意CFLAGS CXXFLAGS FCFLAGS里面的-xCORE-AVX512,这个编译选项是开启avx512指令集优化,适用于intel Skylake-X架构的Xeon处理器。如果是Xeon Phi的KNL架构,请改为-xMIC-AVX512,或者改为-xCOMMON-AVX512(适用于所有支持AVX512的处理器)。如果你的处理器不支持AVX512指令集,请删掉此选项,或者改为AVX2 AVX

编译GPU版本:

使用GPU可以加速矩阵运算及某些高度并行的浮点计算,而abinit也是支持GPU加速的。

因此这里可以修改参数,主要是添加mpi和cuda的支持,使之编译为GPU版本:

../configure CC=mpiicc CXX=mpiicpc FC=mpiifort CFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” CXXFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” FCFLAGS=”-g -O3 -xCORE-AVX512 -qopenmp” –enable-openmp –enable-mpi –enable-gpu –with-gpu-flavor=cuda-double –with-gpu-libs=”-L/usr/local/cuda/lib64 -lcublas -lcufft -lcudart” –with-gpu-incs=”-I/usr/local/cuda/include” NVCC=”/usr/local/cuda/bin/nvcc” NVCC_CPPFLAGS=”-DHAVE_CUDA_SDK” NVCC_CFLAGS=”-O3 -arch=sm_60 -Xptxas=-v –use_fast_math –compiler-options -O3,-Wall,-fPIC,-g -I/usr/local/cuda/include”

需要注意修改一下几个地方:

1、务必保证openmpi配置正确且加入了环境变量,因为GPU版本需要用到mpi

2、请将CC CXX FC更改为你环境下的mpi编译器(比如mpicc mpicxx mpif90)

3、请注意CFLAGS CXXFLAGS FCFLAGS里面的-xCORE-AVX512,这个编译选项是开启avx512指令集优化,适用于intel Skylake-X架构的Xeon处理器。如果是Xeon Phi的KNL架构,请改为-xMIC-AVX512,或者改为-xCOMMON-AVX512(适用于所有支持AVX512的处理器)。如果你的处理器不支持AVX512指令集,请删掉此选项,或者改为AVX2 AVX

4、请注意CFLAGS CXXFLAGS FCFLAGS里面的-qopenmp,该参数只适用于intel的编译器。GUN gcc编译器请用-fopenmp

5、把gpu-libs gpu-incs NVCC NVCC_CFLAGS的引用目录修改为你环境下的目录

6、修改NVCC_CFLAGS中arch参数的值(比如我的P100对应的是sm_60),使之对应你的GPU,具体对照表如下:

  • Fermi (CUDA 3.2 and later, deprecated from CUDA 9):
    • SM20 or SM_20, compute_30 – Older cards such as GeForce 400, 500, 600, GT-630
  • Kepler (CUDA 5 and later):
    • SM30 or SM_30, compute_30 – Kepler architecture (generic – Tesla K40/K80, GeForce 700, GT-730)
      Adds support for unified memory programming
    • SM35 or SM_35, compute_35 – More specific Tesla K40
      Adds support for dynamic parallelism. Shows no real benefit over SM30 in my experience.
    • SM37 or SM_37, compute_37 – More specific Tesla K80
      Adds a few more registers. Shows no real benefit over SM30 in my experience
  • Maxwell (CUDA 6 and later):
    • SM50 or SM_50, compute_50 – Tesla/Quadro M series
    • SM52 or SM_52, compute_52 – Quadro M6000 , GeForce 900, GTX-970, GTX-980, GTX Titan X
    • SM53 or SM_53, compute_53 – Tegra (Jetson) TX1 / Tegra X1
  • Pascal (CUDA 8 and later)
    • SM60 or SM_60, compute_60 – GP100/Tesla P100 – DGX-1 (Generic Pascal)
    • SM61 or SM_61, compute_61 – GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4
    • SM62 or SM_62, compute_62 – Drive-PX2, Tegra (Jetson) TX2, Denver-based GPU
  • Volta (CUDA 9 and later)
    • SM70 or SM_70, compute_70 – Tesla V100
    • SM71 or SM_71, compute_71 – probably not implemented
    • SM72 or SM_72, compute_72 – currently unknown

如果intel编译器、openmpi以及cuda是配置好了的话,上述步骤应该不会出现问题,等待一会儿就能得到Makefile了

Make

现在可以检查一下Makefile是不是用的intel编译器,如果没什么问题的话,就可以开始编译了

make -j40 multi multi_nprocs=40

# 这里请把数字替换成对应硬件配置的cpu核数(开启超线程即为cpu逻辑核心数量)

等个十多分钟应该就能编译完成了。

四、测试与分析

1.快速测试

在build目录下,继续执行命令:

make test_fast

如果出现:

Status file, reporting on built-in test fast

==> The run finished cleanly.

Moreover, comparison of the total energy, and other (few) relevant quantities with reference values has been successful.

This does not mean that no problem is present, however.

Please run the complete set of ABINIT tests to gain a better confidence in your installation.

就说明测试成功,下面可以做其他几个测试:

make tests_in

这个要慢一些,不过结果跟上面一样的。

2.完整测试

测试命令:

python ../tests/runtests.py -j40

# 运行abinit-x.y.z/tests/目录下的runtests.py,其中-j40是并发运行40个线程

# 详细使用参数通过python ../tests/runtests.py –help 命令查看

等个几分钟后,测试完成,结果如下:

详细的测试结果可以在Test_suite文件夹中查看

本次测试共调用了40线程,详细报告可以点此查看

3、GPU测试

 

参考链接:

某位大佬的博客:http://blog.chinaunix.net/uid-23354495-id-4830592.html

github的安装文档:https://github.com/abinit/abinit/blob/master/INSTALL

官方文档:https://www.abinit.org/sites/default/files/last/install_notes/install.html

并行编译:http://blog.csdn.net/xztjhs/article/details/53844121

http://blog.sciencenet.cn/blog-478347-999728.html

高级编译:http://blog.sina.com.cn/s/blog_6594d5d30102wwty.html

GPU版本编译:https://forum.abinit.org/viewtopic.php?f=2&t=1500

某中文教程:http://www.wendangku.net/doc/f05bb3dcbed5b9f3f80f1c18.html


0 条评论

发表评论