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
28 changes: 5 additions & 23 deletions .github/workflows/docker_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,30 +32,12 @@ jobs:
#- recipe: recipes/gromacs/gromacs.py
# userargs: none=none
# context: .
- recipe: recipes/hpcbase-gnu-mvapich2.py
- recipe: recipes/hpcbase-nvhpc-hpcx.py
userargs: none=none
context: .
#- recipe: recipes/hpcbase-gnu-mvapich2.py
# userargs: centos=true
# context: .
- recipe: recipes/hpcbase-gnu-openmpi.py
- recipe: recipes/hpcbase-gnu-hpcx.py
userargs: none=none
context: .
#- recipe: recipes/hpcbase-gnu-openmpi.py
# userargs: centos=true
# context: .
#- recipe: recipes/hpcbase-nvhpc-mvapich2.py
# userargs: nvhpc_eula_accept=yes
# context: .
#- recipe: recipes/hpcbase-nvhpc-mvapich2.py
# userargs: nvhpc_eula_accept=yes centos=true
# context: .
#- recipe: recipes/hpcbase-nvhpc-openmpi.py
# userargs: nvhpc_eula_accept=yes
# context: .
#- recipe: recipes/hpcbase-nvhpc-openmpi.py
# userargs: nvhpc_eula_accept=yes centos=true
# context: .
- recipe: recipes/hpccm/bootstrap.py
userargs: none=none
context: .
Expand All @@ -65,9 +47,9 @@ jobs:
#- recipe: recipes/milc/milc.py
# userargs: none=none
# context: .
#- recipe: recipes/mpi_bandwidth.py
# userargs: none=none
# context: .
- recipe: recipes/mpi_bandwidth.py
userargs: none=none
context: .
#- recipe: recipes/osu_benchmarks/osu_benchmarks.py
# userargs: none=none
# context: recipes/osu_benchmarks
Expand Down
28 changes: 5 additions & 23 deletions .github/workflows/singularity_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,30 +32,12 @@ jobs:
#- recipe: recipes/gromacs/gromacs.py
# userargs: none=none
# context: .
- recipe: recipes/hpcbase-gnu-mvapich2.py
- recipe: recipes/hpcbase-gnu-hpcx.py
userargs: none=none
context: .
#- recipe: recipes/hpcbase-gnu-mvapich2.py
# userargs: centos=true
# context: .
- recipe: recipes/hpcbase-gnu-openmpi.py
- recipe: recipes/hpcbase-nvhpc-hpcx.py
userargs: none=none
context: .
#- recipe: recipes/hpcbase-gnu-openmpi.py
# userargs: centos=true
# context: .
#- recipe: recipes/hpcbase-nvhpc-mvapich2.py
# userargs: nvhpc_eula_accept=yes
# context: .
#- recipe: recipes/hpcbase-nvhpc-mvapich2.py
# userargs: nvhpc_eula_accept=yes centos=true
# context: .
#- recipe: recipes/hpcbase-nvhpc-openmpi.py
# userargs: nvhpc_eula_accept=yes
# context: .
#- recipe: recipes/hpcbase-nvhpc-openmpi.py
# userargs: nvhpc_eula_accept=yes centos=true
# context: .
- recipe: recipes/hpccm/bootstrap.py
userargs: none=none
context: .
Expand All @@ -65,9 +47,9 @@ jobs:
#- recipe: recipes/milc/milc.py
# userargs: none=none
# context: .
#- recipe: recipes/mpi_bandwidth.py
# userargs: none=none
# context: .
- recipe: recipes/mpi_bandwidth.py
userargs: none=none
context: .
#- recipe: recipes/osu_benchmarks/osu_benchmarks.py
# userargs: none=none
# context: recipes/osu_benchmarks
Expand Down
15 changes: 7 additions & 8 deletions docs/workflows.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,17 @@ HPC software components present can be used as the starting point for
building an application container image.

HPCCM includes [base recipes](/recipes) for all combinations of the
Ubuntu and CentOS Linux distributions, the GNU and PGI compilers, and
the OpenMPI and MVAPICH2 MPI libraries, plus commonly used software
components such as the Mellanox OpenFabrics Enterprise Distribution,
Python, FFTW, and HDF5. The provided base recipe can be easily
customized to change component versions or add or subtract building
blocks.
Ubuntu and RHEL-based Linux distributions, the GNU and NVHPC compilers,
plus commonly used software components such as the OpenFabrics Enterprise
Distribution, HPC-X, FFTW, HDF5, and NetCDF. The provided base recipe
can be easily customized to change component versions or add or subtract
building blocks.

For example:

```
$ wget https://raw.githubusercontent.com/NVIDIA/hpc-container-maker/master/recipes/hpcbase-gnu-openmpi.py
$ hpccm --recipe hpcbase-gnu-openmpi.py > Dockerfile
$ wget https://raw.githubusercontent.com/NVIDIA/hpc-container-maker/master/recipes/hpcbase-gnu-hpcx.py
$ hpccm --recipe hpcbase-gnu-hpcx.py > Dockerfile
$ sudo docker build -t hpcbase -f Dockerfile .
```

Expand Down
74 changes: 74 additions & 0 deletions recipes/hpcbase-gnu-hpcx.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
"""
HPC Base image

Contents:
CUDA
FFTW
GNU compilers
HDF5
HPC-X (Open MPI, UCX, etc.)
NetCDF
+ typical development environment

Use --userarg cuda_version=X.Y.Z and/or --userarg distro=<value> to
alter the defaults, where X.Y.Z is 13.2.0, for instance, and the distro
value is ubuntu24.04 or rockylinux9.
"""

cuda_version = USERARG.get('cuda_version', '13.2.0')
distro = USERARG.get('distro', 'ubuntu24.04')
runtime = USERARG.get('runtime', False)

######
# Devel stage
######

Stage0 += comment(__doc__, reformat=False)

Stage0 += baseimage(image='nvcr.io/nvidia/cuda:{0}-devel-{1}'.format(cuda_version, distro), _as='devel')

# Typical development environment
common_packages = ['automake', 'autoconf', 'autoconf-archive', 'binutils',
'bzip2', 'ca-certificates', 'cmake', 'diffutils', 'file',
'gdb', 'git', 'gzip', 'libtool', 'make', 'numactl', 'patch',
'tar', 'vim', 'wget']
Stage0 += packages(apt=common_packages + ['libaec-dev', 'libnuma-dev',
'libsz2', 'lmod', 'xz-utils',
'zlib1g-dev'],
epel=True,
powertools=True if distro == 'rockylinux8' else False,
yum=common_packages + ['Lmod', 'libaec-devel',
'numactl-devel', 'xz', 'zlib-devel'])

# GNU compilers
compiler = gnu()
Stage0 += compiler

# OFED
Stage0 += ofed()

# gdrcopy
Stage0 += gdrcopy(ldconfig=True, version='2.4.2', annotate=True)

# HPC-X
Stage0 += hpcx(version='2.25.1', hpcxinit=False, inbox=True, ldconfig=True)

# FFTW
Stage0 += fftw(version='3.3.10', mpi=True, toolchain=compiler.toolchain,
annotate=True)

# HDF5
Stage0 += hdf5(version='1.14.5', toolchain=compiler.toolchain, annotate=True)

# NetCDF
Stage0 += netcdf(version='4.9.2', version_cxx='4.3.1', version_fortran='4.6.1',
toolchain=compiler.toolchain, annotate=True)

######
# Runtime image
######

if runtime:
Stage1 += baseimage(image='nvcr.io/nvidia/cuda:{0}-runtime-{1}'.format(cuda_version, distro))

Stage1 += Stage0.runtime(_from='devel')
56 changes: 0 additions & 56 deletions recipes/hpcbase-gnu-mvapich2.py

This file was deleted.

56 changes: 0 additions & 56 deletions recipes/hpcbase-gnu-openmpi.py

This file was deleted.

38 changes: 38 additions & 0 deletions recipes/hpcbase-nvhpc-hpcx.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""
HPC Base image

Contents:
FFTW
HDF5
NetCDF
NVIDIA HPC SDK (CUDA, HPC-X, NVIDIA HPC Compilers)
+ typical development environment

Use --userarg nvhpc_version=X.Y and/or --userarg distro=<value> to
alter the defaults, where X.Y.Z is 26.3, for instance, and the distro
value is ubuntu24.04 or rockylinux9.
"""

nvhpc_version = USERARG.get('nvhpc_version', '26.3')
distro = USERARG.get('distro', 'ubuntu24.04')

Stage0 += comment(__doc__, reformat=False)

Stage0 += baseimage(image='nvcr.io/nvidia/nvhpc:{0}-devel-cuda_multi-{1}'.format(nvhpc_version, distro), _as='devel')

# Create compiler toolchain
tc = hpccm.toolchain(CC='nvc', CXX='nvc++', F77='nvfortran', F90='nvfortran',
FC='nvfortran')

# FFTW
Stage0 += fftw(version='3.3.10', mpi=True, toolchain=tc, annotate=True)

# HDF5
# Disable float16 to workaround missing intrinsics in older Linux
# distributions / GCC versions
Stage0 += hdf5(version='1.14.5', toolchain=tc, annotate=True,
enable_nonstandard_feature_float16='no')

# NetCDF
Stage0 += netcdf(version='4.9.2', version_cxx='4.3.1', version_fortran='4.6.1',
toolchain=tc, annotate=True)
Loading
Loading