《GPAW学习笔记》之安装GPAW
运行环境:Ubuntu 22.04.2 LTS
虚拟机:Oracle VM VirtualBox
由于网上有很多Ubuntu配置教程,在这里不再讲述
由于宿舍电压不稳定,导致我的台式机硬盘损坏,所以在这里连带Ubuntu安装教程一并填写(一天跳闸20次的宿舍,不坏也得坏了)
安装Ubuntu虚拟机
注:如果你用的超算(Debian系Linux)或者已有虚拟机,请跳过
首先安装VirtualBox
从官网下载好之后,如果不会配置,一路确认安装即可
然后下载Ubuntu
推荐下载Ubuntu的LTS版本(通常来说,LTS版本要更加的稳定,不容易配置时出现各种奇怪的问题)
下载完成后,打开VirtualBox,选择注册,会打开新建虚拟电脑的对话框
名称:自己随便输,因为本篇是学习GPAW,所以输入GPAW,如果你们有其他用途可以自行更改
文件夹:存放虚拟机的位置,不建议放C盘,我放在了D:\VirtualBox VMs
虚拟光驱:找到你下载的Ubuntu系统,文件后缀名是iso的(什么?如果你连什么是文件后缀名都不知道的话,我建议你在安装之前先去学一下电脑基本知识)
版本、类型:VirtualBox会自动识别Ubuntu的版本,这个不需要你填写
跳过自动安装:我不喜欢自动安装(至少我就没有用VirturalBox自动安装成功过),在此处讲解下怎么手动安装
上面都填写好后,点击下一步
内存大小:建议输入4G,毕竟现在电脑几乎都是16G了,4G也没啥大影响,当然如果你觉得没必要,2G也是可以的(1G=1024MB)
处理器:分配2核就可以了(如果只是安装和学习为目的的话,如果是计算任务的话,越多越好,内存大小同理)
启用EFI:用不上,不用管
都填写好之后,点击下一步
VirtualBox默认创建25G大小的虚拟硬盘,足够GPAW使用(如果有其它打算,请另行设置)
点击下一步即可
最后确认一下前面的参数是否设置无误,没有问题完成即可
于是,左边的虚拟系统便多出一个名为GPAW的系统
点击上方的启动打开虚拟机
打开虚拟机之后,会进入Ubuntu的GRUB界面,直接回车即可
注:安装过程如果遇到画面显示不全,无法点击确定,可以使用 ALT+F7
移动窗口
把语言栏拉到最下方,选择中文(简体),然后点击安装Ubuntu
键盘布局:默认chinese即可
更新和其他软件:最小安装即可,安装Ubuntu时更新
安装类型:清除整个磁盘并安装Ubuntu
将改动写入磁盘,直接继续
地址位置随便点到国内的地方就可以,不需要多准
账户设置部分请根据自己的实际需要输入,建议选择自动登录
最后耐心等待即可
安装好后Ubuntu会自动重启(有个需要你按回车的画面)
注:本文作者不需要用GPAW进行高负载任务计算,所以很多参数设置的都很小(能跑就行),主要是学习如何安装及向着解析GPAW代码为目的
安装GPAW之前,需要先对Ubuntu进行一次更新,顺便安装Vim编辑器
sudo apt update && sudo apt upgrade -y
sudo apt-get install vim -y #vim还是很有必要装的,如果你会用nano,后续修改可以自行选择
安装GPAW运行所需环境
这里列出了GPAW所有必要运行文件
还有提高性能的优化库
- MPI(用于并行化计算)
- OpenMP(用于并行化计算)
- BLACS和ScaLAPACK(分别用于并行计算线性代数通信和高性能线性代数并行计算)
- ELPA(大规模密集矩阵特征值问题求解器)
- FFTW(快速计算离散傅里叶变换的C语言程序集)
- libvdwxc(范德华密度泛函理论交换相关函数库)
安装基本运行库
考虑到本文编写时,Ubuntu官方所提供镜像均已默认安装Python3.8或更高版本,所以此处不再写Python的安装方式。
注:考虑到上述软件随着更新,其版本名可能发生一定的变化,故本教程编写时,所有转移(切换)工作目录具体指令未给出,请自行使用 cd
指令加上解压之后的目录名称,此后不在过多赘述。
安装Numpy,Scipy,matplotlib和ASE
先安装pip
sudo apt-get install python3-pip -y
在终端中输入命令
pip install --upgrade --user numpy scipy matplotlib ase
安装好之后配置环境变量
echo "export PATH=$PATH:/home/(你的用户名,终端中@前面的名字)/.local/bin" >> ~/.profile
source ~/.profile
注:如果安装ase[test],运行测试后会有报错,但是查看报错后发现多数报错是说明numpy中有语法即将过时,不是因为安装问题导致的报错
安装C编译器和LibXC
输入以下代码安装C编译器和Fortran编译器
sudo apt-get install autoconf automake libtool gfortran -y
去LibXC官网下载最新版本
下载好之后切换目录到下载位置
输入代码(tar.gz解压)
tar zxvf XXXX.tar.gz #请根据最新名称自行更改XXXX
或者(tar.bz2解压)
tar jxvf XXXX.tar.bz2
切换到解压目录,输入命令
autoreconf -i
./configure FC=gfortran --with-pic --prefix=/usr/local/LibXC
make
make check #检查通过后再安装
sudo make install
安装BLAS
注:如果要安装后续的优化库,请跳到后面看BLACS和ScaLAPACK的安装,不要按照这边安装
好大的坑
下载BLAS
wget http://www.netlib.org/blas/blas.tgz
解压BLAS
tar xvf blas.tgz #可能会有忽略未知的扩展头关键字报错,不影响使用
安装BLAS
切换至解压目录后,输入
gfortran -c -O3 *.f
ar rv libblas.a *.o
sudo cp libblas.a /usr/local/lib
至此,GPAW所需基本库已经安装完毕
安装优化库
安装MPI
去官网下载最新版MPI安装文件
切换至下载目录输入代码
tar zxvf XXXX.tar.gz
切换至解压目录后,输入代码
./configure --prefix=/usr/local/mpich
make #这个make后得有1个小时,自己随便干点啥,别闲着
make check
sudo make install
配置环境变量
echo "export PATH=$PATH:/usr/local/mpich/bin" >> ~/.profile
source ~/.profile
安装BLACS和ScaLAPACK
下载BLACS后,转到下载目录,执行代码
tar xvf mpiblacs.tgz
cd BLACS/BMAKES
cp Bmake.MPI-LINUX ../Bmake.inc
cd ..
pwd
#(将pwd执行后给出的目录记录下来)
vim Bmake.inc
然后,输入 i
进入编辑模式
将16行 BTOPdir
,198行 F77
和203行 CC
,如下修改
BTOPdir = (把记录的目录放到这里)
F77 = $(MPIdir)/bin/mpif77
CC = $(MPIdir)/bin/mpicc
修改好后,按 esc
,输入 :wq
保存并退出
继续输入
make mpi
编译完成之后,会在LIB目录下生成三个 .a
文件
cd LIB/
cp blacsCinit_MPI-LINUX-0.a libblacsC.a
cp blacsF77init_MPI-LINUX-0.a libblacsF77.a
cp blacs_MPI-LINUX-0.a libblacsMPI.a
rm blacsCinit_MPI-LINUX-0.a blacsF77init_MPI-LINUX-0.a blacs_MPI-LINUX-0.a
sudo cp *.a /usr/local/lib
至此,BLACS安装完成
接下来下载LAPACK
下载好后,转到下载目录
tar zxvf XXXX.tar.gz
转到解压目录
cp make.inc.example make.inc
vim Makefile
按 i
进入编辑模式,将12-13行做如下修改
#lib: lapacklib tmglib
lib: blaslib variants lapacklib tmglib
修改好后,按 esc
,输入 :wq
保存并退出
继续输入
make lib
cp libbrefblas.a libblas.a
rm libbrefblas.a
sudo cp *.a /usr/local/lib
至此,LAPACK安装完成
接下来下载ScaLAPACK
下载好后,转到下载目录
tar zxvf XXXX.tar.gz
转到解压目录
cp SLmake.inc.example SLmake.inc
vim SLmake.inc
按 i
如下修改 SLmake.inc
29-33行和57-60行
FC = mpifort
CC = mpicc
NOOPT = -O0 -fPIC -std=legacy
FCFLAGS = -O3 -fPIC -std=legacy
CCFLAGS = -O3 -fPIC
BLASLIB = /usr/local/lib/libblas.a
LAPACKLIB = /usr/local/lib/liblapack.a
LIBS = $(LAPACKLIB) $(BLASLIB)
编辑好之后,按 esc
退出编辑,按 :wq
保存并退出
最后输入
make
sudo cp *.a /usr/local/lib
至此,ScaLAPACK安装完成
安装ELPA
从官网下载最新版ELPA(只需下载tar.gz文件),切换至下载目录,执行
tar zxvf XXXX.tar.gz
切换至解压目录,执行
./configure --prefix=/usr/local/elpa --enable-openmp CC=mpicc FC=mpifort CXX=mpicxx CFLAGS="-O3 -fPIC -march=native -mfma" FCFLAGS="-O3 -fPIC -march=native -mfma" CXXFLAGS="-O3 -fPIC -march=native -mfma" 'SCALAPACK_LDFLAGS=-L/usr/local/lib -lblas -lblacsC -lblacsF77 -lblacsMPI -llapack -lscalapack' 'SCALAPACK_FCFLAGS=-L/usr/local/lib -lblas -lblacsC -lblacsF77 -lblacsMPI -llapack -lscalapack' --disable-avx512
注:如果你的CPU支持AVX512,请在行最后删去 --disable-avx512
,如果你的CPU不支持AVX2,请最后加上 --disable-avx2
,如果你实在不知道你的CPU支持什么,就输入 lscpu
,查看最后输出的 Flags
中有没有AVX2和AVX512
(我不知道为什么,我的CPU支持AVX2,但是启用就会提示无法用AVX2编译测试程序)
(找到问题了,需要加上 -mfma
参数)
继续输入
make
make check #这里需要等超长时间(可能有一个下午了),建议这里输入后直接做其他事情,我这里测试过了208个,4个失败,不知道谁有没有更好的解决办法,让他全部PASS
sudo make install
sudo mv /usr/local/elpa/include/(请在这里直接按tab补全目录)/* /usr/local/elpa/include
sudo mv /usr/local/elpa/lib/libelpa_openmp.a /usr/local/elpa/lib/libelpa.a
sudo mv /usr/local/elpa/lib/libelpa_openmp.la /usr/local/elpa/lib/libelpa.la
sudo mv /usr/local/elpa/lib/libelpa_openmp.so /usr/local/elpa/lib/libelpa.so
至此,ELPA安装完成
安装FFTW
从官网下载最新版FFTW,切换至下载目录,执行
tar zxvf XXXX.tar.gz
切换至解压目录,执行
./configure --prefix=/usr/local/FFTW --enable-mpi --enable-openmp --with-pic MPICC=mpicc CC=gcc F77=gfortran
make
make check
sudo make install
至此,FFTW安装完成
安装libvdwxc
从官网下载最新版libvdwxc
转到下载目录,输入
tar zxvf XXXX.tar.gz
切换到解压目录,输入
./configure --prefix=/usr/local/libvdwxc --with-mpi=/usr/local/mpich --with-fftw3=/usr/local/FFTW CC=gcc FC=gfortran CFLAGS="-O3 -march=native -fPIC" FCFLAGS="-O3 -march=native -fPIC"
make
make check
sudo make install
至此,所有GPAW运行所需库均已安装完毕
安装GPAW
本文不选择使用pip的方式安装GPAW,因为pip配置不会自动识别优化库
安装git并克隆GPAW最新版本(本文使用开发版)
sudo apt-get install git -y
git clone https://gitlab.com/gpaw/gpaw.git
cd gpaw/
cp siteconfig_example.py siteconfig.py
vim siteconfig.py
输入 i
后,在第37行做如下修改
mpi = True
if mpi:
compiler = 'mpicc'
extra_link_args += ['-fopenmp']
extra_compile_args += ['-fopenmp']
修改后,在第44行做如下修改
fftw = True
if fftw:
libraries += ['fftw3']
include_dirs += ['/usr/local/FFTW/include']
library_dirs += ['/usr/local/FFTW/lib']
修改后,在第50行做如下修改
scalapack = True
if scalapack:
libraries += ['scalapack','lapack','blas']
dirs = '/usr/local/lib/'
library_dirs += [dirs]
extra_link_args += [dirs + 'libscalapack.a',dirs + 'liblapack.a',dirs + 'libblas.a']
修改后,在第58行做如下修改
if 1:
elpa = True
elpadir = '/usr/local/elpa'
libraries += ['elpa']
library_dirs += ['{}/lib'.format(elpadir)]
runtime_library_dirs += ['{}/lib'.format(elpadir)]
include_dirs += ['{}/include'.format(elpadir)]
修改后,在第71行做如下修改
if 1:
xc = '/usr/local/LibXC/'
include_dirs += [xc + 'include']
extra_link_args += [xc + 'lib/libxc.a']
if 'xc' in libraries:
libraries.remove('xc')
修改后,在第93行做如下修改
if 1:
libvdwxc = True
path = '/usr/local/libvdwxc'
include_dirs += ['%s/include' % path]
library_dirs += ['%s/lib' % path]
runtime_library_dirs += ['%s/lib' % path]
libraries += ['vdwxc']
按 esc
输入 :wq
保存并退出
继续输入
python3 setup.py build
python3 setup.py install --user
echo "PATH=$PATH:/home/(终端@前的用户名)/.local/bin" >> ~/.profile
source ~/.profile
至此,GPAW安装完成,运行 gpaw info
测试是否安装成功,如要测试GPAW是否可以正常计算,请执行以下指令
sudo mkdir /usr/local/GPAW
sudo chmod 777 /usr/local/GPAW
gpaw install-data /usr/local/GPAW #建议这里科学上网,否则这个数据库半天也下载不来
执行完毕后,输入 gpaw test
测试计算
PS:终于,本站长经过不断试错,终于找到一套可以让任何Linux小白装好GPAW完全体的方法!
于24.3.28编写,24.4.4完成GPAW基本安装编写,24.4.9完成GPAW完全体安装编写。