7 Development Components
At this stage, you have:
- successfully installed and configured the master host (chapter 3),
- assembled and customised the compute image (chapter 4),
- and provisioned several compute hosts from baremetal (chapter 5).
- Additionally, you have also configured your resource manager to schedule jobs on your virtual cluster (chapter 6).
You essentially have a functional virtual computer cluster!
All that's left to do for the real HPC experience is to add additional packages, compilers, tools and libraries to support a flexible HPC development environment.
The following subsections will guide you through the installation procedures for installing some popular tools falling under this category of additional software.
Note
Anticipated time to complete this chapter: TBC from user feedback.
7.1 OpenHPC Development Components
To aid in general development efforts, OpenHPC provides recent versions of several development tools packaged for/with the OpenHPC environment (appended with -ohpc
):
-
autotools
- GNU Autotools manages and packages source code to allow users to compile and install software. -
EasyBuild
- EasyBuild is a software build and installation framework. hwloc
- Portable Hardware Locality provides a portable abstraction of hierarchical topology of modern architectures.spack
- Spack is a package manager for supercomputers, Linux, and macOS.valgrind
- Valgrind is an instrumentation framework for building dynamic analysis tools - popular among them is memory management and threading debugging.
Taking things further
To allow for further exploration of the OpenHPC virtual cluster environment, we will install these development tools. Even though this virtual lab will reach a conclusion, you are encouraged to take your journey deeper, and these tools should provide a good starting platform whether you want to explore System Administration or scientific computing within an HPC environment.
OUTPUT:
# Installed:
# autoconf-ohpc-2.69-3.6.ohpc.2.0.x86_64 automake-ohpc-1.16.1-1.8.ohpc.2.0.x86_64
# libtool-ohpc-2.4.6-1.5.ohpc.2.0.x86_64 ohpc-autotools-2.6.1-5.1.ohpc.2.6.1.x86_64
OUTPUT:
# Installed:
# EasyBuild-ohpc-4.6.2-6.1.ohpc.2.6.x86_64 python3-pip-9.0.3-22.el8.rocky.0.noarch
# python3-setuptools-39.2.0-6.el8.noarch python36-3.6.8-38.module+el8.5.0+671+195e4563.x86_64
OUTPUT:
# Installed:
# cairo-1.15.12-6.el8.x86_64 dejavu-fonts-common-2.35-7.el8.noarch
# dejavu-sans-fonts-2.35-7.el8.noarch fontconfig-2.13.1-4.el8.x86_64
# fontpackages-filesystem-1.44-22.el8.noarch hwloc-ohpc-2.7.0-3.9.ohpc.2.6.x86_64
# libX11-1.6.8-5.el8.x86_64 libX11-common-1.6.8-5.el8.noarch
# libXau-1.0.9-3.el8.x86_64 libXext-1.3.4-1.el8.x86_64
# libXrender-0.9.10-7.el8.x86_64 libxcb-1.13.1-1.el8.x86_64
# pixman-0.38.4-2.el8.x86_64
OUTPUT:
# Upgraded:
# libstdc++-8.5.0-16.el8_7.x86_64 libstdc++-devel-8.5.0-16.el8_7.x86_64
# Installed:
# gcc-c++-8.5.0-16.el8_7.x86_64
# libserf-1.3.9-9.module+el8.7.0+1065+42200b2e.x86_64
# mercurial-4.8.2-1.module+el8.3.0+219+18f2b388.x86_64
# python2-2.7.18-11.module+el8.7.0+1062+663ba31c.rocky.0.2.x86_64
# python2-libs-2.7.18-11.module+el8.7.0+1062+663ba31c.rocky.0.2.x86_64
# python2-pip-9.0.3-19.module+el8.6.0+793+57002515.noarch
# python2-pip-wheel-9.0.3-19.module+el8.6.0+793+57002515.noarch
# python2-setuptools-39.0.1-13.module+el8.4.0+403+9ae17a31.noarch
# python2-setuptools-wheel-39.0.1-13.module+el8.4.0+403+9ae17a31.noarch
# python3-mock-2.0.0-11.el8.noarch
# spack-ohpc-0.18.1-3.5.ohpc.2.6.x86_64
# subversion-1.10.2-5.module+el8.7.0+1065+42200b2e.x86_64
# subversion-libs-1.10.2-5.module+el8.7.0+1065+42200b2e.x86_64
# utf8proc-2.6.1-3.module+el8.7.0+1065+42200b2e.x86_64
# zstd-1.4.4-1.el8.x86_64
7.2 Compilers
OpenHPC packages the GNU compiler toolchain integrated with the underlying Lmod modules system in a hierarchical fashion.
Click here to learn more about Lmod.
Lmod is a Lua based module system that handles MODULEPATH
hierarchies and provides the same function as the module
command, but with a slightly different (but in many ways overlapping) syntax.
7.3 MPI Stacks
For MPI development and runtime support, OpenHPC provides pre-packaged builds for a variety of MPI families and transport layers. These are compatible with both ethernet and high-speed fabrics.
We will install Open MPI v4.0 and MPICH (High-Performance Portable MPI), below:
OUTPUT:
# Installed:
# libfabric-ohpc-1.13.0-3.2.ohpc.2.4.x86_64 libpsm2-11.2.206-1.el8.x86_64
# librdmacm-41.0-1.el8.x86_64 mpich-ofi-gnu9-ohpc-3.4.2-3.1.ohpc.2.4.x86_64
# openmpi4-gnu9-ohpc-4.1.1-10.1.ohpc.2.4.x86_64 prun-ohpc-2.2-2.1.ohpc.2.4.noarch
# ucx-ib-ohpc-1.11.2-3.3.ohpc.2.6.x86_64 ucx-ohpc-1.11.2-3.3.ohpc.2.6.x86_64
7.4 Performance Tools
OpenHPC provides a variety of open-source tools to aid in application performance analysis, including:
- perf - a performance analysing tool in Linux capable of statistical profiling of the entire system.
- TAU - Tuning and Analysis Utilities is a toolkit for the performance analysis of parallel programs by profiling and tracing.
- Scalasca - a software tool that supports the performance optimisation of parallel programs.
- Score-P - a performance measurement infrastructure for profiling, event tracing and online analysis of HPC applications.
- Dimemas - a performance analysis tool for message-passing programs.
7.5 Set Up Default Environment
System users often find it convenient to have a default development environment in place so that compilation can be performed directly for parallel programs requiring MPI. This setup can be conveniently enabled via modules.
The OpenHPC modules environment is pre-configured to load an ohpc
module on login.
The following package install provides a default environment that enables autotools
, the GNU compiler toolchain, and the OpenMPI stack.
Click here for a recap of this chapter.
In this chapter you successfully installed software to support a flexible development environment:
- You installed OpenHPC Development Components, including GNU Autotools, EasyBuild, Spack, and Valgrind.
- You installed the GNU compiler toolchain and the Lmod modules system.
- You installed some MPI development families: Open MPI v4.0 and MPICH.
- You installed some performance tools to aid performance analysis, including
perf
. - You set up the default development environment that enables
autotools
, GNU compiler toolchain, and the OpenMPI stack.
Congratulations
You have reached the end of Chapter 7
In the next chapter you will run your first test job on your virtual cluster.