UCL-RITS / rcps-buildscripts

Scripts to automate package builds on RC Platforms
MIT License
39 stars 27 forks source link

Install Request: GPAW #585

Open kaibinary opened 2 months ago

kaibinary commented 2 months ago

GPAW is a density-functional theory (DFT) Python code based on the projector-augmented wave (PAW) method and the atomic simulation environment (ASE).

Application: GPAW version 24.6.0

Link: https://gitlab.com/gpaw/gpaw

Cluster: Young

License: GNU General Public License v3.0 or later

Request 1279990

kaibinary commented 2 months ago

Testing personal install;

module purge
module load python3/3.9-gnu-10.2.0
module load mpi/openmpi/4.0.5/gnu-10.2.0
virtualenv ~/py-gpaw
source ~/py-gpaw/bin/activate
pip install --no-cache-dir pip --upgrade

wget https://gitlab.com/libxc/libxc/-/archive/6.2.2/libxc-6.2.2.tar.bz2
tar -xf libxc-6.2.2.tar.bz2 
cd libxc-6.2.2 
autoreconf -i
CFLAGS="-fPIC" ./configure --enable-shared --enable-static --disable-fortran --prefix=$HOME/libxc-6.2.2
make -j8
make install
cd ..

wget https://pypi.org/packages/source/g/gpaw/gpaw-24.6.0.tar.gz
tar -xf gpaw-24.6.0.tar.gz
cd gpaw-24.6.0
cat <<EOF > siteconfig.py
# MPI:
mpi = True
if mpi:
    compiler = 'mpicc'
    extra_compile_args += ['-fopenmp']
    extra_link_args += ['-fopenmp']

# OpenBlas:
libraries = ['blas']
library_dirs = ['/shared/ucl/apps/openblas/0.3.13-serial/gnu-10.2.0/lib']
include_dirs = ['/shared/ucl/apps/openblas/0.3.13-serial/gnu-10.2.0/include']
runtime_library_dirs = ['/shared/ucl/apps/openblas/0.3.13-serial/gnu-10.2.0/lib']

# FFTW3:
fftw = True
if fftw:
    libraries += ['fftw3']
    library_dirs += ['/shared/ucl/apps/fftw/3.3.9/gnu-10.2.0/lib']
    include_dirs += ['/shared/ucl/apps/fftw/3.3.9/gnu-10.2.0/include']
    runtime_library_dirs += ['/shared/ucl/apps/fftw/3.3.9/gnu-10.2.0/lib']

if 1:
    xc = '$HOME/libxc-6.2.2/'
    include_dirs += [xc + 'include']
    library_dirs += [xc + 'lib']
    extra_link_args += [xc + 'lib/libxc.a']
    runtime_library_dirs += [xc + 'lib']
EOF
pip install --no-cache-dir . 2>&1 | tee ~/gpaw_install_output.txt

Install went well.

kaibinary commented 2 months ago

Testing a parallel calculation.

(py-gpaw) [mmm0001@login02 gpaw-24.6.0]$ gpaw install-data ~/
Available setups and pseudopotentials
  [*] https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-24.1.0.tar.gz
      https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.9.20000.tar.gz
      https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.9.11271.tar.gz
      https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.9.9672.tar.gz
      https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.8.7929.tar.gz
      https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.6.6300.tar.gz
      https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.5.3574.tar.gz

Selected gpaw-setups-24.1.0.tar.gz.  Downloading...
Extracting tarball into /home/mmm0001/
Setups installed into /home/mmm0001/gpaw-setups-24.1.0.
Register this setup path in /home/mmm0001/.gpaw/rc.py? [y/n] y
Setup path registered in /home/mmm0001/.gpaw/rc.py.
Current GPAW setup paths in order of search priority:
   1. /home/mmm0001/gpaw-setups-24.1.0
Installation complete.
(py-gpaw) [mmm0001@login02 gpaw-24.6.0]$ gpaw -P 4 test
 -----------------------------------------------------------------------------------------------------------------
| python-3.9.6      /lustre/home/mmm0001/py-gpaw/bin/python                                                       |
| gpaw-24.6.0       /lustre/home/mmm0001/gpaw-24.6.0/gpaw/                                                        |
| ase-3.23.0        /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/ase/                                 |
| numpy-1.26.4      /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/numpy/                               |
| scipy-1.13.1      /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/scipy/                               |
| libxc-6.2.2       yes                                                                                           |
| _gpaw             /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/_gpaw.cpython-39-x86_64-linux-gnu.so |
| MPI enabled       yes                                                                                           |
| OpenMP enabled    yes                                                                                           |
| GPU enabled       no                                                                                            |
| GPU-aware MPI     no                                                                                            |
| CUPY              /lustre/home/mmm0001/gpaw-24.6.0/gpaw/gpu/cpupy/__init__.py                                   |
| scalapack         no                                                                                            |
| Elpa              no                                                                                            |
| FFTW              yes                                                                                           |
| libvdwxc          no                                                                                            |
| PAW-datasets (1)  /home/mmm0001/gpaw-setups-24.1.0                                                              |
 -----------------------------------------------------------------------------------------------------------------
Doing a test calculation (cores: 4): ... Done

Looks ok.

kaibinary commented 2 months ago

User requires a scalapack enabled version.

https://www.netlib.org/scalapack/

kaibinary commented 2 months ago

ScaLAPACK doesn't like GCC 10.2.0 b/c of https://github.com/Reference-ScaLAPACK/scalapack/issues/73

kaibinary commented 2 months ago

Trying out the ScaLAPACK's master branch (commit 25935e1);

module purge
module load python3/3.9-gnu-10.2.0
module load mpi/openmpi/4.0.5/gnu-10.2.0
module load cmake/3.27.3
virtualenv ~/py-gpaw
source ~/py-gpaw/bin/activate
pip install --no-cache-dir pip --upgrade

# libxc-6.2.2
wget https://gitlab.com/libxc/libxc/-/archive/6.2.2/libxc-6.2.2.tar.bz2
tar -xf libxc-6.2.2.tar.bz2 
cd libxc-6.2.2 
autoreconf -i
CFLAGS="-fPIC" ./configure --enable-shared --enable-static --disable-fortran --prefix=$HOME/libxc-6.2.2
make -j8
make install
cd ..

# scalapack
git clone https://github.com/Reference-ScaLAPACK/scalapack.git
cd scalapack
git checkout 25935e1
cmake CMakeLists.txt -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$HOME/scalapack-25935e1
make -j8
make install
cd ..

# gpaw
wget https://pypi.org/packages/source/g/gpaw/gpaw-24.6.0.tar.gz
tar -xf gpaw-24.6.0.tar.gz
cd gpaw-24.6.0
cat <<EOF > siteconfig.py
# MPI:
mpi = True
if mpi:
    compiler = 'mpicc'
    extra_compile_args += ['-fopenmp']
    extra_link_args += ['-fopenmp']

# OpenBlas:
libraries = ['blas']
library_dirs = ['/shared/ucl/apps/openblas/0.3.13-serial/gnu-10.2.0/lib']
include_dirs = ['/shared/ucl/apps/openblas/0.3.13-serial/gnu-10.2.0/include']
runtime_library_dirs = ['/shared/ucl/apps/openblas/0.3.13-serial/gnu-10.2.0/lib']

# FFTW3:
fftw = True
if fftw:
    libraries += ['fftw3']
    library_dirs += ['/shared/ucl/apps/fftw/3.3.9/gnu-10.2.0/lib']
    include_dirs += ['/shared/ucl/apps/fftw/3.3.9/gnu-10.2.0/include']
    runtime_library_dirs += ['/shared/ucl/apps/fftw/3.3.9/gnu-10.2.0/lib']

scalapack = True
if scalapack:
    libraries += ['scalapack']
    library_dirs += ['$HOME/scalapack-25935e1/lib']
    include_dirs += ['$HOME/scalapack-25935e1/include']
    runtime_library_dirs += ['$HOME/scalapack-25935e1/lib']

if 1:
    xc = '$HOME/libxc-6.2.2/'
    include_dirs += [xc + 'include']
    library_dirs += [xc + 'lib']
    extra_link_args += [xc + 'lib/libxc.a']
    runtime_library_dirs += [xc + 'lib']
EOF
pip install --no-cache-dir . 2>&1 | tee ~/gpaw_install_output.txt
cd ..

Testing a parallel run...

(py-gpaw) [mmm0001@login01 scalapack]$ gpaw -P 4 test
 -----------------------------------------------------------------------------------------------------------------
| python-3.9.6      /lustre/home/mmm0001/py-gpaw/bin/python                                                       |
| gpaw-24.6.0       /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/gpaw/                                |
| ase-3.23.0        /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/ase/                                 |
| numpy-1.26.4      /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/numpy/                               |
| scipy-1.13.1      /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/scipy/                               |
| libxc-6.2.2       yes                                                                                           |
| _gpaw             /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/_gpaw.cpython-39-x86_64-linux-gnu.so |
| MPI enabled       yes                                                                                           |
| OpenMP enabled    yes                                                                                           |
| GPU enabled       no                                                                                            |
| GPU-aware MPI     no                                                                                            |
| CUPY              /lustre/home/mmm0001/py-gpaw/lib/python3.9/site-packages/gpaw/gpu/cpupy/__init__.py           |
| scalapack         yes                                                                                           |
| Elpa              no                                                                                            |
| FFTW              yes                                                                                           |
| libvdwxc          no                                                                                            |
| PAW-datasets (1)  /home/mmm0001/gpaw-setups-24.1.0                                                              |
 -----------------------------------------------------------------------------------------------------------------
Doing a test calculation (cores: 4): ... Done