VASP / AlmaLinux 9@WSL2 (ARM) インストールメモ

構築中

アーキテクチャ確認:

uname -m
> aarch64

cat /etc/almalinux-release
lscpu

方針:

GNU Fortran + OpenMPI + OpenBLAS + (ScaLAPACK + ) FFTW 
VASP: GNU/FOSS構成の makefile.include.gnu / gnu_omp 


開発環境

sudo dnf groupinstall "Development Tools"
sudo dnf install gcc gcc-c++ gcc-gfortran make

sudo dnf install -y vim-minimal 
sudo dnf install -y vim-enhanced 
sudo dnf install -y nano

sudo dnf install rsync

BLAS系インストール:

sudo dnf config-manager --set-enabled crb
sudo dnf clean all
sudo dnf install epel-release
sudo dnf makecache

dnf repolist
> crb があることを確認

dnf search blas
dnf search lapack
dnf search flexiblas
> blas
> blas-devel
> lapack
> lapack-devel
> flexiblas
> flexiblas-devel
> flexiblas-openblas-openmp

sudo dnf install \
  blas blas-devel \
  lapack lapack-devel \
  flexiblas flexiblas-devel \
  flexiblas-openblas-openmp \
  fftw fftw-devel

ScaLAPACKはとりあえずあきらめる

HDF5:
sudo dnf install hdf5-openmpi hdf5-openmpi-devel

OpenMPI:

sudo dnf install openmpi openmpi-devel

which mpif90
mpif90 --version
> GNU Fortran ...
mpif90 -show

find /usr -name mpirun -o -name mpif90 -o -name mpifort 2>/dev/null
> /usr/lib64/openmpi/bin/mpirun
> /usr/lib64/openmpi/bin/mpif90
> /usr/lib64/openmpi/bin/mpifort

.bashrc:
export PATH=/usr/lib64/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH

python:

sudo dnf install -y \
  python3.12 \
  python3.12-pip \
  python3.12-devel \
  python3.12-tkinter \
  tk \
  tk-devel

tkinterの確認:
python -m tkinter

cd /home/share
python3.12 -m venv 312
source ./312/bin/activate

python -m pip install --upgrade pip setuptools wheel
python -m pip install \
  numpy \
  scipy \
  matplotlib \
  pandas \
  openpyxl

tkProgのインストール:
cd /home/share/tkProg
pip install requests bs4
./update_Linux.sh
python chklib.py
python setup.py


素のVASPコンパイル

vasp6.6.1_arm_wsl2_almalinux9/makefile.include

ライブラリの確認:
rpm -qa | grep -Ei 'blas|lapack|flexiblas|fftw'
ldconfig -p | grep -Ei 'blas|lapack|fftw'
> libflexiblas.so
> libblas.so
> liblapack.so
> libfftw3.so

tar xf vasp.6.6.1.tar.gz
cd vasp.6.6.1
cp arch/makefile.include.gnu_omp makefile.include

ライブラリの場所を確認:
rpm -ql openblas-devel | grep -E 'libopenblas.*\.so'
rpm -ql fftw-devel | grep -E 'libfftw3.*\.so'
rpm -ql scalapack-openmpi-devel | grep -E 'scalapack.*\.so'

makefile.include:
ScaLAPACKを無効化:
 grep -n -E 'scaLAPACK|SCALAPACK|BLAS|LAPACK|FFTW' makefile.include
 削除: -DscaLAPACK
 削除: SCALAPACK = ...
     LLIBS += $(SCALAPACK)

BLAS and LAPACK (OS提供のBLAS/LAPACKを使う):
pkg-config --libs blas
pkg-config --libs lapack
> -lblas
> -llapack

FFTW:
pkg-config --libs fftw3
pkg-config --cflags fftw3

makfeil.include:
BLASPACK = -llapack -lblas

# FFTW
LLIBS += -lfftw3 -lfftw3_omp
INCS += -I/usr/include

rpm -ql fftw-devel | grep fftw3.f
> /usr/include/fftw3.f

makfeil.include:
LLIBS += -lfftw3
INCS += -I/usr/include

最初: OFLAG = -O2
最適化版: OFLAG = -O3

make veryclean
make DEPS=1 -j4 std

実行:
export OMP_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1

mpirun -np 4 ./bin/vasp_std


未確認

HDF5版VASPコンパイル

ライブラリ場所確認:
rpm -ql hdf5-openmpi-devel

makfile.include:
CPP_OPTIONS += -DVASP_HDF5

HDF5_ROOT = ...
LLIBS += ...
INCS += ...