Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions easybuild/easyconfigs/f/FFTW/FFTW-3.3.10-NVHPC-25.1.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name = 'FFTW'
version = '3.3.10'

homepage = 'https://www.fftw.org'
description = """FFTW is a C subroutine library for computing the discrete Fourier transform (DFT)
in one or more dimensions, of arbitrary input size, and of both real and complex data."""

toolchain = {'name': 'NVHPC', 'version': '25.1'}
toolchainopts = {'pic': True}

source_urls = [homepage]
sources = [SOURCELOWER_TAR_GZ]
checksums = ['56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467']

# Does not work with nvc
with_quad_prec = False

runtest = 'check'

moduleclass = 'numlib'
27 changes: 27 additions & 0 deletions easybuild/easyconfigs/h/HDF5/HDF5-1.14.5-NVHPC-25.1.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name = 'HDF5'
# Note: Odd minor releases are only RCs and should not be used.
version = '1.14.5'

homepage = 'https://portal.hdfgroup.org/display/support'
description = """HDF5 is a data model, library, and file format for storing and managing data.
It supports an unlimited variety of datatypes, and is designed for flexible
and efficient I/O and for high volume and complex data."""

toolchain = {'name': 'NVHPC', 'version': '25.1'}
toolchainopts = {'pic': True, 'usempi': True}

source_urls = ['https://github.com/HDFGroup/hdf5/archive']
sources = ['hdf5_%(version)s.tar.gz']
checksums = ['c83996dc79080a34e7b5244a1d5ea076abfd642ec12d7c25388e2fdd81d26350']

dependencies = [
('zlib', '1.3.1'),
('Szip', '2.1.1'),
]

postinstallcmds = [
'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5c++',
'sed -i -r "s, -I[^[:space:]]+H5FDsubfiling , -I%(installdir)s/include ,g" %(installdir)s/bin/h5pcc',
]

moduleclass = 'data'
97 changes: 97 additions & 0 deletions easybuild/easyconfigs/v/VASP/VASP-6.5.0-NVHPC-25.1.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# This build enables both HDF5 and Wannier-90, both are optional but recommended
# Furthermore, it sets the vdw_kernel as an external file (courtesy of Mikael Öhman)
# Author: J. Saßmannshausen (Imperial College London/UK)

easyblock = 'MakeCp'

name = 'VASP'
version = '6.5.0'

homepage = 'http://www.vasp.at'
description = """The Vienna Ab initio Simulation Package (VASP) is a
computer program for atomic scale materials modelling, e.g. electronic
structure calculations and quantum-mechanical molecular dynamics,
from first principles.

This build includes HDF5 and the Wannier-90 functions."""

toolchain = {'name': 'NVHPC', 'version': '25.1'}

download_instructions = """VASP is proprietary software, see http://www.vasp.at/index.php/faqs
on how to obtain a license for the software."""
sources = [
'%(namelower)s.%(version)s.tar',
'vdw_kernel.bindat.%(version)s.zip',
]
patches = [
'VASP-6.5.0_enable_hdf5_wannier90_nvhpc.patch',
'VASP-6.5.0_external_vdwkernel.patch',
]
checksums = [
{'vasp.6.5.0.tar':
'87f5a5416633af20fa8ea63f3348db477d8fc378feab4f839a617fc0663875f9'},
{'vdw_kernel.bindat.6.5.0.zip':
'b2b4bf577e6d4ca1aa6d463cf9325afb834a88099177fb585fe90b0b677f8484'},
{'VASP-6.5.0_enable_hdf5_wannier90_nvhpc.patch':
'85b0fc899e7896aa5ce1cebcb584b0958892a94a53aa08661f6f203f3bfadb89'},
{'VASP-6.5.0_external_vdwkernel.patch':
'1533ab6e045e4028f9e7d0de6b026654b9079569be81353bb460991657e48f0c'},
]

dependencies = [
('FFTW', '3.3.10'),
('HDF5', '1.14.5'),
('Wannier90', '3.1.0'),
]

prebuildopts = "cp arch/makefile.include.nvhpc_acc makefile.include && "
prebuildopts += "sed -i 's/-gpu=[0-9cuda,.]*/-gpu=%(cuda_cc_nvhpc)s,cuda%(cudaver)s/g' makefile.include && "

# VASP uses LIBS as a list of folders
prebuildopts += 'unset LIBS && '

buildopts = 'all ' # building std gam and ncl
buildopts += 'DEPS=1 ' # required for VASP parallel builds

# Testing, can take a long time!
# Recommended to set ulimit -s to unlimited, as else segfaults will occure
# during some of the tests.
# https://www.vasp.at/wiki/index.php/Validation_tests

# Offloading to GPUs with NCCL requires 1 GPU per MPI-rank
_vasp_test_mpirun = "mpirun -np 1"

# skip tests that are too long
_vasp_test_skip = 'HEG_333_LW '

_vasp_test_env = [
"export OMP_NUM_THREADS=1",
"export OMP_STACKSIZE=512m",
"ulimit -s unlimited",
f"export VASP_TESTSUITE_EXE_STD='{_vasp_test_mpirun} %(builddir)s/vasp.%(version)s/bin/vasp_std'",
f"export VASP_TESTSUITE_EXE_NCL='{_vasp_test_mpirun} %(builddir)s/vasp.%(version)s/bin/vasp_ncl'",
f"export VASP_TESTSUITE_EXE_GAM='{_vasp_test_mpirun} %(builddir)s/vasp.%(version)s/bin/vasp_gam'",
f"export VASP_TESTSUITE_SKIP_TESTS='{_vasp_test_skip}'",
"",
]

pretestopts = " && ".join(_vasp_test_env)
runtest = 'test'

files_to_copy = [
(['bin/vasp_std', 'bin/vasp_gam', 'bin/vasp_ncl'], 'bin'),
(['../vdw_kernel.bindat'], '.'),
]

sanity_check_paths = {
'files': ['bin/vasp_std', 'bin/vasp_gam', 'bin/vasp_ncl'],
'dirs': [],
}

# This environment variable works together with the vasp-6.4.3_vdw_kernel_file-HDF5-Wannier.patch
# so that it can be used without having to copy this file around.
modextravars = {
'VDW_KERNEL': '%(installdir)s/vdw_kernel.bindat',
}

moduleclass = 'phys'
9 changes: 3 additions & 6 deletions easybuild/easyconfigs/v/VASP/VASP-6.5.0-foss-2024a.eb
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,11 @@ buildopts = 'all ' # building std gam and ncl
buildopts += 'DEPS=1 ' # required for VASP parallel builds

# Testing, can take a long time!
# This section has been taken from VASP-6.3.2-nvofbf-2022.07.eb
# The important bit seems to be to set ulimit -s to unlimited, as else segfaults
# will occure during some of the tests.
# Recommended to set ulimit -s to unlimited, as else segfaults will occure
# during some of the tests.
# https://www.vasp.at/wiki/index.php/Validation_tests

# it is recommended to run the testsuite with 4 MPI processes,
# but it's also recommended to use only 1 MPI process per GPU,
# so running the test on GPUs requires 4 GPUs?
# Recommended to run the testsuite with 4 MPI processes
_vasp_test_mpirun = "mpirun -np 4"

# skip tests that are too long
Expand Down
9 changes: 3 additions & 6 deletions easybuild/easyconfigs/v/VASP/VASP-6.5.0-intel-2024a.eb
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,11 @@ buildopts = 'all ' # building std gam and ncl
buildopts += 'DEPS=1 ' # required for VASP parallel builds

# Testing, can take a long time!
# This section has been taken from VASP-6.3.2-nvofbf-2022.07.eb
# The important bit seems to be to set ulimit -s to unlimited, as else segfaults
# will occure during some of the tests.
# Recommended to set ulimit -s to unlimited, as else segfaults will occure
# during some of the tests.
# https://www.vasp.at/wiki/index.php/Validation_tests

# it is recommended to run the testsuite with 4 MPI processes,
# but it's also recommended to use only 1 MPI process per GPU,
# so running the test on GPUs requires 4 GPUs?
# Recommended to run the testsuite with 4 MPI processes
_vasp_test_mpirun = "mpirun -np 4"

# skip tests that are too long
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
Use build environment from EasyBuild on NVHPC configuration
Enable HDF5, Wannier90 and cusolvermp
Author: J. Saßmannshausen (Imperial College London)
Author: Alex Domingo (Vrije Universiteit Brussel)
--- arch/makefile.include.nvhpc_acc.orig 2025-05-19 10:49:25.982420513 +0200
+++ arch/makefile.include.nvhpc_acc 2025-05-19 10:52:18.069811778 +0200
@@ -59,16 +59,16 @@

# Specify your NV HPC-SDK installation (mandatory)
#... first try to set it automatically
-NVROOT =$(shell which nvfortran | awk -F /compilers/bin/nvfortran '{ print $$1 }')
+# NVROOT =$(shell which nvfortran | awk -F /compilers/bin/nvfortran '{ print $$1 }')

# If the above fails, then NVROOT needs to be set manually
-#NVHPC ?= /opt/nvidia/hpc_sdk
-#NVVERSION = 21.11
-#NVROOT = $(NVHPC)/Linux_x86_64/$(NVVERSION)
+NVHPC ?= $(EBROOTNVHPC)
+NVVERSION = $(EBVERSIONNVHPC)
+NVROOT = $(NVHPC)/Linux_x86_64/$(NVVERSION)

## Improves performance when using NV HPC-SDK >=21.11 and CUDA >11.2
-#OFLAG_IN = -fast -Mwarperf
-#SOURCE_IN := nonlr.o
+OFLAG_IN = -fast -Mwarperf
+SOURCE_IN := nonlr.o

# Software emulation of quadruple precsion (mandatory)
QD ?= $(NVROOT)/compilers/extras/qd
@@ -87,25 +87,25 @@
LLIBS += $(SCALAPACK) $(LAPACK) $(BLAS)

# FFTW (mandatory)
-FFTW_ROOT ?= /path/to/your/fftw/installation
+FFTW_ROOT ?= $(EBROOTFFTW)
LLIBS += -L$(FFTW_ROOT)/lib -lfftw3
INCS += -I$(FFTW_ROOT)/include

# Use cusolvermp (optional)
# supported as of NVHPC-SDK 24.1 (and needs CUDA-11.8)
-#CPP_OPTIONS+= -DCUSOLVERMP -DCUBLASMP
-#LLIBS += -cudalib=cusolvermp,cublasmp -lnvhpcwrapcal
+CPP_OPTIONS+= -DCUSOLVERMP -DCUBLASMP
+LLIBS += -cudalib=cusolvermp,cublasmp -lnvhpcwrapcal

# HDF5-support (optional but strongly recommended, and mandatory for some features)
-#CPP_OPTIONS+= -DVASP_HDF5
-#HDF5_ROOT ?= /path/to/your/hdf5/installation
-#LLIBS += -L$(HDF5_ROOT)/lib -lhdf5_fortran
-#INCS += -I$(HDF5_ROOT)/include
+CPP_OPTIONS+= -DVASP_HDF5
+HDF5_ROOT ?= $(EBROOTHDF5)
+LLIBS += -L$(HDF5_ROOT)/lib -lhdf5_fortran
+INCS += -I$(HDF5_ROOT)/include

# For the VASP-2-Wannier90 interface (optional)
-#CPP_OPTIONS += -DVASP2WANNIER90
-#WANNIER90_ROOT ?= /path/to/your/wannier90/installation
-#LLIBS += -L$(WANNIER90_ROOT)/lib -lwannier
+CPP_OPTIONS += -DVASP2WANNIER90
+WANNIER90_ROOT ?= $(EBROOTWANNIER90)
+LLIBS += -L$(WANNIER90_ROOT)/lib -lwannier

# For machine learning library vaspml (experimental)
#CPP_OPTIONS += -Dlibvaspml
35 changes: 35 additions & 0 deletions easybuild/easyconfigs/w/Wannier90/Wannier90-3.1.0-NVHPC-25.1.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
easyblock = 'MakeCp'

name = 'Wannier90'
version = '3.1.0'

homepage = 'http://www.wannier.org'
description = """A tool for obtaining maximally-localised Wannier functions"""

toolchain = {'name': 'NVHPC', 'version': '25.1'}
toolchainopts = {'usempi': True}

github_account = 'wannier-developers'
source_urls = [GITHUB_LOWER_SOURCE]
sources = [{'download_filename': 'v%(version)s.tar.gz', 'filename': SOURCELOWER_TAR_GZ}]
patches = ['Wannier90_3x_ignore_makeinc.patch',
'Wannier90_3.1.0_fix_mpi_include.patch']
checksums = [
'40651a9832eb93dec20a8360dd535262c261c34e13c41b6755fa6915c936b254', # wannier90-3.1.0.tar.gz
'561c0d296e0e30b8bb303702cd6e41ded54c153d9b9e6cd9cab73858e5e2945e', # Wannier90_3x_ignore_makeinc.patch
'dd7217d8bf12ac4161fd0b6504f7c085ebcc69b23ab2ac4abcf9251f34b8bc30', # Wannier90_3.1.0_fix_mpi_include.patch
]

buildopts = 'all F90=$F90 MPIF90=$MPIF90 FCOPTS="$FFLAGS" LDOPTS="$FFLAGS" '
buildopts += 'LIBDIR="$LAPACK_LIB_DIR" LIBS="$LIBLAPACK" '
buildopts += 'COMMS=mpi'

local_executables = ['wannier90.x', 'postw90.x', 'w90chk2chk.x', 'w90spn2spn.x']
files_to_copy = [(local_executables, 'bin'), (['libwannier.a'], 'lib')]

sanity_check_paths = {
'files': ['bin/%s' % x for x in local_executables] + ['lib/libwannier.a'],
'dirs': []
}

moduleclass = 'chem'