《GPAW学习笔记》之安装GPAW

《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所有必要运行文件

  • Python3.8 及更高
  • ASE(原子模拟环境)
  • Numpy(科学计算库)
  • Scipy(高级科学计算库)
  • LibXC(交换相关泛函库)
  • C语言编译器
  • BLAS(基础线性代数程序集)

还有提高性能的优化库

  • MPI(用于并行化计算)
  • OpenMP(用于并行化计算)
  • BLACSScaLAPACK(分别用于并行计算线性代数通信和高性能线性代数并行计算)
  • 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.inc29-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完全体安装编写。

浮士德_彩虹.jpg

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息