Skip to content

Latest commit

 

History

History
4739 lines (3496 loc) · 150 KB

building_blocks.md

File metadata and controls

4739 lines (3496 loc) · 150 KB

amgx

amgx(self, **kwargs)

The amgx building block downloads, configures, builds, and installs the AMGX component.

The CMake building block should be installed prior to this building block.

Installing an MPI building block before this one is optional and will build the AMGX library with MPI support. Some Eigensolvers make use of the MAGMA and/or MKL libraries and are only available if the paths to these libraries is specified as shown below in the cmake_opts.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • branch: The git branch to clone. AMGX releases are tagged, that is, specifying branch='v2.1.0' downloads a particular AMGX version. The default is master.

  • cmake_opts: List of options to pass to cmake. The default value is an empty list. See the "Building" section of the AMGX documentation of the specified library version for more details. Some options are CMAKE_NO_MPI:Boolean (default=False) - build without MPI support even if the FindMPI script finds an MPI library. AMGX_NO_RPATH:Boolean (default=False) - by default CMake adds -rpath flags to binaries, this option disables that. MKL_ROOT_DIR:String, MAGMA_ROOT_DIR:String - MAGMA/MKL are used to accelerate some of the Eigensolvers. These solvers will return "error 'not supported'" if AMGX was not build with MKL/MAGMA support.

  • commit: The git commit to clone. The default is empty and uses the latest commit on the selected branch of the repository.

  • directory: Build from an unpackaged source directory relative to the local build context instead of fetching AMGX sources from a git repository. This option is incompatible with repository/branch/ commit. The default is None.

  • ospackages: List of OS packages to install prior to downloading, configuring, and building. The default value is [git].

  • prefix: The top level install location. The default is /usr/local/amgx.

  • repository: The git repository to clone. The default is https://github.com/NVIDIA/AMGX.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

Examples

amgx(branch='v2.1.0')

runtime

amgx.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

a = amgx(...)
Stage0 += a
Stage1 += a.runtime()

apt_get

apt_get(self, **kwargs)

The apt_get building block specifies the set of operating system packages to install. This building block should only be used on images that use the Debian package manager (e.g., Ubuntu).

In most cases, the packages building block should be used instead of apt_get.

Parameters

  • aptitude: Boolean flag to specify whether aptitude should be used instead of apt-get. The default is False.

  • download: Boolean flag to specify whether to download the deb packages instead of installing them. The default is False.

  • download_directory: The deb package download location. This parameter is ignored if download is False. The default value is /var/tmp/apt_get_download.

  • extract: Location where the downloaded packages should be extracted. Note, this extracts and does not install the packages, i.e., the package manager is bypassed. After the downloaded packages are extracted they are deleted. This parameter is ignored if download is False. If empty, then the downloaded packages are not extracted. The default value is an empty string.

  • keys: A list of GPG keys to add. The default is an empty list.

  • ospackages: A list of packages to install. The default is an empty list.

  • ppas: A list of personal package archives to add. The default is an empty list.

  • repositories: A list of apt repositories to add. The default is an empty list.

Examples

apt_get(ospackages=['make', 'wget'])

arm_allinea_studio

arm_allinea_studio(self, **kwargs)

The arm_allinea_studio building block downloads and installs the Arm Allinea Studio.

You must agree to the Arm End User License Agreement to use this building block.

As a side effect, a toolchain is created containing the Arm Allinea Studio compilers. The toolchain can be passed to other operations that want to build using the Arm Allinea Studio compilers. However, the environment is not automatically configured for the Arm Allinea Studio compilers. The desired environment module must be manually loaded, e.g., module load Generic-AArch64/RHEL/7/arm-linux-compiler/20.3.

Parameters

  • environment: Boolean flag to specify whether the environment (MODULEPATH) should be modified to include Arm Allinea Studio. The default is True.

  • eula: By setting this value to True, you agree to the Arm End User License Agreement. The default value is False.

  • microarchitectures: List of microarchitectures to install. From 22.0 version, only generic is available. Available values are generic, generic-sve for version 21.1, and neoverse-n1, thunderx2t99 are valid for versions <= 20.3. Irrespective of this setting, the generic implementation will always be installed.

  • ospackages: List of OS packages to install prior to installing Arm Allinea Studio. For Ubuntu, the default values are libc6-dev, lmod, python, tar, tcl, and wget. For RHEL-based Linux distributions, the default values are glibc-devel, Lmod, tar, and wget.

  • prefix: The top level install prefix. The default value is /opt/arm.

  • tarball: Path to the Arm Allinea Studio tarball relative to the local build context. The default value is empty. If this is defined, the tarball in the local build context will be used rather than downloading the tarball from the web.

  • version: The version of Arm Allinea Studio to install. The default value is 22.0. Due to differences in the packaging scheme, versions prior to 20.2 are not supported.

Examples

arm_allinea_studio(eula=True,
                   microarchitectures=['generic', 'thunderx2t99'],
                   version='20.3')

runtime

arm_allinea_studio.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

a = arm_allinea_compiler(...)
Stage0 += a
Stage1 += a.runtime()

boost

boost(self, **kwargs)

The boost building block downloads and installs the Boost component.

Parameters

  • b2_opts: List of options to pass to b2. The default is an empty list.

  • bootstrap_opts: List of options to pass to bootstrap.sh. The default is an empty list.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH) should be modified to include Boost. The default is True.

  • ldconfig: Boolean flag to specify whether the Boost library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the Boost library directory. The default value is False.

  • ospackages: List of OS packages to install prior to building. For Ubuntu, the default values are bzip2, libbz2-dev, tar, wget, and zlib1g-dev. For RHEL-based Linux distributions the default values are bzip2, bzip2-devel, tar, wget, which, and zlib-devel.

  • prefix: The top level installation location. The default value is /usr/local/boost.

  • python: Boolean flag to specify whether Boost should be built with Python support. If enabled, the Python C headers need to be installed (typically this can be done by adding python-dev or python-devel to the list of OS packages). This flag is ignored if bootstrap_opts is set. The default is False.

  • sourceforge: Boolean flag to specify whether Boost should be downloaded from SourceForge rather than the current Boost repository. For versions of Boost older than 1.63.0, the SourceForge repository should be used. The default is False.

  • version: The version of Boost source to download. The default value is 1.76.0.

Examples

boost(prefix='/opt/boost/1.67.0', version='1.67.0')
boost(sourceforge=True, version='1.57.0')

runtime

boost.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

b = boost(...)
Stage0 += b
Stage1 += b.runtime()

catalyst

catalyst(self, **kwargs)

The catalyst building block configures, builds, and installs the ParaView Catalyst component.

The CMake building block should be installed prior to this building block.

A MPI building block should be installed prior to this building block.

If GPU rendering will be used then a cudagl base image is recommended.

Parameters

  • cmake_opts: List of options to pass to cmake. The default is an empty list.

  • edition: The Catalyst edition to use. Valid choices are Base, Base-Essentials, Base-Essentials-Extras, Base-Essentials-Extras-Rendering-Base, Base-Enable-Python, Base-Enable-Python-Essentials, Base-Enable-Python-Essentials-Extras, and Base-Enable-Python-Essentials-Extras-Rendering-Base. If a Python edition is selected, then the Python building block should be installed with development libraries prior to this building block. The default value is Base-Enable-Python-Essentials-Extras-Rendering-Base.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include ParaView Catalyst. The default is True.

  • ldconfig: Boolean flag to specify whether the Catalyst library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the Catalyst library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are git, gzip, make, tar, and wget. If a rendering edition is selected then libxau-dev, libxext-dev, libxt-dev, libice-dev, libsm-dev, libx11-dev, libgl1-mesa-dev are also included. For RHEL-based Linux distributions, the default values are git, gzip, make, tar, wget, and which. If a rendering edition is selected then libX11-devel, libXau-devel, libXext-devel, libXt-devel, libICE-devel, libSM-devel, libglvnd-devel, mesa-libGL-devel are also included.

  • prefix: The top level install location. The default value is /usr/local/catalyst.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of Catalyst source to download. The default value is 5.6.1.

Examples

catalyst(prefix='/opt/catalyst/5.6.0', version='5.6.0')

runtime

catalyst.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

c = catalyst(...)
Stage0 += c
Stage1 += c.runtime()

cgns

cgns(self, **kwargs)

The cgns building block downloads and installs the CGNS component.

The HDF5 building block should be installed prior to this building block.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the test cases should be run. The default is False.

  • configure_opts: List of options to pass to configure. The default value is --with-hdf5=/usr/local/hdf5 and --with-zlib.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • prefix: The top level install location. The default value is /usr/local/cgns.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are file, make, wget, and zlib1g-dev. For RHEL-based Linux distributions the default values are bzip2, file, make, wget and zlib-devel.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of CGNS source to download. The default value is 4.1.2.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

cgns(prefix='/opt/cgns/3.3.1', version='3.3.1')

runtime

cgns.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Example

c = cgns(...)
Stage0 += c
Stage1 += c.runtime()

charm

charm(self, **kwargs)

The charm building block downloads and install the Charm++ component.

Parameters

  • basedir: List of additional include and library paths for building Charm++. The default is an empty list.

  • check: Boolean flag to specify whether the test cases should be run. The default is False.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH, PATH, and other variables) should be modified to include Charm++. The default is True.

  • ldconfig: Boolean flag to specify whether the Charm++ library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the Charm++ library directory. The default value is False.

  • options: List of additional options to use when building Charm++. The default values are --build-shared, and --with-production.

  • ospackages: List of OS packages to install prior to configuring and building. The default values are autoconf, automake, git, libtool, make, and wget.

  • prefix: The top level install prefix. The default value is /usr/local.

  • target: The target Charm++ framework to build. The default value is charm++.

  • target_architecture: The target machine architecture to build. For x86_64 processors, the default value is multicore-linux-x86_64. For aarch64 processors, the default value is multicore-arm8. For ppc64le processors, the default is multicore-linux-ppc64le.

  • version: The version of Charm++ to download. The default value is 6.10.2.

Examples

charm(prefix='/opt', version='6.8.2')
charm(target_architecture='mpi-linux-x86_64')

runtime

charm.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Example

c = charm(...)
Stage0 += c
Stage1 += c.runtime()

cmake

cmake(self, **kwargs)

The cmake building block downloads and installs the CMake component.

Parameters

  • bootstrap_opts: List of options to pass to bootstrap when building from source. The default is an empty list.

  • eula: By setting this value to True, you agree to the CMake End-User License Agreement. The default value is False.

  • ospackages: List of OS packages to install prior to installing. The default values are make and wget.

  • prefix: The top level install location. The default value is /usr/local.

  • source: Boolean flag to specify whether to build CMake from source. If True, includes the libssl-dev package in the list of OS packages for Ubuntu, and openssl-devel for RHEL-based distributions. For x86_64 and aarch64 processors, the default is False, i.e., use the available pre-compiled package. For all other processors, the default is True.

  • version: The version of CMake to download. The default value is 3.25.1.

Examples

cmake(eula=True)
cmake(eula=True, version='3.10.3')

conda

conda(self, **kwargs)

The conda building block installs Anaconda.

You must agree to the Anaconda End User License Agreement to use this building block.

Parameters

  • channels: List of additional Conda channels to enable. The default is an empty list.

  • environment: Path to the Conda environment file to clone. The default value is empty.

  • eula: By setting this value to True, you agree to the Anaconda End User License Agreement. The default value is False.

  • ospackages: List of OS packages to install prior to installing Conda. The default values are ca-certificates and wget.

  • packages: List of Conda packages to install. The default is an empty list.

  • prefix: The top level install location. The default value is /usr/local/anaconda.

  • python2: Boolean flag to specify that the Python 2 version of Anaconda should be installed. The default is False.

  • python_subversion: The Python version to install. This value is ignored if the Conda version is less than 4.8. The default is py310 if using Python 3, and py27 if using Python 2.

  • version: The version of Anaconda to download. The default value is 23.1.0-1 if using Python 3, and 4.8.3 if using Python 2.

Examples

conda(packages=['numpy'])
conda(channels=['conda-forge', 'nvidia'], prefix='/opt/conda')
conda(environment='environment.yml')

runtime

conda.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

c = conda(...)
Stage0 += c
Stage1 += c.runtime()

fftw

fftw(self, **kwargs)

The fftw building block downloads, configures, builds, and installs the FFTW component. Depending on the parameters, the source will be downloaded from the web (default) or copied from a source directory in the local build context.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • configure_opts: List of options to pass to configure. For x86_64 processors, the default values are --enable-shared, --enable-openmp, --enable-threads, and --enable-sse2. For other processors, the default values are --enable-shared, --enable-openmp, and --enable-threads.

  • directory: Path to the unpackaged source directory relative to the local build context. The default value is empty. If this is defined, the source in the local build context will be used rather than downloading the source from the web.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH) should be modified to include FFTW. The default is True.

  • ldconfig: Boolean flag to specify whether the FFTW library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the FFTW library directory. The default value is False.

  • mpi: Boolean flag to specify whether to build with MPI support enabled. The default is False.

  • ospackages: List of OS packages to install prior to configuring and building. The default values are file, make, and wget.

  • prefix: The top level install location. The default value is /usr/local/fftw.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of FFTW source to download. This value is ignored if directory is set. The default value is 3.3.10.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

fftw(prefix='/opt/fftw/3.3.7', version='3.3.7')
fftw(directory='sources/fftw-3.3.7')
n = nvhpc(eula=True)
fftw(toolchain=n.toolchain)
fftw(check=True, configure_opts=['--enable-shared', '--enable-threads',
                                 '--enable-sse2', '--enable-avx'])

runtime

fftw.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

f = fftw(...)
Stage0 += f
Stage1 += f.runtime()

gdrcopy

gdrcopy(self, **kwargs)

The gdrcopy building block builds and installs the user space library from the gdrcopy component.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • environment: Boolean flag to specify whether the environment (CPATH, LIBRARY_PATH, and LD_LIBRARY_PATH) should be modified to include the gdrcopy. The default is True.

  • ldconfig: Boolean flag to specify whether the gdrcopy library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the gdrcopy library directory. The default value is False.

  • ospackages: List of OS packages to install prior to building. The default values are make and wget.

  • prefix: The top level install location. The default value is /usr/local/gdrcopy.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of gdrcopy source to download. The default value is 2.2.

Examples

gdrcopy(prefix='/opt/gdrcopy/2.1', version='2.1')

runtime

gdrcopy.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

g = gdrcopy(...)
Stage0 += g
Stage1 += g.runtime()

generic_autotools

generic_autotools(self, **kwargs)

The generic_autotools building block downloads, configures, builds, and installs a specified GNU Autotools enabled package.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • annotations: Dictionary of additional annotations to include. The default is an empty dictionary.

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • build_directory: The location to build the package. The default value is the source code location.

  • build_environment: Dictionary of environment variables and values to set when building the package. The default is an empty dictionary.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • configure_opts: List of options to pass to configure. The default value is an empty list.

  • devel_environment: Dictionary of environment variables and values, e.g., LD_LIBRARY_PATH and PATH, to set in the development stage after the package is built and installed. The default is an empty dictionary.

  • directory: The source code location. The default value is the basename of the downloaded package. If the value is not an absolute path, then the temporary working directory is prepended.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment should be modified (see devel_environment and runtime_environment). The default is True.

  • export_build_environment: Boolean flag to specify whether the build environment should be exported, or merely set on the configure command line. The default is False.

  • install: Boolean flag to specify whether the make install step should be performed. The default is True.

  • ldconfig: Boolean flag to specify whether the library directory should be added dynamic linker cache. The default value is False.

  • libdir: The path relative to the install prefix to use when configuring the dynamic linker cache. The default value is lib.

  • make: Boolean flag to specify whether the make step should be performed. The default is True.

  • package: Path to the local source package relative to the local build context. One of this parameter or the repository or url parameters must be specified.

  • postinstall: List of shell commands to run after running 'make install'. The working directory is the install prefix. The default is an empty list.

  • preconfigure: List of shell commands to run prior to running configure. The working directory is the source code location. The default is an empty list.

  • prefix: The top level install location. The default value is /usr/local. It is highly recommended not use use this default and instead set the prefix to a package specific directory.

  • recursive: Initialize and checkout git submodules. repository parameter must be specified. The default is False.

  • repository: The git repository of the package to build. One of this parameter or the package or url parameters must be specified.

  • _run_arguments: Specify additional Dockerfile RUN arguments (Docker specific).

  • runtime: The list of files / directories to copy into the runtime stage. The default is an empty list, i.e., copy the entire prefix.

  • runtime_environment: Dictionary of environment variables and values, e.g., LD_LIBRARY_PATH and PATH, to set in the runtime stage. The default is an empty dictionary.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • url: The URL of the package to build. One of this parameter or the package or repository parameters must be specified.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

generic_autotools(directory='tcl8.6.9/unix',
                  prefix='/usr/local/tcl',
                  url='https://prdownloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz')
generic_autotools(preconfigure=['./autogen.sh'],
                  prefix='/usr/local/zeromq',
                  repository='https://github.com/zeromq/libzmq.git')

runtime

generic_autotools.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

g = generic_autotools(...)
Stage0 += g
Stage1 += g.runtime()

generic_build

generic_build(self, **kwargs)

The generic_build building block downloads and builds a specified package.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • annotations: Dictionary of additional annotations to include. The default is an empty dictionary.

  • build: List of shell commands to run in order to build the package. The working directory is the source directory. The default is an empty list.

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • devel_environment: Dictionary of environment variables and values, e.g., LD_LIBRARY_PATH and PATH, to set in the development stage after the package is built and installed. The default is an empty dictionary.

  • directory: The source code location. The default value is the basename of the downloaded package. If the value is not an absolute path, then the temporary working directory is prepended.

  • environment: Boolean flag to specify whether the environment should be modified (see devel_environment and runtime_environment). The default is True.

  • install: List of shell commands to run in order to install the package. The working directory is the source directory. If prefix is defined, it will be automatically created if the list is non-empty. The default is an empty list.

  • ldconfig: Boolean flag to specify whether the library directory should be added dynamic linker cache. The default value is False.

  • libdir: The path relative to the install prefix to use when configuring the dynamic linker cache. The default value is lib.

  • package: Path to the local source package relative to the local build context. One of this parameter or the repository or url parameters must be specified.

  • prefix: The top level install location. The default value is empty. If defined then the location is copied as part of the runtime method.

  • recursive: Initialize and checkout git submodules. repository parameter must be specified. The default is False.

  • repository: The git repository of the package to build. One of this parameter or the package or url parameters must be specified.

  • _run_arguments: Specify additional Dockerfile RUN arguments (Docker specific).

  • runtime: The list of files / directories to copy into the runtime stage. The default is an empty list, i.e., copy the entire prefix.

  • runtime_environment: Dictionary of environment variables and values, e.g., LD_LIBRARY_PATH and PATH, to set in the runtime stage. The default is an empty dictionary.

  • unpack: Unpack the sources after downloading. Default is True.

  • url: The URL of the package to build. One of this parameter or the package or repository or parameters must be specified.

Examples

generic_build(build=['make ARCH=sm_70'],
              install=['cp stream /usr/local/bin/cuda-stream'],
              repository='https://github.com/bcumming/cuda-stream')

runtime

generic_build.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

g = generic_build(...)
Stage0 += g
Stage1 += g.runtime()

generic_cmake

generic_cmake(self, **kwargs)

The generic_cmake building block downloads, configures, builds, and installs a specified CMake enabled package.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • annotations: Dictionary of additional annotations to include. The default is an empty dictionary.

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • build_directory: The location to build the package. The default value is a build subdirectory in the source code location.

  • build_environment: Dictionary of environment variables and values to set when building the package. The default is an empty dictionary.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • cmake_opts: List of options to pass to cmake. The default value is an empty list.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • devel_environment: Dictionary of environment variables and values, e.g., LD_LIBRARY_PATH and PATH, to set in the development stage after the package is built and installed. The default is an empty dictionary.

  • directory: The source code location. The default value is the basename of the downloaded package. If the value is not an absolute path, then the temporary working directory is prepended.

  • environment: Boolean flag to specify whether the environment should be modified (see devel_environment and runtime_environment). The default is True.

  • install: Boolean flag to specify whether the make install step should be performed. The default is True.

  • ldconfig: Boolean flag to specify whether the library directory should be added dynamic linker cache. The default value is False.

  • libdir: The path relative to the install prefix to use when configuring the dynamic linker cache. The default value is lib.

  • make: Boolean flag to specify whether the make step should be performed. The default is True.

  • package: Path to the local source package relative to the local build context. One of this parameter or the repository or url parameters must be specified.

  • postinstall: List of shell commands to run after running 'make install'. The working directory is the install prefix. The default is an empty list.

  • preconfigure: List of shell commands to run prior to running cmake. The working directory is the source code location. The default is an empty list.

  • prefix: The top level install location. The default value is /usr/local. It is highly recommended not to use this default and instead set the prefix to a package specific directory.

  • recursive: Initialize and checkout git submodules. repository parameter must be specified. The default is False.

  • repository: The git repository of the package to build. One of this parameter or the package or url parameters must be specified.

  • _run_arguments: Specify additional Dockerfile RUN arguments (Docker specific).

  • runtime: The list of files / directories to copy into the runtime stage. The default is an empty list, i.e., copy the entire prefix.

  • runtime_environment: Dictionary of environment variables and values, e.g., LD_LIBRARY_PATH and PATH, to set in the runtime stage. The default is an empty dictionary.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • url: The URL of the package to build. One of this parameter or the repository or package parameters must be specified.

Examples

generic_cmake(cmake_opts=['-D CMAKE_BUILD_TYPE=Release',
                          '-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda',
                          '-D GMX_BUILD_OWN_FFTW=ON',
                          '-D GMX_GPU=ON',
                          '-D GMX_MPI=OFF',
                          '-D GMX_OPENMP=ON',
                          '-D GMX_PREFER_STATIC_LIBS=ON',
                          '-D MPIEXEC_PREFLAGS=--allow-run-as-root'],
              directory='gromacs-2018.2',
              prefix='/usr/local/gromacs',
              url='https://github.com/gromacs/gromacs/archive/v2018.2.tar.gz')
generic_cmake(branch='v0.8.0',
              cmake_opts=['-D CMAKE_BUILD_TYPE=RELEASE',
                          '-D QUDA_DIRAC_CLOVER=ON',
                          '-D QUDA_DIRAC_DOMAIN_WALL=ON',
                          '-D QUDA_DIRAC_STAGGERED=ON',
                          '-D QUDA_DIRAC_TWISTED_CLOVER=ON',
                          '-D QUDA_DIRAC_TWISTED_MASS=ON',
                          '-D QUDA_DIRAC_WILSON=ON',
                          '-D QUDA_FORCE_GAUGE=ON',
                          '-D QUDA_FORCE_HISQ=ON',
                          '-D QUDA_GPU_ARCH=sm_70',
                          '-D QUDA_INTERFACE_MILC=ON',
                          '-D QUDA_INTERFACE_QDP=ON',
                          '-D QUDA_LINK_HISQ=ON',
                          '-D QUDA_MPI=ON'],
              prefix='/usr/local/quda',
              repository='https://github.com/lattice/quda.git')

runtime

generic_cmake.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

g = generic_cmake(...)
Stage0 += g
Stage1 += g.runtime()

gnu

gnu(self, **kwargs)

The gnu building block installs the GNU compilers from the upstream Linux distribution.

As a side effect, a toolchain is created containing the GNU compilers. The toolchain can be passed to other operations that want to build using the GNU compilers.

Parameters

  • cc: Boolean flag to specify whether to install gcc. The default is True.

  • configure_opts: List of options to pass to configure. The default value is --disable-multilib. This option is only recognized if a source build is enabled.

  • cxx: Boolean flag to specify whether to install g++. The default is True.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include the GNU compiler. The default is True.

  • extra_repository: Boolean flag to specify whether to enable an extra package repository containing addition GNU compiler packages. For Ubuntu, setting this flag to True enables the

  • __ppa__:ubuntu-toolchain-r/test repository. For RHEL-based Linux distributions, setting this flag to True enables the Software Collections (SCL) repository. The default is False.

  • fortran: Boolean flag to specify whether to install gfortran. The default is True.

  • ldconfig: Boolean flag to specify whether the GNU library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the GNU library directory. The default value is False. This option is only recognized if a source build is enabled.

  • openacc: Boolean flag to control whether a OpenACC enabled compiler is built. If True, adds --with-cuda-driver and --enable-offload-targets=nvptx-none to the list of host compiler configure options and also builds the accelerator compiler and dependencies (nvptx-tools and nvptx-newlib). The default value is False. This option is only recognized if a source build is enabled.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are bzip2, file, gcc, g++, git, make, perl, tar, wget, and xz-utils. For RHEL-based Linux distributions, the default values are bzip2, file, gcc, gcc-c++, git, make, perl, tar, wget, and xz. This option is only recognized if a source build is enabled.

  • prefix: The top level install location. The default value is /usr/local/gnu. This option is only recognized if a source build is enabled.

  • source: Boolean flag to control whether to build the GNU compilers from source. The default value is False.

  • version: The version of the GNU compilers to install. Note that the version refers to the Linux distribution packaging, not the actual compiler version. For Ubuntu, the version is appended to the default package name, e.g., gcc-7. For RHEL-based Linux distributions, the version is inserted into the SCL Developer Toolset package name, e.g., devtoolset-7-gcc. For RHEL-based Linux distributions, specifying the version automatically sets extra_repository to True. If a source build is enabled, the version is the compiler tarball version on the GNU FTP site and the version must be specified. The default is an empty value.

Examples

gnu()
gnu(fortran=False)
gnu(extra_repository=True, version='7')
gnu(openacc=True, source=True, version='9.1.0')
g = gnu()
openmpi(..., toolchain=g.toolchain, ...)

runtime

gnu.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

g = gnu(...)
Stage0 += g
Stage1 += g.runtime()

hdf5

hdf5(self, **kwargs)

The hdf5 building block downloads, configures, builds, and installs the HDF5 component. Depending on the parameters, the source will be downloaded from the web (default) or copied from a source directory in the local build context.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • configure_opts: List of options to pass to configure. The default values are --enable-cxx and --enable-fortran.

  • directory: Path to the unpackaged source directory relative to the local build context. The default value is empty. If this is defined, the source in the local build context will be used rather than downloading the source from the web.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, LIBRARY_PATH, PATH, and others) should be modified to include HDF5. The default is True.

  • ldconfig: Boolean flag to specify whether the HDF5 library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the HDF5 library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are bzip2, file, make, wget, and zlib1g-dev. For RHEL-based Linux distributions the default values are bzip2, file, make, wget and zlib-devel.

  • prefix: The top level install location. The default value is /usr/local/hdf5.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of HDF5 source to download. This value is ignored if directory is set. The default value is 1.12.0.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

hdf5(prefix='/opt/hdf5/1.10.1', version='1.10.1')
hdf5(directory='sources/hdf5-1.10.1')
n = nvhpc(eula=True)
hdf5(toolchain=n.toolchain)
hdf5(check=True, configure_opts=['--enable-cxx', '--enable-fortran',
                                 '--enable-profiling=yes'])

runtime

hdf5.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

h = hdf5(...)
Stage0 += h
Stage1 += h.runtime()

hpcx

hpcx(self, **kwargs)

The hpcx building block downloads and installs the Mellanox HPC-X component.

Parameters

  • buildlabel: The build label assigned by Mellanox to the tarball. For versions 2.17 and later, the default value is cuda12. For version 2.16 the default value is cuda12-gdrcopy2-nccl2.18. For version 2.15 the default value is cuda12-gdrcopy2-nccl2.17. For version 2.14 the default value is cuda11-gdrcopy2-nccl2.16. For versions 2.12 and 2.13 the default value is cuda11-gdrcopy2-nccl2.12. For versions 2.10 and 2.11 the default value is cuda11-gdrcopy2-nccl2.11. This value is ignored for HPC-X version 2.9 and earlier.

  • environment: Boolean flag to specify whether the environment should be modified to include HPC-X. This option is only recognized if hpcxinit is False. The default is True.

  • hpcxinit: Mellanox HPC-X provides an environment script (hpcx-init.sh) to setup the HPC-X environment. If this value is True, the bashrc is modified to automatically source this environment script. However, HPC-X is not automatically available to subsequent container image build steps; the environment is available when the container image is run. To set the HPC-X environment in subsequent build steps you can explicitly call source /usr/local/hpcx/hpcx-init.sh && hpcx_load in each build step. If this value is set to False, then the environment is set such that the environment is visible to both subsequent container image build steps and when the container image is run. However, the environment may differ slightly from that set by hpcx-init.sh. The default value is True.

  • inbox: Boolean flag to specify whether to use Mellanox HPC-X built for Inbox OFED. If the value is True, use Inbox OFED. If the value is False, use Mellanox OFED. The default is False.

  • ldconfig: Boolean flag to specify whether the Mellanox HPC-X library directories should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the HPC-X library directories. This value is ignored if hpcxinit is True. The default value is False.

  • mlnx_ofed: The version of Mellanox OFED that should be matched. This value is ignored if Inbox OFED is selected. The default value is 5 for HPC-X version 2.10 and later, and 5.2-2.2.0.0 for earlier HPC-X versions.

  • multi_thread: Boolean flag to specify whether the multi-threaded version of Mellanox HPC-X should be used. The default is False.

  • ofedlabel: The Mellanox OFED label assigned by Mellanox to the tarball. For version 2.16 and later, the default value is gcc-mlnx_ofed. For earlier versions, the default value is gcc-MLNX_OFED_LINUX-5. This value is ignored if inbox is True.

  • oslabel: The Linux distribution label assigned by Mellanox to the tarball. For Ubuntu, the default value is ubuntu16.04 for Ubuntu 16.04, ubuntu18.04 for Ubuntu 18.04, ubuntu20.04 for Ubuntu 20.04, and ubuntu22.04 for Ubuntu 22.04. For HPC-X version 2.10 and later and RHEL-based Linux distributions, the default value is redhat7 for version 7 and redhat8 for version

  1. For HPC-X version 2.9 and earlier and RHEL-based Linux distributions, the default value is redhat7.6 for version 7 and redhat8.0 for version 8.
  • ospackages: List of OS packages to install prior to installing Mellanox HPC-X. For Ubuntu, the default values are bzip2, libnuma1, openssh-client, tar, and wget. For RHEL-based distributions the default values are bzip2, numactl-libs, openssh-clients, tar, and wget.

  • prefix: The top level installation location. The default value is /usr/local/hpcx.

  • version: The version of Mellanox HPC-X to install. The default value is 2.19.

Examples

hpcx(prefix='/usr/local/hpcx', version='2.16')

runtime

hpcx.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

h = hpcx(...)
Stage0 += h
Stage1 += h.runtime()

intel_mpi

intel_mpi(self, **kwargs)

The intel_mpi building block downloads and installs the Intel MPI Library.

You must agree to the Intel End User License Agreement to use this building block.

Parameters

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH, PATH, and others) should be modified to include Intel MPI. mpivars has precedence. The default is True.

  • eula: By setting this value to True, you agree to the Intel End User License Agreement. The default value is False.

  • mpivars: Intel MPI provides an environment script (mpivars.sh) to setup the Intel MPI environment. If this value is True, the bashrc is modified to automatically source this environment script. However, the Intel MPI environment is not automatically available to subsequent container image build steps; the environment is available when the container image is run. To set the Intel MPI environment in subsequent build steps you can explicitly call source /opt/intel/compilers_and_libraries/linux/mpi/intel64/bin/mpivars.sh intel64 in each build step. If this value is to set False, then the environment is set such that the environment is visible to both subsequent container image build steps and when the container image is run. However, the environment may differ slightly from that set by mpivars.sh. The default value is True.

  • ospackages: List of OS packages to install prior to installing Intel MPI. For Ubuntu, the default values are apt-transport-https, ca-certificates, gnupg, man-db, openssh-client, and wget. For RHEL-based Linux distributions, the default values are man-db and openssh-clients.

  • version: The version of Intel MPI to install. The default value is 2019.6-088.

Examples

intel_mpi(eula=True, version='2018.3-051')

runtime

intel_mpi.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

i = intel_mpi(...)
Stage0 += i
Stage1 += i.runtime()

intel_psxe

intel_psxe(self, **kwargs)

The intel_psxe building block installs Intel Parallel Studio XE.

You must agree to the Intel End User License Agreement to use this building block.

Parameters

  • components: List of Intel Parallel Studio XE components to install. The default values is DEFAULTS. If only the Intel C++ and Fortran compilers are desired, then use intel-icc__x86_64 and intel-ifort__x86_64. Please note that the values are not consistent between versions; for a list of components, extract pset/mediaconfig.xml from the tarball and grep for Abbr.

  • daal: Boolean flag to specify whether the Intel Data Analytics Acceleration Library environment should be configured when psxevars is False. This flag also controls whether to install

  • the corresponding runtime in the runtime method. Note: this flag does not control whether the developer environment is installed; see components. The default is True.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH, PATH, and others) should be modified to include Intel Parallel Studio XE. psxevars has precedence. The default is True.

  • eula: By setting this value to True, you agree to the Intel End User License Agreement. The default value is False.

  • icc: Boolean flag to specify whether the Intel C++ Compiler environment should be configured when psxevars is False. This flag also controls whether to install the corresponding runtime in

  • the runtime method. Note: this flag does not control whether the developer environment is installed; see components. The default is True.

  • ifort: Boolean flag to specify whether the Intel Fortran Compiler environment should be configured when psxevars is False. This flag also controls whether to install the corresponding runtime in

  • the runtime method. Note: this flag does not control whether the developer environment is installed; see components. The default is True.

  • ipp: Boolean flag to specify whether the Intel Integrated Performance Primitives environment should be configured when psxevars is False. This flag also controls whether to install

  • the corresponding runtime in the runtime method. Note: this flag does not control whether the developer environment is installed; see components. The default is True.

  • license: The license to use to activate Intel Parallel Studio XE. If the string contains a @ the license is interpreted as a network license, e.g., 12345@lic-server. Otherwise, the string is interpreted as the path to the license file relative to the local build context. The default value is empty. While this value is not required, the installation is unlikely to be successful without a valid license.

  • mkl: Boolean flag to specify whether the Intel Math Kernel Library environment should be configured when psxevars is False. This flag also controls whether to install the corresponding runtime in

  • the runtime method. Note: this flag does not control whether the developer environment is installed; see components. The default is True.

  • mpi: Boolean flag to specify whether the Intel MPI Library environment should be configured when psxevars is False. This flag also controls whether to install the corresponding runtime in

  • the runtime method. Note: this flag does not control whether the developer environment is installed; see components. The default is True.

  • ospackages: List of OS packages to install prior to installing Intel MPI. For Ubuntu, the default values are build-essential and cpio. For RHEL-based Linux distributions, the default values are gcc, gcc-c++, make, and which.

  • prefix: The top level install location. The default value is /opt/intel.

  • psxevars: Intel Parallel Studio XE provides an environment script (compilervars.sh) to setup the environment. If this value is True, the bashrc is modified to automatically source this environment script. However, the Intel runtime environment is not automatically available to subsequent container image build steps; the environment is available when the container image is run. To set the Intel Parallel Studio XE environment in subsequent build steps you can explicitly call source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64 in each build step. If this value is to set False, then the environment is set such that the environment is visible to both subsequent container image build steps and when the container image is run. However, the environment may differ slightly from that set by compilervars.sh. This option will be used with the runtime method. The default value is True.

  • runtime_version: The version of Intel Parallel Studio XE runtime to install via the runtime method. The runtime is installed using the intel_psxe_runtime building block. This value is passed as its version parameter. In general, the major version of the runtime should correspond to the tarball version. The default value is 2020.2-14.

  • tarball: Path to the Intel Parallel Studio XE tarball relative to the local build context. The default value is empty. This parameter is required.

  • tbb: Boolean flag to specify whether the Intel Threading Building Blocks environment should be configured when psxevars is False. This flag also controls whether to install the corresponding

  • runtime in the runtime method. Note: this flag does not control whether the developer environment is installed; see components. The default is True.

Examples

intel_psxe(eula=True, license='XXXXXXXX.lic',
           tarball='parallel_studio_xe_2018_update1_professional_edition.tgz')
i = intel_psxe(...)
openmpi(..., toolchain=i.toolchain, ...)

runtime

intel_psxe.runtime(self, _from=u'0')

Install the runtime from a full build in a previous stage

intel_psxe_runtime

intel_psxe_runtime(self, **kwargs)

The intel_mpi building block downloads and installs the Intel Parallel Studio XE runtime.

You must agree to the Intel End User License Agreement to use this building block.

Note: this building block does not install development versions of the Intel software tools. Please see the intel_psxe, intel_mpi, or mkl building blocks for development environments.

Parameters

  • daal: Boolean flag to specify whether the Intel Data Analytics Acceleration Library runtime should be installed. The default is True.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH, PATH, and others) should be modified to include Intel Parallel Studio XE runtime. psxevars has precedence. The default is True.

  • eula: By setting this value to True, you agree to the Intel End User License Agreement. The default value is False.

  • icc: Boolean flag to specify whether the Intel C++ Compiler runtime should be installed. The default is True.

  • ifort: Boolean flag to specify whether the Intel Fortran Compiler runtime should be installed. The default is True.

  • ipp: Boolean flag to specify whether the Intel Integrated Performance Primitives runtime should be installed. The default is True.

  • mkl: Boolean flag to specify whether the Intel Math Kernel Library runtime should be installed. The default is True.

  • mpi: Boolean flag to specify whether the Intel MPI Library runtime should be installed. The default is True.

  • psxevars: Intel Parallel Studio XE provides an environment script (psxevars.sh) to setup the environment. If this value is True, the bashrc is modified to automatically source this environment script. However, the Intel runtime environment is not automatically available to subsequent container image build steps; the environment is available when the container image is run. To set the Intel Parallel Studio XE runtime environment in subsequent build steps you can explicitly call source /opt/intel/psxe_runtime/linux/bin/psxevars.sh intel64 in each build step. If this value is to set False, then the environment is set such that the environment is visible to both subsequent container image build steps and when the container image is run. However, the environment may differ slightly from that set by psxevars.sh. The default value is True.

  • ospackages: List of OS packages to install prior to installing Intel MPI. For Ubuntu, the default values are apt-transport-https, ca-certificates, gcc, gnupg, man-db, openssh-client, and wget. For RHEL-based Linux distributions, the default values are man-db, openssh-clients, and which.

  • tbb: Boolean flag to specify whether the Intel Threading Building Blocks runtime should be installed. The default is True.

  • version: The version of the Intel Parallel Studio XE runtime to install. The default value is 2020.2-14.

Examples

intel_psxe_runtime(eula=True, version='2018.5-281')
intel_psxe_runtime(daal=False, eula=True, ipp=False, psxevars=False)

runtime

intel_psxe_runtime.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

i = intel_psxe_runtime(...)
Stage0 += i
Stage1 += i.runtime()

julia

julia(self, **kwargs)

The julia building block downloads and installs the Julia programming environment.

Parameters

  • cuda: Boolean flag to specify whether the JuliaGPU packages should be installed. If True, the CUDAapi, CUDAdrv, CUDAnative, and CuArrays packages are installed. Note that the CUDAdrv package must be rebuilt when the container is running to align with the host CUDA driver. The default is False.

  • depot: Path to the location of "user" Julia package depot. The default is an empty string, i.e., ~/.julia. The depot location needs to be writable by the user running the container.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include Julia. The default is True.

  • history: Path to the Julia history file. The default value is an empty string, i.e., ~/.julia/logs/repl_history.jl. The history location needs to be writable by the user running the container.

  • ldconfig: Boolean flag to specify whether the Julia library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the Julia library directory. The default value is False.

  • ospackages: List of OS packages to install prior to building. The default values are tar and wget.

  • packages: List of Julia packages to install. The default is an empty list.

  • prefix: The top level installation location. The default value is /usr/local/julia.

  • version: The version of Julia to install. The default value is 1.5.1.

Examples

julia(prefix='/usr/local/julia', version='1.3.1')
julia(depot='/tmp', history='/tmp/repl_history.jl')

runtime

julia.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

j = julia(...)
Stage0 += j
Stage1 += j.runtime()

knem

knem(self, **kwargs)

The knem building block install the headers from the KNEM component.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • environment: Boolean flag to specify whether the environment (CPATH) should be modified to include knem. The default is True.

  • ospackages: List of OS packages to install prior to installing. The default values are ca-certificates and git.

  • prefix: The top level install location. The default value is /usr/local/knem.

  • version: The version of KNEM source to download. The default value is 1.1.4.

Examples

knem(prefix='/opt/knem/1.1.3', version='1.1.3')

runtime

knem.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

k = knem(...)
Stage0 += k
Stage1 += k.runtime()

kokkos

kokkos(self, **kwargs)

The kokkos building block downloads and installs the Kokkos component.

The CMake building block should be installed prior to this building block.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • arch: List of target architectures to build. If set adds -DKokkos_ARCH_<value>=ON to the list of CMake options. The default value is VOLTA70, i.e., sm_70. If a CUDA aware build is not selected, then a non-default value should be used.

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • check: Boolean flag to specify whether the build should be checked. If True, adds -DKokkos_ENABLE_TESTS=ON to the list of CMake options. The default is False.

  • cmake_opts: List of options to pass to cmake. The default is -DCMAKE_BUILD_TYPE=RELEASE.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • cuda: Flag to control whether a CUDA aware build is performed. If True, adds -DKokkos_ENABLE_CUDA=ON and -DCMAKE_CXX_COMPILER=$(pwd)/../bin/nvcc_wrapper to the list of CMake options. The default value is True.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include Kokkos. The default is True.

  • hwloc: Flag to control whether a hwloc aware build is performed. If True, adds -DKokkos_ENABLE_HWLOC=ON to the list of CMake options. The default value is True.

  • ospackages: List of OS packages to install prior to building. For Ubuntu, the default values are gzip, libhwloc-dev, make, tar, and wget. For RHEL-based Linux distributions the default values are gzip, hwloc-devel, make, tar, and wget.

  • prefix: The top level installation location. The default value is /usr/local/kokkos.

  • repository: The location of the git repository that should be used to build OpenMPI. If True, then use the default https://github.com/kokkos/kokkos.git repository. The default is empty, i.e., use the release package specified by version.

  • url: The location of the tarball that should be used to build Kokkos. The default is empty, i.e., use the release package specified by version.

  • version: The version of Kokkos source to download. The default value is 3.2.00.

Examples

kokkos(prefix='/opt/kokkos/3.1.01', version='3.1.01')

runtime

kokkos.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

k = kokkos(...)
Stage0 += k
Stage1 += k.runtime()

libsim

libsim(self, **kwargs)

The libsim building block configures, builds, and installs the VisIt Libsim component.

If GPU rendering will be used then a cudagl base image is recommended.

Parameters

  • build_opts: List of VisIt build script options. The default values are --xdb and --server-components-only.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include Libsim. The default is True.

  • ldconfig: Boolean flag to specify whether the Libsim library directories should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the Libsim library directories. The default value is False.

  • mpi: Boolean flag to specify whether Libsim should be built with MPI support. VisIt uses MPI-1 routines that have been removed from the MPI standard; the MPI library may need to be built with special compatibility options, e.g., --enable-mpi1-compatibility for OpenMPI. If True, then the build script options --parallel and --no-icet are added and the environment variable PAR_COMPILER is set to mpicc. If True, a MPI library building block should be installed prior this building block. The default value is True.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are gzip, make, patch, tar, wget, zlib1g-dev, libxt-dev, libgl1-mesa-dev, and libglu1-mesa-dev. For RHEL-based Linux distributions, the default values are gzip, make, patch, tar, wget, which, zlib-devel, libXt-devel, libglvnd-devel, mesa-libGL-devel, and mesa-libGLU-devel.

  • prefix: The top level install location. The default value is /usr/local/visit.

  • system_cmake: Boolean flag to specify whether the system provided cmake should be used. If False, then the build script downloads a private copy of cmake. If True, then the build script option --system-cmake is added. If True, then the cmake building block should be installed prior to this building block. The default is True.

  • system_python: Boolean flag to specify whether the system provided python should be used. If False, then the build script downloads a private copy of python. If True, then the build script option --system-python is added. If True, then the Python building block should be installed with development libraries prior to this building block. The default is True.

  • thirdparty: Boolean flag to specify whether third-party components included by the build script should be retained. If True, then the build script option --thirdparty-path is added and set to <prefix>/third-party. The default is True.

  • version: The version of Libsim source to download. The default value is 2.13.3.

Examples

libsim(prefix='/opt/libsim', version='2.13.3')

runtime

libsim.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

l = libsim(...)
Stage0 += l
Stage1 += l.runtime()

llvm

llvm(self, **kwargs)

The llvm building block installs the LLVM compilers (clang and clang++) from the upstream Linux distribution.

As a side effect, a toolchain is created containing the LLVM compilers. A toolchain can be passed to other operations that want to build using the LLVM compilers.

Parameters

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH and PATH) should be modified to include the LLVM compilers when necessary. The default is True.

  • extra_tools: Boolean flag to specify whether to also install clang-format and clang-tidy. The default is False.

  • openmp: Boolean flag to specify whether to also install OpenMP support. The default is True.

  • toolset: Boolean flag to specify whether to also install the full LLVM toolset. The default is False.

  • upstream: Boolean flag to specify whether to use the upstream LLVM packages. This option is ignored if the base image is not Ubuntu-based.

  • version: The version of the LLVM compilers to install. Note that the version refers to the Linux distribution packaging, not the actual compiler version. For RHEL-based 8.x Linux distributions, the version is ignored. The default is an empty value.

Examples

llvm()
llvm(version='7')
llvm(upstream=True, version='11')
l = llvm()
openmpi(..., toolchain=l.toolchain, ...)

runtime

llvm.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

l = llvm(...)
Stage0 += l
Stage1 += l.runtime()

magma

magma(self, **kwargs)

The magma building block configures, builds, and installs the MAGMA component.

The CMake building block should be installed prior to this building block.

Either the MKL or OpenBLAS building block should also be installed.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • cmake_opts: List of options to pass to cmake. The default value is an empty list.

  • gpu_target: List of GPU architectures to compile. The default values are Pascal, Volta, and Turing.

  • ospackages: List of OS packages to install prior to configuring and building. The default values are tar and wget.

  • prefix: The top level install location. The default value is /usr/local/magma.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of MAGMA source to download. The default value is 2.5.3.

Examples

magma(prefix='/opt/magma', version='2.5.3')

runtime

magma.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

m = magma(...)
Stage0 += m
Stage1 += m.runtime()

mkl

mkl(self, **kwargs)

The mkl building block downloads and installs the Intel Math Kernel Library.

You must agree to the Intel End User License Agreement to use this building block.

Parameters

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH, PATH, and other variables) should be modified to include MKL. The default is True.

  • eula: By setting this value to True, you agree to the Intel End User License Agreement. The default value is False.

  • mklvars: MKL provides an environment script (mklvars.sh) to setup the MKL environment. If this value is True, the bashrc is modified to automatically source this environment script. However, the MKL environment is not automatically available to subsequent container image build steps; the environment is available when the container image is run. To set the MKL environment in subsequent build steps you can explicitly call source /opt/intel/mkl/bin/mklvars.sh intel64 in each build step. If this value is to set False, then the environment is set such that the environment is visible to both subsequent container image build steps and when the container image is run. However, the environment may differ slightly from that set by mklvars.sh. The default value is True.

  • ospackages: List of OS packages to install prior to installing MKL. For Ubuntu, the default values are apt-transport-https, ca-certificates, gnupg, and wget. For RHEL-based Linux distributions, the default is an empty list.

  • version: The version of MKL to install. The default value is 2020.0-088.

Examples

mkl(eula=True, version='2018.3-051')

runtime

mkl.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

m = mkl(...)
Stage0 += m
Stage1 += m.runtime()

mlnx_ofed

mlnx_ofed(self, **kwargs)

The mlnx_ofed building block downloads and installs the Mellanox OpenFabrics Enterprise Distribution for Linux.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • oslabel: The Linux distribution label assigned by Mellanox to the tarball. For Ubuntu, the default value is ubuntu16.04. For RHEL-based Linux distributions, the default value is rhel7.2 for x86_64 processors and rhel7.6alternate for aarch64 processors.

  • ospackages: List of OS packages to install prior to installing OFED. For Ubuntu, the default values are findutils, libnl-3-200, libnl-route-3-200, libnuma1, and wget. For RHEL-based 7.x distributions, the default values are findutils, libnl, libnl3, numactl-libs, and wget. For RHEL-based 8.x distributions, the default values are findutils, libnl3, numactl-libs, and wget.

  • packages: List of packages to install from Mellanox OFED. For version 5.0 and later on Ubuntu, ibverbs-providers, ibverbs-utils libibmad-dev, libibmad5, libibumad3, libibumad-dev, libibverbs-dev libibverbs1, librdmacm-dev, and librdmacm1. For earlier versions on Ubuntu, the default values are libibverbs1, libibverbs-dev, libibmad, libibmad-devel, libibumad, libibumad-devel, libmlx4-1, libmlx4-dev, libmlx5-1, libmlx5-dev, librdmacm1, librdmacm-dev, and ibverbs-utils. For version 5.0 and later on RHEL-based Linux distributions, the default values are libibumad, libibverbs, libibverbs-utils, librdmacm, rdma-core, and rdma-core-devel. For earlier versions on RHEL-based Linux distributions, the default values are libibverbs, libibverbs-devel, libibverbs-utils, libibmad, libibmad-devel, libibumad, libibumad-devel, libmlx4, libmlx4-devel, libmlx5, libmlx5-devel, librdmacm, and librdmacm-devel.

  • prefix: The top level install location. Instead of installing the packages via the package manager, they will be extracted to this location. This option is useful if multiple versions of Mellanox OFED need to be installed. The environment must be manually configured to recognize the Mellanox OFED location, e.g., in the container entry point. The default value is empty, i.e., install via the package manager to the standard system locations.

  • version: The version of Mellanox OFED to download. The default value is 5.6-2.0.9.0.

Examples

mlnx_ofed(version='4.2-1.0.0.0')

runtime

mlnx_ofed.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

m = mlnx_ofed(...)
Stage0 += m
Stage1 += m.runtime()

mpich

mpich(self, **kwargs)

The mpich building block configures, builds, and installs the MPICH component.

As a side effect, a toolchain is created containing the MPI compiler wrappers. The tool can be passed to other operations that want to build using the MPI compiler wrappers.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the make check and make testing steps should be performed. The default is False.

  • configure_opts: List of options to pass to configure. The default is an empty list.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include MPICH. The default is True.

  • ldconfig: Boolean flag to specify whether the MPICH library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the MPICH library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are file, gzip, make, openssh-client, perl, tar, and wget. For RHEL-based Linux distributions, the default values are file, gzip, make, openssh-clients, perl, tar, and wget.

  • prefix: The top level install location. The default value is /usr/local/mpich.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of MPICH source to download. The default value is 3.3.2.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

mpich(prefix='/opt/mpich/3.3', version='3.3')

runtime

mpich.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

m = mpich(...)
Stage0 += m
Stage1 += m.runtime()

multi_ofed

multi_ofed(self, **kwargs)

The multi_ofed building block downloads and installs multiple versions of the OpenFabrics Enterprise Distribution (OFED). Please refer to the mlnx_ofed and ofed building blocks for more information.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • inbox: Boolean flag to specify whether to install the 'inbox' OFED distributed by the Linux distribution. The default is True.

  • mlnx_oslabel: The Linux distribution label assigned by Mellanox to the tarball. Please see the corresponding mlnx_ofed parameter for more information.

  • mlnx_packages: List of packages to install from Mellanox OFED. Please see the corresponding mlnx_ofed parameter for more information.

  • mlnx_versions: A list of Mellanox OpenFabrics Enterprise Distribution for Linux versions to install. The default values are 3.4-2.0.0.0, 4.0-2.0.0.1, 4.1-1.0.2.0, 4.2-1.2.0.0, 4.3-1.0.1.0, 4.4-1.0.0.0, 4.5-1.0.1.0, 4.6-1.0.1.1, 4.7-3.2.9.0, 5.0-2.1.8.0, and 5.1-2.3.7.1.

  • ospackages: List of OS packages to install prior to installing OFED. For Ubuntu, the default values are libnl-3-200, libnl-route-3-200, and libnuma1. For RHEL-based Linux distributions, the default values are libnl, libnl3, and numactl-libs.

  • prefix: The top level install location. The OFED packages will be extracted to this location as subdirectories named for the respective Mellanox OFED version, or inbox for the 'inbox' OFED. The environment must be manually configured to recognize the desired OFED location, e.g., in the container entry point. The default value is /usr/local/ofed.

Examples

multi_ofed(inbox=True, mlnx_versions=['4.5-1.0.1.0', '4.6-1.0.1.1'],
           prefix='/usr/local/ofed')

runtime

multi_ofed.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

mvapich2

mvapich2(self, **kwargs)

The mvapich2 building block configures, builds, and installs the MVAPICH2 component. Depending on the parameters, the source will be downloaded from the web (default) or copied from a source directory in the local build context.

An InfiniBand building block (OFED or Mellanox OFED) should be installed prior to this building block.

As a side effect, a toolchain is created containing the MPI compiler wrappers. The tool can be passed to other operations that want to build using the MPI compiler wrappers.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • configure_opts: List of options to pass to configure. The default values are --disable-mcast.

  • cuda: Boolean flag to control whether a CUDA aware build is performed. If True, adds --enable-cuda --with-cuda to the list of configure options, otherwise adds --disable-cuda. If the toolchain specifies CUDA_HOME, then that path is used, otherwise /usr/local/cuda is used for the path. The default value is True.

  • directory: Path to the unpackaged source directory relative to the local build context. The default value is empty. If this is defined, the source in the local build context will be used rather than downloading the source from the web.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include MVAPICH2. The default is True.

  • gpu_arch: The GPU architecture to use. Older versions of MVAPICH2 (2.3b and previous) were hard-coded to use "sm_20". This option has no effect on more recent MVAPICH2 versions. The default value is to use the MVAPICH2 default.

  • ldconfig: Boolean flag to specify whether the MVAPICH2 library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the MVAPICH2 library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are byacc, file, flex, make, openssh-client, and wget. For RHEL-based Linux distributions, the default values are byacc, file, flex, make, openssh-clients, and wget.

  • prefix: The top level install location. The default value is /usr/local/mvapich2.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of MVAPICH2 source to download. This value is ignored if directory is set. The default value is 2.3.4.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

mvapich2(cuda=False, prefix='/opt/mvapich2/2.3a', version='2.3a')
mvapich2(directory='sources/mvapich2-2.3b')
n = nvhpc(eula=True)
mvapich2(toolchain=n.toolchain)
mvapich2(configure_opts=['--disable-fortran', '--disable-mcast'])

runtime

mvapich2.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

m = mvapich2(...)
Stage0 += m
Stage1 += m.runtime()

mvapich2_gdr

mvapich2_gdr(self, **kwargs)

The mvapich2_gdr building blocks installs the MVAPICH2-GDR component. Depending on the parameters, the package will be downloaded from the web (default) or copied from the local build context.

MVAPICH2-GDR is distributed as a binary package, so certain dependencies need to be met and only certain combinations of recipe components are supported; please refer to the MVAPICH2-GDR documentation for more information.

The GNU compiler or PGI compiler building blocks should be installed prior to this building block.

The Mellanox OFED building block should be installed prior to this building block.

The gdrcopy building block should be installed prior to this building block.

As a side effect, a toolchain is created containing the MPI compiler wrappers. The toolchain can be passed to other operations that want to build using the MPI compiler wrappers.

Note: Using MVAPICH2-GDR on non-RHEL-based Linux distributions has several issues, including compiler version mismatches and libnuma incompatibilities.

Parameters

  • arch: The processor architecture of the MVAPICH2-GDR package. The default value is set automatically based on the processor architecture of the base image.

  • cuda_version: The version of CUDA the MVAPICH2-GDR package was built against. The version string format is X.Y. The version should match the version of CUDA provided by the base image. This value is ignored if package is set. The default value is 10.2.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include MVAPICH2-GDR. The default is True.

  • gnu: Boolean flag to specify whether a GNU build should be used. The default value is True.

  • ldconfig: Boolean flag to specify whether the MVAPICH2-GDR library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the MVAPICH2-GDR library directory. The default value is False.

  • mlnx_ofed_version: The version of Mellanox OFED the MVAPICH2-GDR package was built against. The version string format is X.Y. The version should match the version of Mellanox OFED installed by the mlnx_ofed building block. This value is ignored if package is set. The default value is 4.7.

  • ospackages: List of OS packages to install prior to installation. For Ubuntu, the default values are cpio, libnuma1, openssh-client, rpm2cpio and wget, plus libgfortran3 if a GNU compiled package is selected. For RHEL-based Linux distributions, the default values are libpciaccess, numactl-libs, openssh-clients, and wget, plus libgfortran if a GNU compiled package is selected.

  • package: Specify the package name to download. The package should correspond to the other recipe components (e.g., compiler version, CUDA version, Mellanox OFED version). If specified, this option overrides all other building block options (e.g., compiler family, compiler version, CUDA version, Mellanox OFED version, MVAPICH2-GDR version).

  • pgi: Boolean flag to specify whether a PGI build should be used. The default value is False.

  • release: The release of MVAPICH2-GDR to download. The value is ignored is package is set. The default value is 1.

  • version: The version of MVAPICH2-GDR to download. The value is ignored if package is set. The default value is 2.3.4. Due to differences in the packaging scheme, versions prior to 2.3 are not supported.

Examples

mvapich2_gdr(version='2.3.1')
mvapich2_gdr(package='mvapich2-gdr-mcast.cuda10.0.mofed4.3.gnu4.8.5-2.3-1.el7.x86_64.rpm')

runtime

mvapich2_gdr.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

m = mvapich2_gdr(...)
Stage0 += m
Stage1 += m.runtime()

nccl

nccl(self, **kwargs)

The nccl building block installs the NCCL component.

Parameters

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • build: Boolean flag to specify whether NCCL should be built from source. The default value is False.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • cuda: Flag to specify the CUDA version of the package to download. The default is 11.6. This option is ignored if build is True.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, LIBRARY_PATH, and PATH) should be modified to include NCCL. The default is True. This option is ignored if build is False.

  • make_variables: Dictionary of environment variables and values to set when building NCCL. The default is an empty dictionary. This option is ignored if build is False.

  • ospackages: List of OS packages to install prior to building. The default values are make and wget.

  • prefix: The top level install location. The default value is /usr/local/nccl. This option is ignored if build is False.

  • repository: The location of the git repository that should be used to build NCCL. If True, then use the default https://github.com/NVIDIA/nccl.git repository. The default is empty, i.e., use the release package specified by version.

  • version: The version of NCCL to install. The default value is 2.12.10-1.

Examples

nccl(cuda='11.0', version='2.7.6-1')
nccl(build=True, version='2.7.6-1')

runtime

nccl.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

n = nccl(...)
Stage0 += n
Stage1 += n.runtime()

netcdf

netcdf(self, **kwargs)

The netcdf building block downloads, configures, builds, and installs the NetCDF component.

The HDF5 building block should be installed prior to this building block.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • configure_opts: List of options to pass to configure. The default value is an empty list.

  • cxx: Boolean flag to specify whether the NetCDF C++ library should be installed. The default is True.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, LIBRARY_PATH and PATH) should be modified to include NetCDF. The default is True.

  • fortran: Boolean flag to specify whether the NetCDF Fortran library should be installed. The default is True.

  • ldconfig: Boolean flag to specify whether the NetCDF library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the NetCDF library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are ca-certificates, file, libcurl4-openssl-dev, m4, make, wget, and zlib1g-dev. For RHEL-based Linux distributions the default values are ca-certificates, file, libcurl-devel m4, make, wget, and zlib-devel.

  • prefix: The top level install location. The default location is /usr/local/netcdf.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of NetCDF to download. The default value is 4.7.4.

  • version_cxx: The version of NetCDF C++ to download. The default value is 4.3.1.

  • version_fortran: The version of NetCDF Fortran to download. The default value is 4.5.3.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

netcdf(prefix='/opt/netcdf/4.6.1', version='4.6.1')

runtime

netcdf.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

n = netcdf(...)
Stage0 += n
Stage1 += n.runtime()

nsight_compute

nsight_compute(self, **kwargs)

The nsight_compute building block downloads and installs the [NVIDIA Nsight Compute profiler]](https://developer.nvidia.com/nsight-compute).

Parameters

  • eula: Required, by setting this value to True, you agree to the Nsight Compute End User License Agreement that is displayed when running the installer interactively. The default value is False.

  • ospackages: List of OS packages to install prior to building. When using a runfile, the default values are perl for Ubuntu and perl and perl-Env for RHEL-based Linux distributions. Otherwise, the default values are apt-transport-https, ca-certificates, gnupg, and wget for Ubuntu and an empty list for RHEL-based Linux distributions.

  • prefix: The top level install prefix. The default value is /usr/local/NVIDIA-Nsight-Compute. This parameter is ignored unless runfile is set.

  • runfile: Path or URL to NSight Compute's .run file relative to the local build context. The default value is empty.

  • version: the version of Nsight Compute to install. Note when runfile is set this parameter is ignored. The default value is 2022.4.0.

Examples

nsight_compute(version='2020.4.0')
nsight_compute(eula=True, runfile='nsight-compute-linux-2020.2.0.18-28964561.run')

nsight_systems

nsight_systems(self, **kwargs)

The nsight_systems building block downloads and installs the [NVIDIA Nsight Systems profiler]](https://developer.nvidia.com/nsight-systems).

Parameters

  • cli: Boolean flag to specify whether the command line only (CLI) package should be installed. The default is True.

  • version: The version of Nsight Systems to install. The default value is 2022.5.1.

Examples

nsight_systems(version='2020.5.1')

nvhpc

nvhpc(self, **kwargs)

The nvhpc building block downloads and installs the NVIDIA HPC SDK. By default, the NVIDIA HPC SDK is installed from a package repository. Alternatively the tar package can be downloaded by specifying the tarball parameter, or a local tar package may used instead by specifying the package parameter.

You must agree to the NVIDIA HPC SDK End-User License Agreement to use this building block.

As a side effect, a toolchain is created containing the NVIDIA compilers. The tool can be passed to other operations that want to build using the NVIDIA compilers.

Parameters

  • cuda: The default CUDA version to configure. The default is an empty value, i.e., use the latest version supported by the NVIDIA HPC SDK. This value is ignored if installing from the package repository.

  • cuda_multi: Boolean flag to specify whether the NVIDIA HPC SDK support for multiple CUDA versions should be installed. The default value is True.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, MANPATH, and PATH) should be modified to include the NVIDIA HPC SDK. The default is True.

  • eula: By setting this value to True, you agree to the NVIDIA HPC SDK End-User License Agreement. The default value is False.

  • extended_environment: Boolean flag to specify whether an extended set of environment variables should be defined. If True, the following environment variables CC, CPP, CXX, F77, F90, and FC. If False, then only CPATH, LD_LIBRARY_PATH, MANPATH, and PATH will be extended to include the NVIDIA HPC SDK. The default value is False.

  • mpi: Boolean flag to specify whether MPI should be included in the environment. The default value is True.

  • ospackages: List of OS packages to install prior to installing the NVIDIA HPC SDK. The default value is ca-certificates, gnupg, and wget for Ubuntu, and ca-certificates for RHEL-based Linux distributions. If not installing from the package repository, then for Ubuntu, the default values are bc, debianutils, gcc, g++, gfortran, libatomic1, libnuma1, openssh-client, and wget, and for RHEL-based Linux distributions, the default values are bc, gcc, gcc-c++, gcc-gfortran, libatomic, numactl-libs, openssh-clients, wget, and which.

  • package: Path to the NVIDIA HPC SDK tar package file relative to the local build context. The default value is empty.

  • prefix: The top level install prefix. The default value is /opt/nvidia/hpc_sdk. This value is ignored when installing from the package repository.

  • redist: The list of redistributable files to copy into the runtime stage. The paths are relative to the REDIST directory and wildcards are supported. The default is an empty list.

  • tarball: Boolean flag to specify whether the NVIDIA HPC SDK should be installed by downloading the tar package file. If False, install from the package repository. The default is False.

  • toolchain: The toolchain object to be used to configure the HPC SDK with a specific GNU toolchain. The default is empty, i.e., use the default GNU toolchain.

  • url: The location of the package that should be installed. The default value is https://developer.download.nvidia.com/hpc-sdk/nvhpc_X_Y_Z_cuda_multi.tar.gz, where X, Y, and Z` are the year, version, and architecture whose values are automatically determined.

  • version: The version of the HPC SDK to use. Note when package is set the version is determined automatically from the package file name. The default value is 24.7.

Examples

nvhpc(eula=True)
nvhpc(eula=True, tarball=True)
nvhpc(eula=True,
      url='https://developer.download.nvidia.com/hpc-sdk/nvhpc_2020_207_Linux_x86_64_cuda_11.0.tar.gz')
nvhpc(eula=True,
      package='nvhpc_2020_207_Linux_x86_64_cuda_multi.tar.gz',
      redist=['compilers/lib/*'])
n = nvhpc(eula=True, ...)
openmpi(..., toolchain=n.toolchain, ...)

runtime

nvhpc.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

n = nvhpc(redist=[...], ...)
Stage0 += n
Stage1 += n.runtime()

nvshmem

nvshmem(self, **kwargs)

The nvshmem building block builds and installs the NVSHMEM component. CMake version 3.19 or later is required and must be installed separately.

Parameters

  • build_examples: Boolean flag to specify whether the NVSHMEM examples should be built. The default is False.

  • build_packages: Boolean flag to specify whether the RPM and deb packages should be built. The default is False.

  • cmake_opts: List of additional options to pass to cmake. The default value is an empty list.

  • cuda: Flag to specify the path to the CUDA installation. The default is /usr/local/cuda.

  • environment: Boolean flag to specify whether the environment (CPATH, LIBRARY_PATH, and PATH) should be modified to include NVSHMEM. The default is True.

  • gdrcopy: Flag to specify the path to the GDRCOPY installation. The default is empty.

  • ldconfig: Boolean flag to specify whether the NVSHMEM library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the NVSHMEM library directory. The default value is False.

  • mpi: Flag to specify the path to the MPI installation. The default is empty, i.e., do not build NVSHMEM with MPI support.

  • ospackages: List of OS packages to install prior to building. The default values are make and wget.

  • prefix: The top level install location. The default value is /usr/local/nvshmem.

  • shmem: Flag to specify the path to the SHMEM installation. The default is empty, i.e., do not build NVSHMEM with SHMEM support.

  • version: The version of NVSHMEM source to download. The default value is 2.9.0-2.

Examples

nvshmem(mpi='/usr/local/nvshmem', version='2.9.0-2')

runtime

nvshmem.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

n = nvshmem(...)
Stage0 += n
Stage1 += n.runtime()

ofed

ofed(self, **kwargs)

The ofed building block installs the OpenFabrics Enterprise Distribution packages that are part of the Linux distribution.

For Ubuntu 16.04, the following packages are installed: dapl2-utils, ibutils, ibverbs-utils, infiniband-diags, libdapl2, libdapl-dev, libibcm1, libibcm-dev, libibmad5, libibmad-dev, libibverbs1, libibverbs-dev, libmlx4-1, libmlx4-dev, libmlx5-1, libmlx5-dev, librdmacm1, librdmacm-dev, and rdmacm-utils. For Ubuntu 16.04 and aarch64 processors, the dapl2-utils, libdapl2, libdapl-dev, libibcm1 and libibcm-dev packages are not installed because they are not available. For Ubuntu 16.04 and ppc64le processors, the libibcm1 and libibcm-dev packages are not installed because they are not available.

For Ubuntu 18.04 and later, the following packages are installed: dapl2-utils, ibutils, ibverbs-providers, ibverbs-utils, infiniband-diags, libdapl2, libdapl-dev, libibmad5, libibmad-dev, libibverbs1, libibverbs-dev, librdmacm1, librdmacm-dev, and rdmacm-utils.

For RHEL-based 7.x distributions, the following packages are installed: dapl, dapl-devel, ibutils, libibcm, libibmad, libibmad-devel, libmlx5, libibumad, libibverbs, libibverbs-utils, librdmacm, rdma-core, and rdma-core-devel.

For RHEL-based 8.x distributions and later, the following packages are installed: libibmad, libibmad-devel, libmlx5, libibumad, libibverbs, libibverbs-utils, librdmacm, rdma-core, and rdma-core-devel.

Parameters

  • prefix: The top level install location. Install of installing the packages via the package manager, they will be extracted to this location. This option is useful if multiple versions of OFED need to be installed. The environment must be manually configured to recognize the OFED location, e.g., in the container entry point. The default value is empty, i.e., install via the package manager to the standard system locations.

Examples

ofed()

runtime

ofed.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

o = ofed(...)
Stage0 += o
Stage1 += o.runtime()

openblas

openblas(self, **kwargs)

The openblas building block builds and installs the OpenBLAS component.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include OpenBLAS. The default is True.

  • ldconfig: Boolean flag to specify whether the OpenBLAS library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the OpenBLAS library directory. The default value is False.

  • make_opts: List of options to pass to make. For aarch64 processors, the default values are TARGET=ARMV8 and USE_OPENMP=1. For ppc64le processors, the default values are TARGET=POWER8 and USE_OPENMP=1. For x86_64 processors, the default value is USE_OPENMP=1.

  • ospackages: List of OS packages to install prior to building. The default values are make, perl, tar, and wget.

  • prefix: The top level installation location. The default value is /usr/local/openblas.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • version: The version of OpenBLAS source to download. The default value is 0.3.21.

Examples

openblas(prefix='/opt/openblas/0.3.1', version='0.3.1')

runtime

openblas.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

o = openblas(...)
Stage0 += o
Stage1 += o.runtime()

openmpi

openmpi(self, **kwargs)

The openmpi building block configures, builds, and installs the OpenMPI component.

As a side effect, a toolchain is created containing the MPI compiler wrappers. The tool can be passed to other operations that want to build using the MPI compiler wrappers.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • configure_opts: List of options to pass to configure. The default values are --disable-getpwuid and --enable-orterun-prefix-by-default.

  • cuda: Boolean flag to control whether a CUDA aware build is performed. If True, adds --with-cuda to the list of configure options, otherwise adds --without-cuda. If the toolchain specifies CUDA_HOME, then that path is used. The default value is True.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH and PATH) should be modified to include OpenMPI. The default is True.

  • infiniband: Boolean flag to control whether InfiniBand capabilities are included. If True, adds --with-verbs to the list of configure options, otherwise adds --without-verbs. The default value is True.

  • ldconfig: Boolean flag to specify whether the OpenMPI library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the OpenMPI library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are bzip2, file, hwloc, libnuma-dev, make, openssh-client, perl, tar, and wget. For RHEL-based Linux distributions, the default values are bzip2, file, hwloc, make, numactl-devl, openssh-clients, perl, tar, and wget. If the repository parameter is set, then autoconf, automake, ca-certificates, git, and libtool are also included.

  • pmi: Flag to control whether PMI is used by the build. If True, adds --with-pmi to the list of configure options. If a string, uses the value of the string as the PMI path, e.g., --with-pmi=/usr/local/slurm-pmi2. If False, does nothing. The default is False.

  • pmix: Flag to control whether PMIX is used by the build. If True, adds --with-pmix to the list of configure options. If a string, uses the value of the string as the PMIX path, e.g., --with-pmix=/usr/local/pmix. If False, does nothing. The default is False.

  • prefix: The top level install location. The default value is /usr/local/openmpi.

  • repository: The location of the git repository that should be used to build OpenMPI. If True, then use the default https://github.com/open-mpi/ompi.git repository. The default is empty, i.e., use the release package specified by version.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • ucx: Flag to control whether UCX is used by the build. If True, adds --with-ucx to the list of configure options. If a string, uses the value of the string as the UCX path, e.g., --with-ucx=/path/to/ucx. If False, adds --without-ucx to the list of configure options. The default is False.

  • url: The location of the tarball that should be used to build OpenMPI. The default is empty, i.e., use the release package specified by version.

  • version: The version of OpenMPI source to download. This value is ignored if directory is set. The default value is 4.0.5.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

openmpi(cuda=False, infiniband=False, prefix='/opt/openmpi/2.1.2',
    version='2.1.2')
openmpi(repository='https://github.com/open-mpi/ompi.git')
n = nvhpc(eula=True)
openmpi(toolchain=n.toolchain)
openmpi(configure_opts=['--disable-getpwuid', '--with-slurm'],
        ospackages=['file', 'hwloc', 'libslurm-dev'])
openmpi(pmi='/usr/local/slurm-pmi2', pmix='internal')

runtime

openmpi.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

o = openmpi(...)
Stage0 += o
Stage1 += o.runtime()

packages

packages(self, **kwargs)

The packages building block specifies the set of operating system packages to install. Based on the Linux distribution, the building block invokes either apt-get (Ubuntu) or yum (RHEL-based).

This building block is preferred over directly using the apt_get or yum building blocks.

Parameters

  • apt: A list of Debian packages to install. The default is an empty list.

  • aptitude: Boolean flag to specify whether aptitude should be used instead of apt-get. The default is False.

  • apt_keys: A list of GPG keys to add. The default is an empty list.

  • apt_ppas: A list of personal package archives to add. The default is an empty list.

  • apt_repositories: A list of apt repositories to add. The default is an empty list.

  • download: Boolean flag to specify whether to download the deb / rpm packages instead of installing them. The default is False.

  • download_directory: The deb package download location. This parameter is ignored if download is False. The default value is /var/tmp/packages_download.

  • epel: Boolean flag to specify whether to enable the Extra Packages for Enterprise Linux (EPEL) repository. The default is False. This parameter is ignored if the Linux distribution is not RHEL-based.

  • extract: Location where the downloaded packages should be extracted. Note, this extracts and does not install the packages, i.e., the package manager is bypassed. After the downloaded packages are extracted they are deleted. This parameter is ignored if download is False. If empty, then the downloaded packages are not extracted. The default value is an empty string.

  • force_add_repo: Boolean flag to specify whether adding a repository should be considered successful no matter the actual result. This parameter is only valid for yum repositories. The default value is False.

  • ospackages: A list of packages to install. The list is used for both Ubuntu and RHEL-based Linux distributions, therefore only packages with the consistent names across Linux distributions should be specified. This parameter is ignored if apt or yum is specified. The default value is an empty list.

  • powertools: Boolean flag to specify whether to enable the PowerTools repository. The default is False. This parameter is ignored if the Linux distribution is not RHEL-based.

  • release_stream: Boolean flag to specify whether to enable the CentOS release stream repository. The default is False. This parameter is only recognized if the Linux distribution is RHEL-based and the version is 8.x.

  • scl: Boolean flag to specify whether to enable the Software Collections (SCL) repository. The default is False. This parameter is only recognized if the Linux distribution is RHEL-based and the version is 7.x.

  • yum: A list of RPM packages to install. The default value is an empty list.

  • yum4: Boolean flag to specify whether yum4 should be used instead of yum. The default is False. This parameter is only recognized if the CentOS version is 7.x.

  • yum_keys: A list of GPG keys to import. The default is an empty list.

  • yum_repositories: A list of yum repositories to add. The default is an empty list.

Examples

packages(ospackages=['make', 'wget'])
packages(apt=['zlib1g-dev'], yum=['zlib-devel'])
packages(apt=['python3'], yum=['python34'], epel=True)

pgi

pgi(self, **kwargs)

The pgi building block installs the PGI compiler from a manually downloaded package.

Note: The NVIDIA HPC SDK has replaced the PGI compilers. The nvhpc building block should be used instead of this building block.

You must agree to the PGI End-User License Agreement to use this building block.

As a side effect, a toolchain is created containing the PGI compilers. The tool can be passed to other operations that want to build using the PGI compilers.

Parameters

  • environment: Boolean flag to specify whether the environment (LD_LIBRARY_PATH, PATH, and potentially other variables) should be modified to include the PGI compiler. The default is True.

  • eula: By setting this value to True, you agree to the PGI End-User License Agreement. The default value is False.

  • extended_environment: Boolean flag to specify whether an extended set of environment variables should be defined. If True, the

  • following environment variables will be defined: CC, CPP, CXX, F77, F90, FC, and MODULEPATH. In addition, if the PGI MPI component is selected then PGI_OPTL_INCLUDE_DIRS and PGI_OPTL_LIB_DIRS will also be defined and PATH and LD_LIBRARY_PATH will include the PGI MPI component. If False, then only PATH and LD_LIBRARY_PATH will be extended to include the PGI compiler. The default value is False.

  • mpi: Boolean flag to specify whether the MPI component should be installed. If True, MPI will be installed. The default value is False.

  • ospackages: List of OS packages to install prior to installing the PGI compiler. For Ubuntu, the default values are gcc, g++, libnuma1 and perl, and also wget (if downloading the PGI compiler rather than using a tarball in the local build context). For RHEL-based Linux distributions, the default values are gcc, gcc-c++, numactl-libs and perl, and also wget (if downloading the PGI compiler rather than using a tarball in the local build context).

  • prefix: The top level install prefix. The default value is /opt/pgi.

  • system_cuda: Boolean flag to specify whether the PGI compiler should use the system CUDA. If False, the version(s) of CUDA bundled with the PGI compiler will be installed. The default value is False.

  • tarball: Path to the PGI compiler tarball relative to the local build context. The default value is empty. This parameter is required.

Examples

pgi(eula=True, tarball='pgilinux-2019-1910-x86_64.tar.gz')

runtime

pgi.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

p = pgi(...)
Stage0 += p
Stage1 += p.runtime()

pip

pip(self, **kwargs)

The pip building block installs Python packages from PyPi.

Parameters

  • alternatives: Boolean flag to specify whether to configure alternatives for python and pip. RHEL-based 8.x distributions do not setup python by default. The default is False.

  • args: List of arguments to pass to pip. The default is --no-cache-dir.

  • ospackages: List of OS packages to install prior to installing PyPi packages. For Ubuntu, the default values are python-pip, python-setuptools, and python-wheel for Python 2.x and python3-pip, python3-setuptools, and python3-wheel for Python 3.x. For RHEL-based distributions, the default values are python2-pip for Python 2.x and python3-pip for Python 3.x.

  • packages: List of PyPi packages to install. The default is an empty list.

  • pip: The name of the pip tool to use. The default is pip.

  • requirements: Path to pip requirements file. The default is empty.

  • upgrade: Boolean flag to control whether pip itself should be upgraded prior to installing any PyPi packages. The default is False.

Examples

pip(packages=['hpccm'])
pip(packages=['hpccm'], pip='pip3')
pip(requirements='requirements.txt')

pmix

pmix(self, **kwargs)

The pmix building block configures, builds, and installs the PMIX component.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • configure_opts: List of options to pass to configure. The default is an empty list.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, and PATH) should be modified to include PMIX. The default is True.

  • ldconfig: Boolean flag to specify whether the PMIX library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the PMIX library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are file, hwloc, libevent-dev, make, tar, and wget. For RHEL-based Linux distributions, the default values are file, hwloc, libevent-devel, make, tar, and wget.

  • prefix: The top level install location. The default value is /usr/local/pmix.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default value is empty.

  • version: The version of PMIX source to download. The default value is 4.1.2.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

pmix(prefix='/opt/pmix/3.1.4', version='3.1.4')

runtime

pmix.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

p = pmix(...)
Stage0 += p
Stage1 += p.runtime()

pnetcdf

pnetcdf(self, **kwargs)

The pnetcdf building block downloads, configures, builds, and installs the PnetCDF component.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • check: Boolean flag to specify whether the make check step should be performed. The default is False.

  • configure_opts: List of options to pass to configure. The default values are --enable-shared.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, LIBRARY_PATH, and PATH) should be modified to include PnetCDF. The default is True.

  • ldconfig: Boolean flag to specify whether the PnetCDF library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the PnetCDF library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. The default values are file, m4, make, perl, tar, and wget.

  • prefix: The top level install location. The default value is /usr/local/pnetcdf.

  • toolchain: The toolchain object. A MPI compiler toolchain must be used. The default is to use the standard MPI compiler wrappers, e.g., CC=mpicc, CXX=mpicxx, etc.

  • version: The version of PnetCDF source to download. The default value is 1.12.1.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

pnetcdf(prefix='/opt/pnetcdf/1.10.0', version='1.10.0')
ompi = openmpi(...)
pnetcdf(toolchain=ompi.toolchain, ...)

runtime

pnetcdf.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

p = pnetcdf(...)
Stage0 += p
Stage1 += p.runtime()

python

python(self, **kwargs)

The python building block installs Python from the upstream Linux distribution.

Parameters

  • alternatives: Boolean flag to specify whether to configure alternatives for python and python-config (if devel is enabled). RHEL-based 8.x distributions do not setup python by default. The default is False.

  • devel: Boolean flag to specify whether to also install the Python development headers and libraries. The default is False.

  • python2: Boolean flag to specify whether to install Python version

  1. The default is True.
  • python3: Boolean flag to specify whether to install Python version
  1. The default is True.

Examples

python()
python(python3=False)

runtime

python.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

p = python(...)
Stage0 += p
Stage1 += p.runtime()

rdma_core

rdma_core(self, **kwargs)

The rdma_core building block configures, builds, and installs the RDMA Core component.

The CMake building block should be installed prior to this building block.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, LIBRARY_PATH, and PATH) should be modified to include RDMA Core. The default is True.

  • ldconfig: Boolean flag to specify whether the RDMA Core library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the RDMA Core library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are libudev-dev, libnl-3-dev, libnl-route-3-dev, make, pkg-config, python3-docutils, pandoc, and wget. For RHEL-based Linux distributions, the default values are libnl3-devel, libudev-devel, make, pkgconfig, pandoc, python-docutils, and wget. If the repository parameter is set, then ca-certificates and git are also included.

  • prefix: The top level install location. The default value is /usr/local/rdma-core.

  • repository: The location of the git repository that should be used to build RDMA Core. If True, then use the default https://github.com/linux-rdma/rdma-core.git repository. The default is empty, i.e., use the release package specified by version.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default value is empty.

  • url: The location of the tarball that should be used to build RDMA Core. The default is empty, i.e., use the release package specified by version.

  • version: The version of RDMA Core source to download. The default value is 31.2.

Examples

rdma_core(prefix='/opt/rdma-core/31.2', version='31.2')
rdma_core(repository='https://github.com/linux-rdma/rdma-core.git')

runtime

rdma_core.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

r = rdma_core(...)
Stage0 += r
Stage1 += r.runtime()

scif

scif(self, **kwargs)

The scif building blocks installs components using the Scientific Filesystem (SCI-F).

Other building blocks and / or primitives should be added to the scif building block using the += syntax.

If not generating a Singularity definition file, SCI-F should be installed using the pip building block prior to this building block.

If not generating a Singularity definition file, this module creates SCI-F recipe files in the current directory (see also the file parameter).

Parameters

  • _arguments: Specify additional Dockerfile RUN arguments (Docker specific).

  • _env: Boolean flag to specify whether the general container environment should be also be loaded when executing a SCI-F %appinstall block. The default is False (Singularity specific).

  • file: The SCI-F recipe file name. The default value is the name parameter with the .scif suffix.

  • name: The name to use to label the SCI-F application. This parameter is required.

  • _native: Boolean flag to specify whether to use the native Singularity support for SCI-F when generating Singularity definition files. The default is True (Singularity specific).

Examples

pip(packages=['scif'])
s = scif(name='example')
s += openmpi(prefix='/scif/apps/example')
s += shell(commands=[...])

runtime

scif.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

The entire /scif directory is copied into the runtime stage on the first call. Subsequent calls do nothing.

Examples

s = scif(...)
Stage0 += s
Stage1 += s.runtime()

sensei

sensei(self, **kwargs)

The sensei building block configures, builds, and installs the SENSEI component.

The CMake building block should be installed prior to this building block.

In most cases, one or both of the Catalyst or Libsim building blocks should be installed.

If GPU rendering will be used then a cudagl base image is recommended.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • branch: The branch of SENSEI to use. The default value is v2.1.1.

  • catalyst: Flag to specify the location of the ParaView/Catalyst installation, e.g., /usr/local/catalyst. If set, then the Catalyst building block should be installed prior to this building block. The default value is empty.

  • cmake_opts: List of options to pass to cmake. The default value is -DENABLE_SENSEI=ON.

  • libsim: Flag to specify the location of the VisIt/Libsim installation, e.g., /usr/local/visit. If set, then the Libsim building block should be installed prior to this building block. The vtk option should also be set. The default value is empty.

  • miniapps: Boolean flag to specify whether the SENSEI mini-apps should be built and installed. The default is False.

  • ospackages: List of OS packages to install prior to configuring and building. The default values are ca-certificates, git, and make.

  • prefix: The top level install location. The default value is /usr/local/sensei.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • vtk: Flag to specify the location of the VTK installation. If libsim is defined, this option must be set to the Libsim VTK location, e.g., /usr/local/visit/third-party/vtk/6.1.0/linux-x86_64_gcc-5.4/lib/cmake/vtk-6.1. Note that the compiler version is embedded in the Libsim VTK path. The compiler version may differ depending on which base image is used; version 5.4 corresponds to Ubuntu 16.04. The default value is empty.

Examples

sensei(branch='v2.1.1', catalyst='/usr/local/catalyst',
       prefix='/opt/sensei')
sensei(libsim='/usr/local/visit',
       vtk='/usr/local/visit/third-party/vtk/6.1.0/linux-x86_64_gcc-5.4/lib/cmake/vtk-6.1')

runtime

sensei.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

s = sensei(...)
Stage0 += s
Stage1 += s.runtime()

slurm_pmi2

slurm_pmi2(self, **kwargs)

The slurm_pmi2 building block configures, builds, and installs the PMI2 component from SLURM.

Note: this building block does not install SLURM itself.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • configure_opts: List of options to pass to configure. The default is an empty list.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (CPATH and LD_LIBRARY_PATH) should be modified to include PMI2. The default is False.

  • ldconfig: Boolean flag to specify whether the PMI2 library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the PMI2 library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. The default values are bzip2, file, make, perl, tar, and wget.

  • prefix: The top level install location. The default value is /usr/local/slurm-pmi2.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default value is empty.

  • version: The version of SLURM source to download. The default value is 21.08.8.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

slurm_pmi2(prefix='/opt/pmi', version='20.11.9')

runtime

slurm_pmi2.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

p = slurm_pmi2(...)
Stage0 += p
Stage1 += p.runtime()

ucx

ucx(self, **kwargs)

The ucx building block configures, builds, and installs the UCX component.

An InfiniBand building block (OFED or Mellanox OFED) should be installed prior to this building block. One or all of the gdrcopy, KNEM, and XPMEM building blocks should also be installed prior to this building block.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • branch: The git branch to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the default branch for the repository.

  • commit: The git commit to clone. Only recognized if the repository parameter is specified. The default is empty, i.e., use the latest commit on the default branch for the repository.

  • configure_opts: List of options to pass to configure. The default values are --enable-optimizations, --disable-logging, --disable-debug, --disable-assertions, --disable-params-check, and --disable-doxygen-doc.

  • cuda: Flag to control whether a CUDA aware build is performed. If True, adds --with-cuda=/usr/local/cuda to the list of configure options. If a string, uses the value of the string as the CUDA path. If the toolchain specifies CUDA_HOME, then that path is used. If False, adds --without-cuda to the list of configure options. The default value is an empty string.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH, LIBRARY_PATH, and PATH) should be modified to include UCX. The default is True.

  • gdrcopy: Flag to control whether gdrcopy is used by the build. If True, adds --with-gdrcopy to the list of configure options. If a string, uses the value of the string as the gdrcopy path, e.g., --with-gdrcopy=/path/to/gdrcopy. If False, adds --without-gdrcopy to the list of configure options. The default is an empty string, i.e., include neither --with-gdrcopy not --without-gdrcopy and let configure try to automatically detect whether gdrcopy is present or not.

  • knem: Flag to control whether KNEM is used by the build. If True, adds --with-knem to the list of configure options. If a string, uses the value of the string as the KNEM path, e.g., --with-knem=/path/to/knem. If False, adds --without-knem to the list of configure options. The default is an empty string, i.e., include neither --with-knem not --without-knem and let configure try to automatically detect whether KNEM is present or not.

  • ldconfig: Boolean flag to specify whether the UCX library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the UCX library directory. The default value is False.

  • ofed: Flag to control whether OFED is used by the build. If True, adds --with-verbs and --with-rdmacm to the list of configure options. If a string, uses the value of the string as the OFED path, e.g., --with-verbs=/path/to/ofed. If False, adds --without-verbs and --without-rdmacm to the list of configure options. The default is an empty string, i.e., include neither --with-verbs not --without-verbs and let configure try to automatically detect whether OFED is present or not.

  • ospackages: List of OS packages to install prior to configuring and building. For Ubuntu, the default values are binutils-dev, file, libnuma-dev, make, and wget. For RHEL-based Linux distributions, the default values are binutils-devel, file, make, numactl-devel, and wget. If the repository parameter is set, then autoconf, automake, ca-certificates, git, and libtool are also included.

  • prefix: The top level install location. The default value is /usr/local/ucx.

  • repository: The location of the git repository that should be used to build UCX. If True, then use the default https://github.com/openucx/ucx.git repository. The default is empty, i.e., use the release package specified by version.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default value is empty.

  • url: The location of the tarball that should be used to build UCX. The default is empty, i.e., use the release package specified by version.

  • version: The version of UCX source to download. The default value is 1.9.0.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

  • xpmem: Flag to control whether XPMEM is used by the build. If True, adds --with-xpmem to the list of configure options. If a string, uses the value of the string as the XPMEM path, e.g., --with-xpmem=/path/to/xpmem. If False, adds --without-xpmem to the list of configure options. The default is an empty string, i.e., include neither --with-xpmem not --without-xpmem and let configure try to automatically detect whether XPMEM is present or not.

Examples

ucx(cuda=False, prefix='/opt/ucx/1.4.0', version='1.4.0')
ucx(cuda='/usr/local/cuda', gdrcopy='/usr/local/gdrcopy',
    knem='/usr/local/knem', xpmem='/usr/local/xpmem')
ucx(repository='https://github.com/openucx/ucx.git')

runtime

ucx.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

u = ucx(...)
Stage0 += u
Stage1 += u.runtime()

xpmem

xpmem(self, **kwargs)

The xpmem building block builds and installs the user space library from the XPMEM component.

Parameters

  • annotate: Boolean flag to specify whether to include annotations (labels). The default is False.

  • branch: The branch of XPMEM to use. The default value is master.

  • configure_opts: List of options to pass to configure. The default values are --disable-kernel-module.

  • disable_FEATURE: Flags to control disabling features when configuring. For instance, disable_foo=True maps to --disable-foo. Underscores in the parameter name are converted to dashes.

  • enable_FEATURE[=ARG]: Flags to control enabling features when configuring. For instance, enable_foo=True maps to --enable-foo and enable_foo='yes' maps to --enable-foo=yes. Underscores in the parameter name are converted to dashes.

  • environment: Boolean flag to specify whether the environment (CPATH, LD_LIBRARY_PATH and LIBRARY_PATH) should be modified to include XPMEM. The default is True.

  • ldconfig: Boolean flag to specify whether the XPMEM library directory should be added dynamic linker cache. If False, then LD_LIBRARY_PATH is modified to include the XPMEM library directory. The default value is False.

  • ospackages: List of OS packages to install prior to configuring and building. The default value are autoconf, automake, ca-certificates, file, git, libtool, and make`.

  • prefix: The top level install location. The default value is /usr/local/xpmem.

  • toolchain: The toolchain object. This should be used if non-default compilers or other toolchain options are needed. The default is empty.

  • with_PACKAGE[=ARG]: Flags to control optional packages when configuring. For instance, with_foo=True maps to --with-foo and with_foo='/usr/local/foo' maps to --with-foo=/usr/local/foo. Underscores in the parameter name are converted to dashes.

  • without_PACKAGE: Flags to control optional packages when configuring. For instance without_foo=True maps to --without-foo. Underscores in the parameter name are converted to dashes.

Examples

xpmem(prefix='/opt/xpmem', branch='master')

runtime

xpmem.runtime(self, _from=u'0')

Generate the set of instructions to install the runtime specific components from a build in a previous stage.

Examples

x = xpmem(...)
Stage0 += x
Stage1 += x.runtime()

yum

yum(self, **kwargs)

The yum building block specifies the set of operating system packages to install. This building block should only be used on images that use the Red Hat package manager (e.g., CentOS).

In most cases, the packages building block should be used instead of yum.

Parameters

  • download: Boolean flag to specify whether to download the rpm packages instead of installing them. The default is False.

  • download_directory: The deb package download location. This parameter is ignored if download is False. The default value is /var/tmp/yum_download.

  • epel: - Boolean flag to specify whether to enable the Extra Packages for Enterprise Linux (EPEL) repository. The default is False.

  • extract: Location where the downloaded packages should be extracted. Note, this extracts and does not install the packages, i.e., the package manager is bypassed. After the downloaded packages are extracted they are deleted. This parameter is ignored if download is False. If empty, then the downloaded packages are not extracted. The default value is an empty string.

  • force_add_repo: Boolean flag to specify whether adding a repository should be considered successful no matter the actual result. The default value is False.

  • keys: A list of GPG keys to import. The default is an empty list.

  • ospackages: A list of packages to install. The default is an empty list.

  • powertools: Boolean flag to specify whether to enable the PowerTools repository. The default is False. This parameter is only recognized if the distribution version is 8.x.

  • release_stream: Boolean flag to specify whether to enable the CentOS release stream repository. The default is False. This parameter is only recognized if the distribution version is 8.x.

  • repositories: A list of yum repositories to add. The default is an empty list.

  • scl: - Boolean flag to specify whether to enable the Software Collections (SCL) repository. The default is False. This parameter is only recognized if the distribution version is 7.x.

  • yum4: Boolean flag to specify whether yum4 should be used instead of yum. The default is False. This parameter is only recognized if the distribution version is 7.x.

Examples

yum(ospackages=['make', 'wget'])