Skip to content

Instantly share code, notes, and snippets.

@TheIdealis
Last active October 12, 2023 14:43
Show Gist options
  • Save TheIdealis/cdefef5252421759003fb249f396c754 to your computer and use it in GitHub Desktop.
Save TheIdealis/cdefef5252421759003fb249f396c754 to your computer and use it in GitHub Desktop.
Compile Octopus on Draco

Octopus 13.0 on Draco

Versions

  • gcc 8.5.0
  • openmpi-4.1.1
  • hdf5-1.14.2
  • netcdf-c-4.9.2
  • netcdf-fortran-4.6.1
  • libxc-5.2.3
  • fftw-3.3.10
  • gsl-2.7
  • Openblas-0.3.24
  • scalapack-2.2.0

Preparation

module load mpi/openmpi
export CC=mpicc 
export CXX=mpicxx 
export FC=mpif90 
export F77=mpif77 
  • Please note, you cannot close your terminal before you finished all compilations, otherwise the environment variables will be lost.

  • if the configure script is missing, please run autoreconf -i

Compile HDF5

cd hdf5-1.10.6
mkdir install
export HDF5=$PWD/install
CFLAGS=-fPIC ./configure --enable-shared --enable-parallel --enable-fortran --enable-fortran2003 --prefix=$HDF5
make -j4
make install

Compile NETCDF

cd netcdf-c-4.6.3
mkdir install
export NETCDF=$PWD/install
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH

LDFLAGS=-L$HDF5/lib LIBS=-lhdf5 CPPFLAGS=-I$HDF5/include ./configure --prefix=$NETCDF
make -j4
make install

Compile NETCDF-FORTRAN

cd netcdf-fortran-4.5.2
mkdir install
# For gcc 10.x, so far
# export FCFLAGS="-w -fallow-argument-mismatch -O2"
# export FFLAGS="-w -fallow-argument-mismatch -O2"

LDFLAGS=-L$NETCDF/lib CPPFLAGS=-I$NETCDF/include LIBS=-lnetcdf ./configure --prefix=$NETCDF --enable-parallel-tests
make -j4
make install

Compile LIBXC

git clone https://gitlab.com/libxc/libxc.git

# checkout version 5 and copy the id
git --reset hard sha4-for-version
mkdir install
./configure --prefix=$PWD/install
make -j4
make install

Compile FFTW3

cd fftw-3.3.8
./configure --prefix=$PWD/install --enable-mpi
make -j4
make install
make clean
./configure --prefix=$PWD/install --enable-mpi --enable-float
make -j4
make install
export FFTw=$PWD/install

Compile PFFT

git clone https://github.com/mpip/pfft.git
cd pfft
CPPFLAGS=-I$FFTW/include LDFLAGS=-L$FFTW/lib ./configure --prefix=$PWD/install

Compile GSL

cd gsl-2.7
mkdir install

./configure --prefix=$PWD/install --disable-shared --enable-static
make -j4
make install
  • we were not sure what the best option would be here, so we used scalapack

Compile Openblas

cd OpenBLAS-0.3.24/
mkdir install
make CC=gcc FC=gfortran PREFIX=/path/to/OpenBLAS-0.3.24/install -j4
make PREFIX=$PWD/install install

Compile Scalapack

cd scalapack-2.2.0
cp SLmake.inc.example SLmake.inc

# In SLmake.inc set 
BLASLIB     = /path/to/OpenBLAS-0.3.24/install/lib/libopenblas.a
LAPACKLIB   = /path/to/OpenBLAS-0.3.24/install/lib/libopenblas.a
# save and quit

make lib

Compile libvdxc

  • compilation failed with linker error
  • this might be easy to fix

Compile Octopus

./configure \
  --enable-mpi \
  --prefix=/path/to/octopus-13.0/install \
  --with-gsl-prefix=/path/to/gsl-2.7/install \
  --with-libxc-prefix=/path/to/libxc/install/ \
  --with-netcdf-prefix=/path/to/netcdf-c-4.9.2/install \
  --with-fftw-prefix=/path/to/fftw-3.3.10/install \
  --with-pfft-prefix=/path/to/pfft/install \
  --with-scalapack=/path/to/scalapack-2.2.0/libscalapack.a \
  --with-blacs=/path/to/scalapack-2.2.0/libscalapack.a \
  --with-blas=/path/to/OpenBLAS-0.3.24/install/lib/libopenblas.a \
  --with-libyaml=/usr/lib64/libyaml-0.so.2

make -j10
make install

Configure your script

module load mpi/openmpi
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/hdf5-1.10.6/install/lib:/path/to/netcdf-c-4.6.3/install/lib:/path/to/install/lib

Testing

Status: 1 failures
Passed: 252 / 260
Skipped: 1 / 260
Failed: 7 / 260

testfile failed testcases
finite_systems_3d/29-pcm_chlorine_anion.test 1
linear_response/01-casida.test 25
maxwell/02-external-current.test 1
lda_u/01-nio.test 2
finite_systems_3d/37-sternheimer_polarized.test 1
linear_response/04-vib_modes.test 2
real_time/15-crank_nicolson.test 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment