Dear Loris,This is indeed to a large extent the same approach as EESSI. Our filesystem layer has de-duplication so there is no need for us to make the distinction in 3 and the resulting discussion (there's no cost to multiple installations of the same thing). You should take a look at the EESSI bot <https://www.eessi.io/docs/bot/> as it can handle the workflow you describe.
Alan On 03-Nov-23 11:08 AM, Loris Bennett wrote:
Hi,
We need to manage an heterogeneous cluster and I am looking at how to
organise building the software in this context. My current idea is the
following:
1. Software is created within the following directory tree
/nfs/easybuild/arch/x68_64/amd
.../amd/zen3
/nfs/easybuild/arch/x68_64/amd
.../intel
.../intel/cascadelake
.../intel/skylake_avx512
.../generic
The paths below 'arch' correspond to those produced by
https://github.com/EESSI/software-layer/blob/2023.06/eessi_software_subdir.py
2. When each node is booted, a systemd service creates the following
directory
/sw/sc/easybuild
and in that the following links
generic -> /nfs/easybuild/arch/x86_64/generic
optimized -> /nfs/easybuild/arch/x86_64/intel/skylake_avx512
3. Binary only software is installed via an administration node by
running EasyBuild with
--prefix=/sw/sc/generic
Software optimized for a specific architecture is built by sending a
job via Slurm to a node with the architecture needed and using
--prefix=/sw/sc/optimized
Does this sound plausible? Have I overlooked anything?
One thing I am not quite clear on is the following:
What would be the best way to determine whether an EC specifies a binary
EasyBlock or whether the toolchain is 'SYSTEM' and thus the software
should be built in 'generic'? Or would it be better to say disk space
is cheap and just install binary and 'SYSTEM' packages for each
architecture in order to simplify things?
Any help/comments much appreciated.
Cheers,
Loris
smime.p7s
Description: S/MIME Cryptographic Signature

