Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
6698b62
EasyBuild 5.3.0 for 26.03.
klust Jun 17, 2026
80d6d2c
Initial setup of software versions for 26.03.
klust Jun 17, 2026
5c6705f
Updated SYSTEM packages in the versions file for 26.03.
klust Jun 17, 2026
ca73273
First setup of EasyStack files for 26.03.
klust Jun 17, 2026
0dda43c
Switching to EasyBuild 5.3.1 for 26.03.
klust Jul 3, 2026
3d2298d
buildtools 26.03 bootstrap version tested on 15SP6.
klust Jul 3, 2026
0823f5b
buildtools-python system version for 26.03.
klust Jul 3, 2026
4dbae6d
Correction to the 25.09 EasyConfig and syslibs for 26.03.
klust Jul 3, 2026
9575f27
Doc correction in buildtools-python 15.09, and Cray Python version fo…
klust Jul 3, 2026
7fbe591
systools for 26.03.
klust Jul 3, 2026
3efd4e1
Lzip-tools for 26.03.
klust Jul 3, 2026
c378a68
Git 2.54.0 for 26.03.
klust Jul 3, 2026
beccc84
Eigen 5.0.1 for 26.03.
klust Jul 3, 2026
f04955b
Further improvement to the Eigen EasyConfig to more align with other …
klust Jul 3, 2026
719a243
Small improvement to the EasyConfig to make it compatible with the lo…
klust Jul 3, 2026
b2a45a4
GNU parallel updated for 26.03.
klust Jul 3, 2026
32d067c
Correcting a typo.
klust Jul 3, 2026
bb317d2
Suggested versions for 216.03.
klust Jul 7, 2026
6fbb526
Initial EasyStack files for 26.03.
klust Jul 7, 2026
a823441
Initial EasyConfigs for CPE software packages in 26.03.
klust Jul 8, 2026
b65500e
Components update in the X11 bundle, untested.
klust Jul 8, 2026
870d4b2
Small version change in SQLite to align with the other EasyConfigs in…
klust Jul 10, 2026
fa132fd
nano-9.0.eb corrected.
klust Jul 10, 2026
80b2b5e
Buildtools for 26.03 fully finished.
klust Jul 10, 2026
40fa162
A script to suggest the correct name for an EB file to make it quicke…
klust Jul 10, 2026
5c724e3
Corrections to the CPEpackages file for 26.03.
klust Jul 15, 2026
ee1c7e9
Fix to a number of Python scripts to remove a warning.
klust Jul 15, 2026
66d9499
Corrections to EasyBuild as we cannot install pygments as it is alrea…
klust Jul 15, 2026
3d45955
Correcting an error in an eaysblock.
klust Jul 15, 2026
b214d7e
Prepare_LUMI_stack script adapted for cray-python 3.12.12.
klust Jul 15, 2026
c58f447
Bootstrap buildtools 26.03 version modified to work in the container …
klust Jul 15, 2026
ca60bdb
Update of buildtools-python after testing in the container.
klust Jul 15, 2026
d51a01a
Minor edits of an EasyStack file.
klust Jul 15, 2026
53689ee
Correcting the names of some EasyConfigs in the EasyStack files.
klust Jul 15, 2026
21748de
ROCm and amd modules for use in 25.09.
klust Jul 16, 2026
c53f43c
Adding rocm and amd modules to EasyStack files.
klust Jul 16, 2026
52c0541
Correcting some package versions.
klust Jul 16, 2026
9b28cbc
Many improvements to the prepare_LuMI_stack script to make it more ro…
klust Jul 16, 2026
b65e38b
Correcting checksums and download locations.
klust Jul 16, 2026
4814b2b
First batch of corrections for 26.03 after building.
klust Jul 17, 2026
9a9d4d8
Finalizing block 1 packages for now.
klust Jul 17, 2026
2c99c48
Block 2 corrections.
klust Jul 17, 2026
6142f4e
Block 3 and 4 updates
klust Jul 17, 2026
61988df
Making freetype an explicit dependency of graphite2.
klust Jul 17, 2026
2017ddd
Preparing jbigkit for inclusion in LibTIFF.
klust Jul 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
44 changes: 44 additions & 0 deletions CrayPE/CPEpackages_26.03.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Package,Version
CCE,21.0.0
MPICH,9.1.0
MPIxlate,1.0.9
DSMML,0.3.1
PMI,6.1.17
OpenSHMEMX,11.8.0
mrnet,5.1.6
ATOMS,1.1.6
PALS,1.2.12
ATP,3.15.7
CCDB,5.0.6
cray-dyninst,12.3.5
CTI,2.21.0
gdb4hpc,4.16.6
sanitizers4hpc,1.1.6
STAT,4.12.8
valgrind4hpc,2.13.6
perftools,26.03.0
PAPI,7.3.0.1
LibSci,26.03.0
LibSci_acc,26.03.0
FFTW,3.3.10.11
craype-dl-plugin-ftr,22.06.1.2
craype-dl-plugin-py3,24.03.1
craypkg-gen,1.3.37
craype,2.7.36
cpe-prgenv,8.7.0
cray-lmod,8.7.60
modules,3.2.11.8
HDF5,1.14.3.9
NetCDF,4.9.2.3
parallel-netcdf,1.12.3.21
iobuf,2.0.10
GCC,14
cray-python,3.12.12
cray-R,4.4.0
jemalloc,5.1.0.4
AOCC,5.0.0
ROCM,7.0.3
intel,2025.2.1
NVIDIA,25.9
craype-targets,1.18.0
EasyBuild,5.3.1
2 changes: 1 addition & 1 deletion easybuild/easyblocks/c/craypetoolchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def extra_options():
extra_vars = {
'PrgEnv': [None, 'PrgEnv module to load, e.g., cray to load PrgEnv-cray, or None for automatic determination', CUSTOM],
'PrgEnv_load': [True, 'Load the PrgEnv module (if True) or just set the corresponding environment variable (if False)', CUSTOM],
'PrgEnv_family': [None, 'Declare to be a member of the PrgEnv family (if \'PrgEnv\), of the cpeToolchain family (if \'cpeToolchain\') or manually unload all known PrgEnv and cpe* modules (if None, needed when LMOD is not used)', CUSTOM],
'PrgEnv_family': [None, 'Declare to be a member of the PrgEnv family (if \'PrgEnv\'), of the cpeToolchain family (if \'cpeToolchain\') or manually unload all known PrgEnv and cpe* modules (if None, needed when LMOD is not used)', CUSTOM],
'CPE_compiler': [None, 'Versionless compiler module to load, or None for automatic determination', CUSTOM],
'CPE_version': [None, 'Version of the CPE, if different from the version of the module', CUSTOM],
'CPE_load': [ 'first', 'First load the cpe module (if \'first\'), after the PrgEnv module (if \'after\'), load it at the end (if \'last\'), or do not load the cpe module (if None)', CUSTOM],
Expand Down
16 changes: 16 additions & 0 deletions easybuild/easyconfigs/a/amd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,19 @@ The EasyConfig is used to create a pkgconfig file and a module to mimic the
official HPE Cray `amd` compiler module.


### amd 6.4.4 for 25.09

- EasyConfig to set some environment variables needed by the compiler wrappers and
as such replacing a Cray one as one was missing for this ROCm version after the
January 2026 system update (as the default version of ROCm was 6.3.4 at that time
while 25.09 is made for ROCm 6.4).


### amd 7.0.3 for 26.03

- EasyConfig to set some environment variables needed by the compiler wrappers and
as such replacing a Cray one as one was missing for this ROCm version after the
January 2026 system update (as the default version of ROCm was 6.3.4 at that time
while 26.03 is made for ROCm 7.0).

- A direct port of the one for 6.4.4 for 25.09.
20 changes: 13 additions & 7 deletions easybuild/easyconfigs/a/amd/USER.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# amd user instructions

The `amd/5.6.1` module is provided by the LUMI User Support Team to enable users
The `amd/X.Y.Z` modules are provided by the LUMI User Support Team to enable users
who need a more recent version of ROCm that the official HPE Cray module. As
this is not a vendor-supplied module, it might not work as expected all the
time.
Expand All @@ -9,22 +9,28 @@ To use this module, use the following commands:

```
module load PrgEnv-amd
module load amd/5.6.1
module load amd/X.Y.Z
```

After loading these two modules, the Cray compiler wrapper (`cc`, `CC` and
`ftn`) will use `amdclang`, `amdclang++` and `amdflang` from ROCm 5.6.1 as the
`ftn`) will use `amdclang`, `amdclang++` and `amdflang` from ROCm X.Y.Z as the
backend compilers.

To compile HIP code, you can use `hipcc` or `CC` with the `-xhip` compilation
flag. Note that in the latter case, in order to have the HIP runtime library
automatically linked, you need to load the corresponding `rocm` module.

```
module load rocm/5.6.1
module load rocm/X.Y.Z
```

We do not provide a similar module for `rocm/5.4.6`. Instead, it is sufficient to
load the `rocm/5.4.6` module after loading the `PrgEnv-amd` module (or `cpeAMD` in
The 6.4.4 module is specifically meant to be used in 25.09 and the 7.0.3 one
in 26.03 and provide full compatibility with the `PrgEnv-amd` modules in those
stacks, as they really want to load an `amd` module and not just a `rocm` module.

For some `rocm` modules, there is no matching `amd` module. Those are meant to
be used as a replacement for the regular `rocm` module for a toolchains.
For those, it is sufficient to
load the `rocm/X.Y.Z` module after loading the `PrgEnv-amd` module (or `cpeAMD` in
the LUMI stacks). The necessary environment variables for the compiler wrappers
are already defined in the `rocm/5.4.6` module.
are already defined in the `rocm/X.Y.Z` module.
112 changes: 112 additions & 0 deletions easybuild/easyconfigs/a/amd/amd-7.0.3.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
easyblock = 'Bundle'

name = 'amd'
version = '7.0.3'

homepage = 'https://docs.lumi-supercomputer.eu/'

whatis = [
'Description: defines the system paths and environment variables needed to use the AMD ROCm compilers.'
]

description = f"""
The amd module defines the system paths and environment variables needed to use
the AMD ROCm compilers.

This module is not part of the official Cray Programming Environment. It's
provided by the LUMI user support team to allow the users to use the
rocm/{version} module with the Cray compiler wrappers as if it was the official
Cray amd compiler module for which we have no proper version of the
amd module.
"""

toolchain = SYSTEM

dependencies = [
('rocm', version),
]

import subprocess
local_rocm_root = subprocess.run(
f'module load rocm/{version} && echo $ROCM_PATH',
shell=True,
stdout=subprocess.PIPE
).stdout.decode('utf-8').strip()

local_amd_lmod = 'amd/7.0' # LMOD_DIR/COMPAT_VERSION from the amd module from Cray
local_ofi = 'ofi/1.0'

local_pkgconfig_content = """
Name: amdcompiler
Description: ROCm AMD compiler
Version: %(rocm_version)s
Requires.private: gcc-toolchain
Cflags: -Wno-unused-command-line-argument
Libs: -Wl,-rpath=%(rocm_root)s/llvm/lib -Wl,-rpath=/opt/cray/pe/gcc-libs

""" % {
'rocm_root' : local_rocm_root,
'rocm_version' : '%(version)s',
}

postinstallcmds = [
'mkdir -p %(installdir)s/pkgconfig',
'cd %(installdir)s/pkgconfig ; cat >amdcompiler-%(version)s.pc <<EOF\n' + local_pkgconfig_content.replace('$', '\$') + '\nEOF\n',
'cd %(installdir)s/pkgconfig ; ln -s amdcompiler-%(version)s.pc amdcompiler.pc',
]

modluafooter = """

family("compiler")
conflict("amd-mixed")

local rocm_root = "%(rocm_root)s"
-- local rocm_was_loaded = isloaded("rocm")

-- if rocm_was_loaded then
-- -- Unload rocm; we'll load it again at the end.
-- unload("rocm")
-- end

-- prepend_path("PATH", pathJoin(rocm_root, "bin")) -- Comes in via the ROCm module for this version
prepend_path("LIBRARY_PATH", pathJoin(rocm_root, "llvm/lib"))
prepend_path("LD_LIBRARY_PATH", pathJoin(rocm_root, "llvm/lib"))
prepend_path("C_INCLUDE_PATH", pathJoin(rocm_root, "llvm/include"))
prepend_path("CPLUS_INCLUDE_PATH", pathJoin(rocm_root, "llvm/include"))
prepend_path("CMAKE_PREFIX_PATH", rocm_root)
-- prepend_path("CMAKE_PREFIX_PATH", pathJoin(rocm_root, "hip")) -- Already done in the rocm module

-- Environment variables for Cray compilers used by CrayPE
-- setenv("CRAY_AMD_COMPILER_PREFIX", rocm_root) -- Comes in via the rocm module
-- setenv("CRAY_AMD_COMPILER_VERSION", "%(rocm_version)s") -- Comes in via the rocm module

-- LMOD stuff
setenv("CRAY_LMOD_COMPILER", "%(amd_lmod)s")
-- AMD_MIX_MOD_PATH from the amd module
prepend_path("MODULEPATH", "/opt/cray/pe/lmod/modulefiles/mix_compilers")
-- AMD_MOD_LIB_PATH from the amd module
prepend_path("MODULEPATH", pathJoin("/opt/cray/pe/lmod/modulefiles/compiler", "%(amd_lmod)s"))
-- This is the tricky one that in the real amd module is set only if certain conditions are met
prepend_path("MODULEPATH", pathJoin("/opt/cray/pe/lmod/modulefiles/comnet", "%(amd_lmod)s", "%(ofi)s"))

-- Code straight from the amd module from Cray
if os.getenv("LMOD_FAMILY_PRGENV") ~= nil then
if not isloaded("PrgEnv-amd") then
load("PrgEnv-amd")
end
end

-- if rocm_was_loaded then
-- load("rocm/%(rocm_version)s")
-- end

""" % {
'rocm_root' : local_rocm_root,
'rocm_version' : '%(version)s',
'install_root' : '%(installdir)s',
'amd_lmod' : local_amd_lmod,
'ofi' : local_ofi,
}

moduleclass = 'compiler'

79 changes: 79 additions & 0 deletions easybuild/easyconfigs/b/Blosc/Blosc-1.21.6-cpeAMD-26.03.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
easyblock = 'CMakeMake'

local_Blosc_version = '1.21.6' # https://github.com/Blosc/c-blosc/releases

name = 'Blosc'
version = local_Blosc_version

homepage = 'https://www.blosc.org/'

whatis = [
"Description: Blosc is an extremely fast, multi-threaded, meta-compressor library"
]

description = """
Blosc is a high performance compressor optimized for binary data. It has been
designed to transmit data to the processor cache faster than the traditional,
non-compressed, direct memory fetch approach via a memcpy() OS call. Blosc is
the first compressor (that I'm aware of) that is meant not only to reduce the
size of large datasets on-disk or in-memory, but also to accelerate
memory-bound computations (which is typical in vector-vector operations).

It uses the blocking technique (as described in this article) to reduce activity
on the memory bus as much as possible. In short, the blocking technique works
by dividing datasets in blocks that are small enough to fit in L1 cache of
modern processor and perform compression/decompression there. It also
leverages SIMD (SSE2) and multi-threading capabilities present in nowadays
multi-core processors so as to accelerate the compression/decompression
process to a maximum.
"""

software_license_urls = [
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSE.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/BITSHUFFLE.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/FASTLZ.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/LZ4.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/SNAPPY.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/STDINT.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/ZLIB-NG.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/ZLIB.txt',
]

toolchain = {'name': 'cpeAMD', 'version': '26.03'}
toolchain_opts = {'pic': True}

#source_urls = ['https://github.com/Blosc/c-blosc/archive/']
#sources = ['v%(version)s.tar.gz']
sources = [ { 'filename': SOURCELOWER_TAR_GZ,
'download_filename': 'v%(version)s.tar.gz',
'source_urls': ['https://github.com/Blosc/c-blosc/archive/'] } ]
checksums = ['9fcd60301aae28f97f1301b735f966cc19e7c49b6b4321b839b4579a0c156f38']

build_deps = [
('buildtools', '%(toolchain_version)s', '', True),
]

# Doesn't need MPI or BLAS, and module unload never fails so this is safe.
pre_configure_opts = 'module unload cray-libsci cray-mpich xpmem && '
pre_build_opts = pre_configure_opts

# Make the directory structure uniform with ConfigureMake software.
configure_opts = '-DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5'

post_install_cmds = [
'mkdir -p %(installdir)s/share/licenses/%(name)s',
'cd ../c-blosc-%(version)s && cp ANNOUNCE.rst FAQ.md LICENSE.txt LICENSES/*.txt README.md RELEASE_NOTES.rst THANKS.rst %(installdir)s/share/licenses/%(name)s',
]

sanity_check_paths = {
'files': ['include/blosc-export.h', 'include/blosc.h', 'lib/libblosc.a',
'lib/libblosc.%s' % SHLIB_EXT,
'share/licenses/%(name)s/LICENSE.txt'],
'dirs': [],
}

sanity_check_cmds = [
'pkg-config --libs blosc',
]

env_mod_category = 'lib'
79 changes: 79 additions & 0 deletions easybuild/easyconfigs/b/Blosc/Blosc-1.21.6-cpeAOCC-26.03.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
easyblock = 'CMakeMake'

local_Blosc_version = '1.21.6' # https://github.com/Blosc/c-blosc/releases

name = 'Blosc'
version = local_Blosc_version

homepage = 'https://www.blosc.org/'

whatis = [
"Description: Blosc is an extremely fast, multi-threaded, meta-compressor library"
]

description = """
Blosc is a high performance compressor optimized for binary data. It has been
designed to transmit data to the processor cache faster than the traditional,
non-compressed, direct memory fetch approach via a memcpy() OS call. Blosc is
the first compressor (that I'm aware of) that is meant not only to reduce the
size of large datasets on-disk or in-memory, but also to accelerate
memory-bound computations (which is typical in vector-vector operations).

It uses the blocking technique (as described in this article) to reduce activity
on the memory bus as much as possible. In short, the blocking technique works
by dividing datasets in blocks that are small enough to fit in L1 cache of
modern processor and perform compression/decompression there. It also
leverages SIMD (SSE2) and multi-threading capabilities present in nowadays
multi-core processors so as to accelerate the compression/decompression
process to a maximum.
"""

software_license_urls = [
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSE.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/BITSHUFFLE.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/FASTLZ.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/LZ4.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/SNAPPY.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/STDINT.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/ZLIB-NG.txt',
'https://raw.githubusercontent.com/Blosc/c-blosc/v%(version)s/LICENSES/ZLIB.txt',
]

toolchain = {'name': 'cpeAOCC', 'version': '26.03'}
toolchain_opts = {'pic': True}

#source_urls = ['https://github.com/Blosc/c-blosc/archive/']
#sources = ['v%(version)s.tar.gz']
sources = [ { 'filename': SOURCELOWER_TAR_GZ,
'download_filename': 'v%(version)s.tar.gz',
'source_urls': ['https://github.com/Blosc/c-blosc/archive/'] } ]
checksums = ['9fcd60301aae28f97f1301b735f966cc19e7c49b6b4321b839b4579a0c156f38']

build_deps = [
('buildtools', '%(toolchain_version)s', '', True),
]

# Doesn't need MPI, ROCm or BLAS, and module unload never fails so this is safe.
pre_configure_opts = 'module unload cray-libsci cray-mpich rocm xpmem && '
pre_build_opts = pre_configure_opts

# Make the directory structure uniform with ConfigureMake software.
configure_opts = '-DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5'

post_install_cmds = [
'mkdir -p %(installdir)s/share/licenses/%(name)s',
'cd ../c-blosc-%(version)s && cp ANNOUNCE.rst FAQ.md LICENSE.txt LICENSES/*.txt README.md RELEASE_NOTES.rst THANKS.rst %(installdir)s/share/licenses/%(name)s',
]

sanity_check_paths = {
'files': ['include/blosc-export.h', 'include/blosc.h', 'lib/libblosc.a',
'lib/libblosc.%s' % SHLIB_EXT,
'share/licenses/%(name)s/LICENSE.txt'],
'dirs': [],
}

sanity_check_cmds = [
'pkg-config --libs blosc',
]

env_mod_category = 'lib'
Loading