Bright Cluster Manager provides a good selection of ready-to-use libraries and tools that are commonly used in a high performance computing environment. It may happen that you need a tool or library for which Bright does not provide a package. Spack is a package manager that can be of use in such situations. Spack provides access to thousands of packages that can be built on your cluster on the fly from Spack package file.
Here is how you install the Spack tool itself on a head node of a RHEL/CentOS based Bright cluster:
# yum install git
# git clone https://github.com/spack/spack /cm/shared/apps/spack
Then create a file /etc/profile.d/z-spack.sh
on the head node, as well as in all relevant software images (e.g. /cm/images/default-image/etc/profile.d/z-spack.sh
), with the following contents:
export SPACK_ROOT=/cm/shared/apps/spack
. ${SPACK_ROOT}/share/spack/setup-env.sh
For csh/tcsh support, also create /etc/profile.d/z-spack.csh
with the following contents:
set SPACK_ROOT=/cm/shared/apps/spack
source $SPACK_ROOT/share/spack/setup-env.csh
After logging out and logging back in, you should be able to issue commands such as:
# spack list
# spack install mpich
# spack find
Spack integrates with environment modules and LMod. To use installed Spack packages, a user may use the standard module commands. Example:
[cmsupport@mdv-spack ~]$ module av
--------------------------- /cm/shared/apps/spack/share/spack/modules/linux-centos8-skylake_avx512 ---------------------------
autoconf-2.69-gcc-8.3.1-cmmtsf4 libpciaccess-0.16-gcc-8.3.1-t3yxjbl perl-5.30.3-gcc-8.3.1-5ug3nux
automake-1.16.2-gcc-8.3.1-z4v457g libsigsegv-2.12-gcc-8.3.1-3bmwjvv pkgconf-1.7.3-gcc-8.3.1-anfy6rk
berkeley-db-18.1.40-gcc-8.3.1-px3gfxk libtool-2.4.6-gcc-8.3.1-xxp3u7a readline-8.0-gcc-8.3.1-2pmmp6d
findutils-4.6.0-gcc-8.3.1-sfl35co libxml2-2.9.10-gcc-8.3.1-rhrpcik texinfo-6.5-gcc-8.3.1-c7gwzuk
gdbm-1.18.1-gcc-8.3.1-xmpiec5 m4-1.4.18-gcc-8.3.1-soqewat util-macros-1.19.1-gcc-8.3.1-yllmpac
hwloc-2.2.0-gcc-8.3.1-bx7lrwp mpich-3.3.2-gcc-8.3.1-uc62klj xz-5.2.5-gcc-8.3.1-vsch6yy
libiconv-1.16-gcc-8.3.1-xztbayv ncurses-6.2-gcc-8.3.1-hwvxfz3 zlib-1.2.11-gcc-8.3.1-gqxf26r
--------------------------------------------------- /cm/local/modulefiles ----------------------------------------------------
cluster-tools/master cmd freeipmi/1.6.6 luajit null shared
cm-image/master cmjob gcc/10.2.0 mariadb-libs openldap slurm/slurm/19.05.7
cm-scale/cm-scale.module cmsh ipmitool/1.8.18 module-git python3
cm-setup/master dot lua/5.4.0 module-info python37
--------------------------------------------------- /cm/shared/modulefiles ---------------------------------------------------
blacs/openmpi/gcc/64/1.1patch03 gdb/9.2 intel-tbb-oss/intel64/2020.3 netperf/2.7.0
blas/gcc/64/3.8.0 globalarrays/openmpi/gcc/64/5.7 iozone/3_490 openblas/dynamic/(default)
bonnie++/1.98 hdf5/1.10.1 lapack/gcc/64/3.9.0 openblas/dynamic/0.3.7
cm-pmix3/3.1.4 hdf5_18/1.8.21 mpich/ge/gcc/64/3.3.2 openmpi/gcc/64/1.10.7
default-environment hwloc/1.11.11 mvapich2/gcc/64/2.3.4 ucx/1.8.1
fftw3/openmpi/gcc/64/3.3.8 intel-tbb-oss/ia32/2020.3 netcdf/gcc/64/gcc/64/4.7.3
[cmsupport@mdv-spack ~]$ module load `spack module tcl find mpich`
[cmsupport@mdv-spack ~]$ which mpirun
/cm/shared/apps/spack/opt/spack/linux-centos8-skylake_avx512/gcc-8.3.1/mpich-3.3.2-uc62kljhfi7b342iehig3cchbctxeqxx/bin/mpirun
[cmsupport@mdv-spack ~]$
In the setup described above, administrators are responsible for installing Spack packages, which can then be used by end-users. It is also possible for users to install Spack packages outside of the /cm/shared tree. For more information about Spack, please consult the Spack documentation.