Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
SUSE Linux Enterprise for High-Performance Computing 15 SP4

Release Notes

Abstract

SUSE Linux Enterprise for High-Performance Computing is a highly-scalable, high-performance open-source operating system designed to utilize the power of parallel computing. This document provides an overview of high-level general features, capabilities, and limitations of SUSE Linux Enterprise for High-Performance Computing 15 SP4 and important product updates.

These release notes are updated periodically. The latest version of these release notes is always available at https://www.suse.com/releasenotes. General documentation can be found at https://documentation.suse.com/sle-hpc/15-SP4.

Publication Date: 2026-07-09, Version: 15.400000000.20260709

1 About the release notes

These Release Notes are identical across all architectures, and the most recent version is always available online at https://www.suse.com/releasenotes.

Entries are only listed once but they can be referenced in several places if they are important and belong to more than one section.

Release notes usually only list changes that happened between two subsequent releases. Certain important entries from the release notes of previous product versions are repeated. To make these entries easier to identify, they contain a note to that effect.

However, repeated entries are provided as a courtesy only. Therefore, if you are skipping one or more service packs, check the release notes of the skipped service packs as well. If you are only reading the release notes of the current release, you could miss important changes.

2 SUSE Linux Enterprise for High-Performance Computing

SUSE Linux Enterprise for High-Performance Computing is a highly scalable, high performance open-source operating system designed to utilize the power of parallel computing for modeling, simulation and advanced analytics workloads.

SUSE Linux Enterprise for High-Performance Computing 15 SP4 provides tools and libraries related to High Performance Computing. This includes:

  • Workload manager

  • Remote and parallel shells

  • Performance monitoring and measuring tools

  • Serial console monitoring tool

  • Cluster power management tool

  • A tool for discovering the machine hardware topology

  • System monitoring

  • A tool for monitoring memory errors

  • A tool for determining the CPU model and its capabilities (x86-64 only)

  • User-extensible heap manager capable of distinguishing between different kinds of memory (x86-64 only)

  • Serial and parallel computational libraries providing the common standards BLAS, LAPACK, …​

  • Various MPI implementations

  • Serial and parallel libraries for the HDF5 file format

2.1 Hardware Platform Support

SUSE Linux Enterprise for High-Performance Computing 15 SP4 is available for the Intel 64/AMD64 (x86-64) and AArch64 platforms.

2.2 Important Sections of This Document

If you are upgrading from a previous SUSE Linux Enterprise for High-Performance Computing release, you should review at least the following sections:

2.3 Support and life cycle

SUSE Linux Enterprise for High-Performance Computing is backed by award-winning support from SUSE, an established technology leader with a proven history of delivering enterprise-quality support services.

SUSE Linux Enterprise for High-Performance Computing 15 has a 13-year life cycle, with 10 years of General Support and 3 years of Extended Support. The current version (SP4) will be fully maintained and supported until 6 months after the release of SUSE Linux Enterprise for High-Performance Computing 15 SP5.

Any release package is fully maintained and supported until the availability of the next release.

Extended Service Pack Overlay Support (ESPOS) and Long Term Service Pack Support (LTSS) are also available for this product. If you need additional time to design, validate and test your upgrade plans, Long Term Service Pack Support (LTSS) can extend the support you get by an additional 12 to 36 months in 12-month increments, providing a total of 3 to 5 years of support on any given Service Pack.

For more information, see:

2.4 Support statement for SUSE Linux Enterprise for High-Performance Computing

To receive support, you need an appropriate subscription with SUSE. For more information, see https://www.suse.com/support/programs/subscriptions/?id=SUSE_Linux_Enterprise_Server.

The following definitions apply:

L1

Problem determination, which means technical support designed to provide compatibility information, usage support, ongoing maintenance, information gathering and basic troubleshooting using available documentation.

L2

Problem isolation, which means technical support designed to analyze data, reproduce customer problems, isolate problem area and provide a resolution for problems not resolved by Level 1 or prepare for Level 3.

L3

Problem resolution, which means technical support designed to resolve problems by engaging engineering to resolve product defects which have been identified by Level 2 Support.

For contracted customers and partners, SUSE Linux Enterprise for High-Performance Computing is delivered with L3 support for all packages, except for the following:

SUSE will only support the usage of original packages. That is, packages that are unchanged and not recompiled.

2.4.1 Software requiring specific contracts

Certain software delivered as part of SUSE Linux Enterprise for High-Performance Computing may require an external contract. Check the support status of individual packages using the RPM metadata that can be viewed with rpm, zypper, or YaST.

2.4.2 Software under GNU AGPL

SUSE Linux Enterprise for High-Performance Computing 15 SP4 (and the SUSE Linux Enterprise modules) includes the following software that is shipped only under a GNU AGPL software license:

  • Ghostscript (including subpackages)

SUSE Linux Enterprise for High-Performance Computing 15 SP4 (and the SUSE Linux Enterprise modules) includes the following software that is shipped under multiple licenses that include a GNU AGPL software license:

  • MySpell dictionaries and LightProof

  • ArgyllCMS

2.5 Documentation and other information

2.5.1 Available on the product media

  • Read the READMEs on the media.

  • Get the detailed change log information about a particular package from the RPM (where FILENAME.rpm is the name of the RPM):

    rpm --changelog -qp FILENAME.rpm
  • Check the ChangeLog file in the top level of the installation medium for a chronological log of all changes made to the updated packages.

  • Find more information in the docu directory of the installation medium of SUSE Linux Enterprise for High-Performance Computing 15 SP4. This directory includes PDF versions of the SUSE Linux Enterprise for High-Performance Computing 15 SP4 Installation Quick Start Guide.

2.5.2 Online documentation

4 Technology previews

Technology previews are packages, stacks, or features delivered by SUSE which are not supported. They may be functionally incomplete, unstable or in other ways not suitable for production use. They are included for your convenience and give you a chance to test new technologies within an enterprise environment.

Whether a technology preview becomes a fully supported technology later depends on customer and market feedback. Technology previews can be dropped at any time and SUSE does not commit to providing a supported version of such technologies in the future.

Give your SUSE representative feedback about technology previews, including your experience and use case.

4.1 64K page size kernel flavor has been added

SUSE Linux Enterprise for High-Performance Computing for Arm 12 SP2 and later kernels have used a page size of 4K. This offers the widest compatibility also for small systems with little RAM, allowing to use Transparent Huge Pages (THP) where large pages make sense.

As a technology preview, SUSE Linux Enterprise for High-Performance Computing for Arm 15 SP4 adds a kernel flavor 64kb, offering a page size of 64 KiB and physical/virtual address size of 52 bits. Same as the default kernel flavor, it does not use preemption.

Main purpose at this time is to allow for side-by-side benchmarking for High Performance Computing, Machine Learning and other Big Data use cases. Contact your SUSE representative if you notice performance gains for your specific workloads.

Important
Important: Swap needs to be re-initialized

After booting the 64K kernel, any swap partitions need to re-initialized to be usable. To do this, run the swapon command with the --fixpgsz parameter on the swap partition. Note that this process deletes data present in the swap partition (for example, suspend data). In this example, the swap partition is on /dev/sdc1:

swapon --fixpgsz /dev/sdc1
Important
Important: Btrfs file system uses page size as block size

It is currently not possible to use Btrfs file systems across page sizes. Block sizes below page size are not yet supported and block sizes above page size might never be supported.

During installation, change the default partitioning proposal and choose another file system, such as Ext4 or XFS, to allow rebooting from the default 4K page size kernel of the Installer into kernel-64kb and back.

See the Storage Guide for a discussion of supported file systems.

Warning
Warning: RAID 5 uses page size as stripe size

It is currently not yet possible to configure stripe size on volume creation. This will lead to sub-optimal performance if page size and block size differ.

Avoid RAID 5 volumes when benchmarking 64K vs. 4K page size kernels.

See the Storage Guide for more information on software RAID.

Note
Note: Cross-architecture compatibility considerations

The SUSE Linux Enterprise for High-Performance Computing 15 SP4 kernels on x86-64 use 4K page size.

The SUSE Linux Enterprise for High-Performance Computing for POWER 15 SP4 kernel uses 64K page size.

5 Modules

5.1 HPC module

The HPC module contains HPC specific packages. These include the workload manager Slurm, the node deployment tool clustduct, munge for user authentication, the remote shell mrsh, the parallel shell pdsh, as well as numerous HPC libraries and frameworks.

This module is available with the SUSE Linux Enterprise for High-Performance Computing only. It is selected by default during the installation. It can be added or removed using the YaST UI or the SUSEConnect CLI tool. Refer to the system administration guide for further details.

5.2 NVIDIA Compute Module

The NVIDIA Compute Module provides the NVIDIA CUDA repository for SUSE Linux Enterprise 15. Note that that any software within this repository is under a 3rd party EULA. For more information check https://docs.nvidia.com/cuda/eula/index.html.

This module is not selected for addition by default when installing SUSE Linux Enterprise for High-Performance Computing. It may be selected manually during installation from the Extension and Modules screen. You may also select it on an installed system using YaST. To do so, run from a shell as root yast registration, select: Select Extensions and search for NVIDIA Compute Module and press Next.

Important
Important

Do not attempt to add this module with the SUSEConnect CLI tool. This tool is not yet capable of handling 3rd party repositories.

Once you have selected this module you will be asked to confirm the 3rd party license and verify the repository signing key.

6 Changes affecting all architectures

Information in this section applies to all architectures supported by SUSE Linux Enterprise for High-Performance Computing 15 SP4.

6.1 SLE HPC no longer a separate product

As of 15 SP4, SUSE Linux Enterprise for High-Performance Computing is no longer a separate product. As a result:

  • the HPC Module can now be enabled in SUSE Linux Enterprise Server

  • when migrating from SUSE Linux Enterprise for High-Performance Computing 15 SP3, SP4, and SP5, only SUSE Linux Enterprise Server 15 SP6 will be available as migration target. The result of such a migration will be an installation of SUSE Linux Enterprise Server with all the previously enabled modules.

6.2 Enriched system visibility in the SUSE Customer Center (SCC)

SUSE is committed to helping provide better insights into the consumption of SUSE subscriptions regardless of where they are running or how they are managed; physical or virtual, on-prem or in the cloud, connected to SCC or Repository Mirroring Tool (RMT), or managed by SUSE Manager. To help you identify or filter out systems in SCC that are no longer running or decommissioned, SUSEConnect now features a daily “ping”, which will update system information automatically.

For more details see the documentation at https://documentation.suse.com/subscription/suseconnect/single-html/SLE-suseconnect-visibility/.

6.3 Automatically opened ports

Installing the following packages automatically opens the following ports:

  • dolly - TCP ports 9997 and 9998

  • slurm - TCP ports 6817, 6818, and 6819

Important
Important

These release notes only document changes in SUSE Linux Enterprise for High-Performance Computing compared to the immediate previous service pack of SUSE Linux Enterprise for High-Performance Computing. The full changes and fixes can be found on the respective web site of the packages.

6.4 dolly

dolly has been updated to version 0.63.6. It includes some fixes for hostname resolution, a better documentation and now provides a default configuration for firewall.

6.5 memkind

memkind has been updated to version 1.12.0. The full list of changes is available at http://memkind.github.io/memkind/.

6.6 openblas

openblas has been updated to version 0.3.17. It contains performance regression fixes and optimization. For more information see https://github.com/xianyi/OpenBLAS/releases/tag/v0.3.17.

6.7 spack

6.7.1 v0.20.0

6.7.1.1 Features in this release
  1. requires() directive and enhanced package requirements

    We’ve added some more enhancements to requirements in Spack.

    There is a new requires() directive for packages. requires() is the opposite of conflicts(). You can use it to impose constraints on this package when certain conditions are met. More details can be found here

  2. Exact versions

    Spack did not previously have a way to distinguish a version if it was a prefix of some other version. For example, @3.2 would match 3.2, 3.2.1, 3.2.2, etc. You can now match exactly 3.2 with @=3.2. This is useful, for example, if you need to patch only the 3.2 version of a package. The new syntax is described in the docs.

    Generally, when writing packages, you should prefer to use ranges like @3.2 over the specific versions, as this allows the concretizer more leeway when selecting versions of dependencies. More details and recommendations are in the packaging guide.

  3. More stable concretization

    • Now, spack concretize will only concretize the new portions of the environment and will not change existing parts of an environment unless you specify --force. This has always been true for unify:false, but not for unify:true and unify:when_possible environments. Now it is true for all of them.

    • The concretizer has a new --reuse-deps argument that only reuses dependencies. That is, it will always treat the roots of your environment as it would with --fresh. This allows you to upgrade just the roots of your environment while keeping everything else stable.

  4. Specs in buildcaches can be referenced by hash.

    • Previously, you could run spack buildcache list and see the hashes in buildcaches, but referring to them by hash would fail.

    • You can now run commands like spack spec and spack install and refer to buildcache hashes directly, e.g. spack install /abc123

  5. New package and buildcache index websites

    Our public websites for searching packages have been completely revamped and updated. You can check them out here:

  6. Default CMake and Meson build types are now Release

    Spack has historically defaulted to building with optimization and debugging, but packages like llvm can be enormous with debug turned on. Our default build type for all Spack packages is now Release. This has a number of benefits: * much smaller binaries; * higher default optimization level; and * defining NDEBUG disables assertions, which may lead to further speedups.

    + You can still get the old behavior back through requirements and package preferences.

6.7.1.2 Other new commands and directives
  • spack checksum can automatically add new versions to package

  • new command: spack pkg grep to easily search package files

  • New maintainers directive

  • Add spack buildcache push (alias to buildcache create)

  • Allow using -j to control the parallelism of concretization

  • Add --exclude option to `spack external find'

6.7.1.3 Other new features of note
  • editing: add higher-precedence SPACK_EDITOR environment variable

  • Many YAML formatting improvements from updating ruamel.yaml to the latest version supporting Python 3.6. .

  • Requirements and preferences should not define (non-git) versions

  • Environments now store spack version/commit in spack.lock

  • User can specify the name of the packages subdirectory in repositories

  • Add container images supporting RHEL alternatives

  • make version(…) kwargs explicit

6.7.1.4 Notable refactors
  • buildcache create: reproducible tarballs

  • Bootstrap most of Spack dependencies using environments

  • Split satisfies(…​, strict=True/False) into two functions

  • spack install: simplify behavior when inside environments

6.7.1.5 Removals, Deprecations, and disablements
  • Module file generation is disabled by default; you’ll need to enable it to use it

  • Support for Python 2 was deprecated in v0.19.0 and has been removed. v0.20.0 only supports Python 3.6 and higher.

  • Deprecated target names are no longer recognized by Spack. Use generic names instead:

    • graviton is now cortex_a72

    • graviton2 is now neoverse_n1

    • graviton3 is now neoverse_v1

  • blacklist and whitelist in module configuration were deprecated in v0.19.0 and are removed in this release. Use exclude and include instead.

  • The ignore= parameter of the extends() directive has been removed. It was not used by any builtin packages and is no longer needed to avoid conflicts in environment views.

  • Support for the old YAML buildcache format has been removed. It was deprecated in v0.19.0.

  • spack find --bootstrap has been removed. It was deprecated in v0.19.0. Use spack --bootstrap find instead.

  • spack bootstrap trust and spack bootstrap untrust are now removed, having been deprecated in v0.19.0. Use spack bootstrap enable and spack bootstrap disable.

  • The --mirror-name, --mirror-url, and --directory options to buildcache and mirror commands were deprecated in v0.19.0 and have now been removed. They have been replaced by positional arguments.

  • Deprecate env: as top level environment key

  • deprecate buildcache create –rel, buildcache install –allow-root

  • Support for very old perl-like spec format strings (e.g., $_$@$%@+$+$=) has been removed. This was deprecated in in v0.15.

6.7.1.6 Notable Bugfixes
  • bugfix: don’t fetch package metadata for unknown concrete specs

  • Improve package source code context display on error

  • Relax environment manifest filename requirements and lockfile identification criteria

  • installer.py: drop build edges of installed packages by default

  • Bugfix: package requirements with git commits

  • Package requirements: allow single specs in requirement lists

  • conditional variant values: allow boolean

  • spack uninstall: follow run/link edges on –dependents

For details, check the upstream release notes.

6.7.1.7 A script to set LD_LIBRARY_PATH is now provided

The command spack load <target> no longer sets the LD_LIBRARY_PATH environment variable. Since Spack was setting this variable to all libraries of the entire dependency stack, this has caused issues with system programs if they use a shared library that has been rebuilt by spack in a different way than the one provided by the system. In context of Spack this is not considered to be an issue as any Spack- built binary or library uses RPATH to set the location of shared libraries they depend on. Since Spack is used to build full solution stacks (including the final application binary this is not a problem.

If Spack is used to build a library stack for an application that is to be built outside of Spack, this is a problem. To remedy this, we provide the script spack_get_libs.sh. When called with a list of Spack packages, it will print shell commands to set and export LD_LIBRARY path prepended with with the path to the libraries from the Spack packages listed. The default shell is bash. With the option --csh a csh command line will be printed instead:

    spack_get_libs.sh [--help] [--csh] lib ...

On bash, when the script is sourced, the environment updated directly. Additionally, the script will print settings for (or set) variables identifying include and library paths for each package of the form:

    LIB_<PACKAGE_NAME>
    INC_<PACKAGE_NAME>

<PACKAGE_NAME> denotes the package name in upper case. These variables can be used during building.

6.7.2 v0.23.1

  • Fix a correctness issue of ArchSpec.intersects.

  • Make extra_attributes order independent in Spec hashing.

  • Fix issue where system proxy settings were not respected in OCI build caches.

  • Fix an issue where the --test concretizer flag was not forwarded correctly.

  • Fix an issue where codesign and install_name_tool would not preserve hardlinks on Darwin.

  • Fix an issue on Darwin where codesign would run on unmodified binaries.

  • Patch configure scripts generated with libtool < 2.5.4, to avoid redundant flags when creating shared libraries on Darwin.

  • Ensure proper UTF-8 encoding/decoding in logging.

  • Fix issues related to filter_file.

  • Fix an issue related to creating bootstrap source mirrors.

  • Fix an issue where command line config arguments were not always top level.

  • Fix an incorrect typehint of concretized().

  • Improve mention of next Spack version in warning. Tests: fix forward compatibility with Python 3.13.

  • Docs: encourage use of --oci-username-variable and --oci-password-variable.

  • Docs: ensure Getting Started has bootstrap list output in correct place.

6.7.3 v0.23.0

This is a new major release.

6.7.3.1 Features in this Release
  • Spec splicing To make binary installation more seamless in Spack, v0.23 introduces splicing, which allows users to deploy binaries using local, optimized versions of a binary interface, even if they were not built with that interface. For example, this would allow you to build binaries in the cloud using mpich and install them on a system using a local, optimized version of mvapich2 without rebuilding. Spack preserves full provenance for the installed packages and knows that they were built one way but deployed another. The intent is to leverage this across many key HPC binary packages, e.g. MPI, CUDA, ROCm, and libfabric. Fundamentally, splicing allows Spack to redeploy an existing spec with different dependencies than how it was built. There are two interfaces to splicing.

    . Explicit Splicing In the concretizer config, you can specify a target spec and a replacement by hash.

    concretizer:
      splice:
        explicit:
        - target: mpi
          replacement: mpich/abcdef

    Here, every installation that would normally use the target spec will instead use its replacement. Above, any spec using any mpi will be spliced to depend on the specific mpich installation requested. This can go wrong if you try to replace something built with, e.g., openmpi with mpich, and it is on the user to ensure ABI compatibility between target and replacement specs. This currently requires some expertise to use, but it will allow users to reuse the binaries they create across more machines and environments. . Automatic Splicing (experimental) In the concretizer config, enable automatic splicing:

      concretizer:
        splice:
          automatic: true

    or run:

    spack config add concretizer:splice:automatic:true

    The concretizer will select splices for ABI compatibility to maximize package reuse. Packages can denote ABI compatibility using the can_splice directive. No packages in Spack yet use this directive, so if you want to use this feature you will need to add can_splice annotations to your packages. We are working on ways to add more ABI compatibility information to the Spack package repository, and this directive may change in the future.

    Further documentation: https://spack.readthedocs.io/en/latest/build_settings.html#splicing https://spack.readthedocs.io/en/latest/packaging_guide.html#specifying-abi-compatibility

  • Broader variant propagation You can specify propagated variants like hdf5 build_type==RelWithDebInfo or trilinos ++openmp to propagate a variant to all dependencies for which it is relevant. This is valid even if the variant does not exist on the package or its dependencies. See https://spack.readthedocs.io/en/latest/basic_usage.html#variants.

  • Query specs by namespace Allow a package’s namespace (indicating the repository it came from) to be treated like a variant. You can request packages from particular repos like this:

    spack find zlib namespace=builtin
    spack find zlib namespace=myrepo

    Previously, the spec syntax only allowed namespaces to be prefixes of spec names, e.g. builtin.zlib. The previous syntax still works.

  • spack spec respects environment settings and unify:true spack spec did not previously respect environment lockfiles or unification settings, which made it difficult to see exactly how a spec would concretize within an environment. Now it does, so the output you get with spack spec will be the same as what your environment will concretize to when you run spack concretize. Similarly, if you provide multiple specs on the command line with spack spec, it will concretize them together if unify:true is set.

  • Less noisy spack spec output spack spec previously showed output like this:

    > spack spec /v5fn6xo
    Input spec
    --------------------------------
     -   /v5fn6xo
    
     Concretized
    --------------------------------
    [+]  openssl@3.3.1%apple-clang@16.0.0~docs+shared arch=darwin-sequoia-m1
    ...

    But the input spec is redundant, and we know we run spack spec to concretize the input spec. spack spec now only shows the concretized spec.

  • Better output for spack find -c In an environment, spack find -c lets you search the concretized, but not yet installed, specs, just as you would the installed ones. As with spack spec, this should make it easier for you to see what will be built before building and installing it.

  • spack -C <env>: use an environment’s configuration without activation Spack environments allow you to associate:

    1. a set of (possibly concretized) specs, and

    2. configuration When you activate an environment, you’re using both of these.

      Previously, we supported:

      • spack -e <env> to run spack in the context of a specific environment, and

      • spack -C <directory> to run spack using a directory with configuration files.

    You can now also pass an environment to spack -C to use only the environment’s configuration, but not the specs or lockfile.

6.7.3.2 New commands, options, and directives
  • The new spack env track command takes a non-managed Spack environment and adds a symlink to Spack’s $environments_root directory, so that it will be included for reference counting for commands like spack uninstall and spack gc. If you use free-standing directory environments, this is useful for preventing Spack from removing things required by your environments. You can undo this tracking with the spack env untrack command.

  • Add -t short option for spack --backtrace spack -d / --debug enables backtraces on error, but it can be very verbose, and sometimes you just want the backtrace. spack -t / --backtrace provides that option.

  • gc: restrict to specific specs If you only want to garbage-collect specific packages, you can now provide them on the command line. This gives users finer-grained control over what is uninstalled.

  • oci buildcaches now support --only=package. You can now push just a package and not its dependencies to an OCI registry. This allows dependents of non-redistributable specs to be stored in OCI registries without an error.

6.7.3.3 Highlighted bugfixes
  • Externals no longer override the preferred provider. External definitions could interfere with package preferences. Now, if openmpi is the preferred mpi, and an external mpich is defined, a new openmpi will be built if building it is possible. Previously we would prefer mpich despite the preference.

  • Composable cflags. This release fixes a longstanding bug that concretization would fail if there were different cflags specified in packages.yaml, compilers.yaml, or on the CLI. Flags and their ordering are now tracked in the concretizer and flags from multiple sources will be merged.

  • Fix concretizer Unification for included environments.

6.7.3.4 Deprecations, removals, and syntax changes
  • The old concretizer has been removed from Spack, along with the config:concretizer config option. Spack will emit a warning if the option is present in user configuration, since it now has no effect. Spack now uses a simpler bootstrapping mechanism, where a JSON prototype is tweaked slightly to get an initial concrete spec to download.

  • Best-effort expansion of spec matrices has been removed. This feature did not work with the new ASP-based concretizer, and did not work with unify: True or unify: when_possible. Use the exclude key for the environment to exclude invalid components, or use multiple spec matrices to combine the list of specs for which the constraint is valid and the list of specs for which it is not.

  • The old Cray platform (based on Cray PE modules) has been removed, and platform=cray is no longer supported. Since v0.19, Spack has handled Cray machines like Linux clusters with extra packages, and we have encouraged using this option to support Cray. The new approach allows us to correctly handle Cray machines with non-SLES operating systems, and it is much more reliable than making assumptions about Cray modules. See the v0.19 release notes for more details.

  • The config:install_missing_compilers config option has been deprecated, and it is a no-op when set in v0.23. Our new compiler dependency model will replace it with a much more reliable and robust mechanism in v1.0.

  • Config options that deprecated in v0.21 have been removed in v0.23. You can now only specify preferences for compilers, targets, and providers globally via the packages:all: section. Similarly, you can only specify versions: locally for a specific package.

  • Spack’s old test interface has been removed, having been deprecated in v0.22.0. All builtin packages have been updated to use the new interface. See the stand-alone test documentation

  • The spack versions --safe-only option, deprecated since v0.21.0, has been removed.

  • The --dependencies and --optimize arguments to spack ci have been deprecated.

6.7.3.5 Binary caches
  • Public binary caches now include an ML stack for Linux/aarch64. We now build an ML stack for Linux/aarch64 for all pull requests and on develop. The ML stack includes both CPU-only and CUDA builds for Horovod, Hugging Face, JAX, Keras, PyTorch, scikit-learn, TensorBoard, and TensorFlow, and related packages. The CPU-only stack also includes XGBoost. See https://cache.spack.io/tag/develop/?stack=ml-linux-aarch64-cuda.

6.7.3.6 Architecture support
  • archspec has been updated to v0.2.5, with support for zen5.

  • Spack’s CUDA package now supports the Grace Hopper 9.0a compute capability.

6.7.3.7 Other notable changes
  • Bugfix: spack find -x in environments.

  • Spec splices are now robust to duplicate nodes with the same name in a spec.

  • Cache per-compiler libc calculations for performance.

  • Fixed a bug in external detection for openmpi.

  • Mirror configuration allows username/password as environment variables.

  • Default library search caps maximum depth/

  • Unify interface for spack spec and spack solve commands.

  • Spack no longer RPATHs directories in the default library search path.

  • Improved performance of Spack database.

  • Enable package reuse for packages with versions from git refs.

  • Improved tracking of task queueing/requeueing in the installer.

6.7.4 v0.22.2

6.7.4.1 Bugfixes
  • Forward compatibility with Spack 0.23 packages with language dependencies.

  • Forward compatibility with urllib from Python 3.12.6+.

  • Bump vendored archspec for better aarch64 support.

  • Fix regression in \\{variants.X} and \\{variants.X.value} format strings.

  • Ensure shell escaping of environment variable values in load and activate commands.

  • Fix an issue where spec[pkg] considers specs outside the current DAG.

  • Do not halt concretization on unknown variants in externals.

  • Improve validation of develop config section/

  • Explicitly disable ccache if turned off in config, to avoid cache pollution.

  • Improve backwards compatibility in include_concrete.

  • Fix issue where package tags were sometimes repeated.

  • Make setup-env.sh sourced only by dropping execution bits.

  • Make certain source/binary fetch errors recoverable instead of a hard error.

  • Remove debug statements in package hash computation.

  • Remove redundant clingo warnings.

  • Remove hard-coded layout version.

  • Do not initialize previous store state in use_store.

6.7.4.2 Package updates
  • chapel major update/

6.7.5 v0.22.1

6.7.5.1 Bug Fixes
  • Fix reuse of externals on Linux.

  • Ensure parent gcc-runtime version >= child.

  • Ensure the latest gcc-runtime is rpath’ed when multiple exist among link deps.

  • Improve version detection of glibc.

  • Improve heuristics for solver.

  • Make strong preferences override reuse.

  • Reduce verbosity when C compiler is missing.

  • Make missing ccache executable an error when required.

  • Make every environment view containing python a venv.

  • Fix external detection for compilers with os but no target.

  • Fix version optimization for roots.

  • Handle common implementations of pagination of tags in OCI build caches.

  • Apply fetched patches to develop specs.

  • Avoid Windows wrappers for filesystem utilities on non-Windows.

  • Fix formatting issue in spack audit.

6.7.5.2 Package updates
  • Require libiconv for iconv. Notice that glibc/musl also provide iconv, but are not guaranteed to be complete. Set packages:iconv:require:[glibc] to restore the old behavior.

  • protobuf: fix 3.4:3.21 patch checksum.

  • protobuf: update hash for patch needed when=@3.4:3.21.

  • git: bump v2.39 to 2.45; deprecate unsafe versions.

  • gcc: use -rpath \{rpath_dir} not -rpath=\\{rpath dir}.

  • Remove mesa18 and libosmesa.

  • Enforce consistency of gl providers.

  • py-matplotlib: qualify when to do a post install.

  • rust: fix v1.78.0 instructions.

  • suite-sparse: improve setting of the libs property.

  • netlib-lapack: provide blas and lapack together.

6.8 mpich

mpich has been updated to version 3.4.2. For more information see https://www.mpich.org/2021/05/28/mpich-3-4-2-released/.

6.9 Slurm

6.9.1 Deprecation of old Versions of Slurm

SLE receives a new Slurm version for roughly every second upstream release. To facilitate this, old version of Slurm will go out of maintenance successively. Users of these versions are encouraged to migrate to a later version before the expiry date. Note, that Slurm only allows migration two versions upwards without loss of data. To migrate to the latest version, migrations to intermedite versions may be required.

Once Slurm versions are out of maintenance, updates to to packages depending on this Slurm version will no longer be provided. In particular, this will be the case for pdsh-slurm - the Slurm plugin to Pdsh. Note that pdsh-slurm is compatible to the Slurm initially shipped with a product/service pack) while packages pdsh-slurm_<slurm_version> is compatible with an upgade version of Slurm.

Table 1: Table Sunset Schedule for Slurm

Slurm Version

Released for Service Pack

Support End Date

17.02

SLE-12-SP2

May 2024

18.08

SLE-15-SP1 and older

October 2024

20.02

SLE-15-SP2 and older

Januar 2025

20.11

SLE-15-SP3/4 and older

January 2026

22.05

SLE-15-SP4 and older

December 2026

23.02

SLE-15-SP5/6 and older

January 2028

6.9.2 Slurm 24.11

6.9.2.1 Important Notes on Upgrading Slurm from a Previous Version

Slurm can be upgraded from version 23.02, 23.11 or 24.05 to version 24.11 without loss of jobs or other state information. Upgrading directly from an earlier version of Slurm will result in loss of state information.

IMPORTANT NOTES: If using the slurmdbd (Slurm DataBase Daemon) you must update this first.

The 24.11 slurmdbd will work with Slurm daemons of version 23.02 and above. You will not need to update all clusters at the same time, but it is very important to update slurmdbd first and having it running before updating any other clusters making use of it.

Note
Note

If using a backup DBD you must start the primary first to do any database conversion, the backup will not start until this has happened.

All SPANK plugins must be recompiled when upgrading from any Slurm version prior to 24.11.

6.9.2.2 Highlights
  • Add report AccountUtilizationByQOS to sreport.

  • AccountUtilizationByUser is able to be filtered by QOS.

  • Add autodetected gpus to the output of slurmd -C

  • Add ability to submit jobs with multiple QOS. These are sorted by priority highest being the first.

  • Removed the instant on feature from switch/hpe_slingshot.

  • slurmctld - Changed incoming RPC handling to dedicated thread pool with asynchronous handling of I/O that can be configured via conmgr_* entries under SlurmctldParameters in slurm.conf.

6.9.2.3 Configuration File Changes (see appropriate man page for details)
  • Add SchedulerParameters=bf_allow_magnetic_slot option. It allows jobs in magnetic reservations to be planned by backfill scheduler.

  • Add TopologyParam=TopoMaxSizeUnroll=# to allow --nodes=<min>-<max> for topology/block.

  • Add DataParserParameters slurm.conf parameter to allow setting default value for CLI --json and --yaml arguments.

  • Hardware collectives in switch/hpe_slingshot now requires enable_stepmgr.

  • Added connection related parameters to slurm.conf under SlurmctldParameters:
    conmgr_max_connections: Defaults to 150 connections.

    conmgr_threads: Defaults to 64 threads for slurmctld.

    conmgr_use_poll: Defaults is to use epoll in Linux.

    conmgr_connect_timeout: Defaults to MessageTimeout.

    conmgr_read_timeout: Defaults to MessageTimeout.

    conmgr_wait_write_delay: Defaults to MessageTimeout.

    conmgr_write_timeout: Defaults to MessageTimeout.

  • Add SlurmctldParamters=ignore_constraint_validation to ignore constraint/feature validation at submission.

  • Add SchedulerParameters=bf_topopt_enable option to enable experimental hook to control backfill.

6.9.2.4 Command Changes (see man pages for details)
  • Remove srun --cpu-bind=rank.

  • Add "%b" as a file name pattern for the array task id modulo 10.

  • sacct - Respect --noheader for --batch-script and --env-vars.

  • Add sacctmgr ping command to query status of slurmdbd.

  • sbcast - Add --nodelist option to specify where files are transmitted to

  • sbcast - Add --no-allocation option to transmit files to nodes outside of a job allocation.

  • slurmdbd - Add -u option. This is used to determine if restarting the DBD will result in database conversion.

  • Remove salloc --get-user-env.

  • scontrol - Add --json/--yaml support to listpids.

  • scontrol - Add liststeps.

  • scontrol - Add listjobs.

  • scontrol show topo - Show aggregated block sizes when using topology/block.

6.9.2.5 API Changes
  • Remove burst_buffer/lua call slurm.job_info_to_string().

  • job_submit/lua - Add assoc_qos attribute to job_desc to display all potential QOS’s for a job’s association.

  • job_submit/lua - Add slurm.get_qos_priority() function to retrieve the given QOS’s priority.

6.9.2.6 SLURMRESTD CHANGES
  • Removed fields deprecated in the Slurm-23.11 release from v0.0.42 endpoints.

  • Removed v0.0.39 plugins.

  • Set data_parser/v0.0.42+prefer_refs flag to default.

  • Add data_parser/v0.0.42+minimize_refs flag to inline single referenced schemas in the OpenAPI schema to get default behavior of data_parser/v0.0.41.

  • Rename v0.0.42 JOB_INFO field minimum_switches to required_switches to reflect the actual behavior.

  • Rename v0.0.42 ACCOUNT_CONDITION field assocation to association (typo).

  • Tag slurmdb/v0.0.42/jobs pid field deprecated.

Also Check slurm 24.11 changelog for further details.

6.9.2.7 Update to version 24.11.1
  • With client commands MIN_MEMORY will show mem_per_tres if specified.

  • Fix errno message about bad constraint.

  • slurmctld - Fix crash and possible split brain issue if the backup controller handles an scontrol reconfigure while in control before the primary resumes operation.

  • Fix stepmgr not getting dynamic node addrs from the controller.

  • stepmgr - avoid Unexpected missing socket errors.

  • Fix scontrol show steps with dynamic stepmgr.

  • Deny jobs using the R: option of --signal if PreemptMode=OFF globally.

  • Force jobs using the R: option of --signal to be preemptable by requeue or cancel only. If PreemptMode on the partition or QOS is off or suspend, the job will default to using PreemptMode=cancel.

  • If --mem-per-cpu exceeds MaxMemPerCPU, the number of CPUs per task will always be increased even if --cpus-per-task was specified. This is needed to ensure each task gets the expected amount of memory.

  • Fix compilation issue on openSUSE Leap 15.

  • Fix jobs using more nodes than needed when not using -N.

  • Fix issue with allocation being allocated less resources than needed when using --gres-flags=enforce-binding.

  • select/cons_tres - Fix errors with MaxCpusPerSocket partition limit. Used CPUs/cores weren’t counted properly, nor limiting free ones to avail, when the socket was partially allocated, or the job request went beyond this limit.

  • Fix issue when jobs were preempted for licenses even if there were enough licenses available.

  • Fix srun ntasks calculation inside an allocation when nodes are requested using a min-max range.

  • Print correct number of digits for TmpDisk in sdiag.

  • Fix a regression in 24.11 which caused file transfers to a job with sbcast to not join the job container namespace.

  • data_parser/v0.0.40 - Prevent a segfault in the slurmrestd when dumping data with v0.0.40+complex data parser.

  • Remove logic to force lowercase GRES names.

  • data_parser/v0.0.42 - Prevent the association id from always being dumped as NULL when parsing in complex mode. Instead it will now dump the id. This affects the following endpoints:

    • GET slurmdb/v0.0.42/association

    • GET slurmdb/v0.0.42/associations

    • GET slurmdb/v0.0.42/config

      • Fixed a job requeuing issue that merged job entries into the same SLUID when all nodes in a job failed simultaneously.

      • When a job completes, try to give idle nodes to reservations with the REPLACE flag before allowing them to be allocated to jobs.

      • Avoid expensive lookup of all associations when dumping or parsing for v0.0.42 endpoints.

      • Avoid expensive lookup of all associations when dumping or parsing for v0.0.41 endpoints.

      • Avoid expensive lookup of all associations when dumping or parsing for v0.0.40 endpoints.

      • Fix segfault when testing jobs against nodes with invalid gres.

      • Fix performance regression while packing larger RPCs.

      • job_container/tmpfs - Fix Xauthority file being created outside the container when EntireStepInNS is enabled.

      • job_container/tmpfs - Fix spank_task_post_fork not always running in the container when EntireStepInNS is enabled.

      • Fix a job potentially getting stuck in CG on permissions errors while setting up X11 forwarding.

      • Fix error on X11 shutdown if Xauthority file was not created.

      • slurmctld - Fix memory or fd leak if an RPC is received that is not registered for processing.

      • Inject OMPI_MCA_orte_precondition_transports when using PMIx. This fixes mpi apps using Intel OPA, PSM2 and OMPI 5.x when run through srun.

      • Don’t skip the first partition_job_depth jobs per partition.

      • Fix gres allocation issue after controller restart.

      • Fix issue where jobs requesting CPUs-per-GPU hang in queue.

      • switch/hpe_slingshot - Treat HTTP status forbidden the same as unauthorized, allowing for a graceful retry attempt.

      • Package fixes: Slurmdbd no longer starts as root so that the systemd RuntimeDirectory option works properly. This requires further adjustments:

    • Use /run/slurmdbd as directory for PID file. This is created when slurmdbd starts by RuntimeDirectory=slurmdbd in the systemd service file (boo#1236928).

    • Upon installation, create empty /var/log/slurmdbd.log owned by user slurm as slurmdbd is not able to create it (boo#1236929).

6.9.3 Slurm 23.02

6.9.3.1 Important Notes on Upgrading Slurm from a Previous Version

If using the slurmdbd (Slurm DataBase Daemon) you must update this first.

If using a backup DBD you must start the primary first to do any database conversion, the backup will not start until this has happened.

The 23.02 slurmdbd will work with Slurm daemons of version 21.08 and above. You will not need to update all clusters at the same time, but it is very important to update slurmdbd first and having it running before updating any other clusters making use of it.

Slurm can be upgraded from version 22.05 to version 23.02 without loss of jobs or other state information. Upgrading directly from an earlier version of Slurm will result in loss of state information.

All SPANK plugins must be recompiled when upgrading from any Slurm version prior to 23.02.

Note
Note

PMIx v1.x is no longer supported.

6.9.3.2 Highlights
  • slurmctld - Add new RPC rate limiting feature. This is enabled through SlurmctldParameters=rl_enable, otherwise disabled by default.

  • Make scontrol reconfigure and sending a SIGHUP to the slurmctld behave the same. If you were using SIGHUP as a 'lighter' scontrol reconfigure to rotate logs please update your scripts to use SIGUSR2 instead.

  • Change cloud nodes to show by default. PrivateData=cloud is no longer needed.

  • sreport - Count planned (FKA reserved) time for jobs running in IGNORE_JOBS reservations. Previously was lumped into IDLE time.

  • job_container/tmpfs - Support running with an arbitrary list of private mount points (/tmp and /dev/shm are the default, but not required).

  • job_container/tmpfs - Set more environment variables in InitScript.

  • Make all cgroup directories created by Slurm owned by root. This was the behavior in cgroup/v2 but not in cgroup/v1 where by default the step directories ownership were set to the user and group of the job.

  • accounting_storage/mysql - change purge/archive to calculate record ages based on end time, rather than start or submission times.

  • job_submit/lua - add support for log_user() from slurm_job_modify().

  • Run the following scripts in slurmscriptd instead of slurmctld: ResumeProgram, ResumeFailProgram, SuspendProgram, ResvProlog, ResvEpilog, and RebootProgram (only with SlurmctldParameters=reboot_from_controller).

  • Only permit changing log levels with srun --slurmd-debug by root or SlurmUser.

  • slurmctld will fatal() when reconfiguring the job_submit plugin fails.

  • Add PowerDownOnIdle partition option to power down nodes after nodes become idle.

  • Add [jobid.stepid] prefix from slurmstepd and slurmscriptd prefix from slurmcriptd to Syslog logging. Previously was only happening when logging to a file.

  • Add purge and archive functionality for job environment and job batch script records.

  • Extend support for Include files to all "configless" client commands.

  • Make node weight usable for powered down and rebooting nodes.

  • Removed launch plugin.

  • Add Extra field to job to store extra information other than a comment.

  • Add usage gathering for AMD (requires ROCM 5.5+) and NVIDIA gpus.

  • Add job’s allocated nodes, features, oversubscribe, partition, and reservation to SLURM_RESUME_FILE output for power saving.

  • Automatically create directories for stdout/stderr output files. Paths may use %j and related substitution characters as well.

  • Add --tres-per-task to salloc/sbatch/srun.

  • Allow nodefeatures plugin features to work with cloud nodes. e.g. - Powered down nodes have no active changeable features.

    • Nodes can’t be changed to other active features until powered down.

    • Active changeable features are reset/cleared on power down.

  • Make slurmstepd cgroups constrained by total configured memory from slurm.conf (NodeName=<> RealMemory=#) instead of total physical memory.

  • node_features/helpers - add support for the OR and parentheses operators in a --constraint expression.

  • slurmctld will fatal() when [Prolog|Epilog]Slurmctld are defined but are not executable.

  • Validate node registered active features are a super set of node’s currently active changeable features.

  • On clusters without any PrologFlags options, batch jobs with failed prologs nolonger generate an output file.

  • Add SLURM_JOB_START_TIME and SLURM_JOB_END_TIME environment variables.

  • Add SuspendExcStates option to slurm.conf to avoid suspending/powering down specific node states.

  • Add support for DCMI power readings in IPMI plugin.

  • slurmrestd served /slurm/v0.0.39 and /slurmdb/v0.0.39 endpoints had major changes from prior versions. Almost all schemas have been renamed and modified. Sites using OpenAPI Generator clients are highly suggested to upgrade to to using atleast version 6.x due to limitations with prior versions.

  • Allow for --nodelist to contain more nodes than required by --nodes.

  • Rename nodes to nodes_resume in SLURM_RESUME_FILE job output.

  • Rename all_nodes to all_nodes_resume in SLURM_RESUME_FILE output.

  • Add jobcomp/kafka plugin.

  • Add new PreemptParameters=reclaim_licenses option which will allow higher priority jobs to preempt jobs to free up used licenses. (This is only enabled for with PreemptModes of CANCEL and REQUEUE, as Slurm cannot guarantee suspended jobs will release licenses correctly.)

  • hpe/slingshot - add support for the instant-on feature.

  • Add ability to update SuspendExc* parameters with scontrol.

  • Add ability to restore SuspendExc* parameters on restart with slurmctld -R option.

  • Add ability to clear a GRES specification by setting it to "0" via scontrol update job.

  • Add SLURM_JOB_OVERSUBSCRIBE environment variable for Epilog, Prolog, EpilogSlurmctld, PrologSlurmctld, and mail ouput.

  • System node down reasons are appended to existing reasons, separated by ':'.

  • New command scrun has been added. scrun acts as an Open Container Initiative (OCI) runtime proxy to run containers seamlessly via Slurm.

  • Fixed GpuFreqDef option. When set in slurm.conf, it will be used if --gpu-freq was not explicitly set by the job step.

6.9.3.3 Configuration File Changes (see appropriate man page for details)
  • job_container.conf - Added Dirs option to list desired private mount points.

  • node_features plugins - invalid users specified for AllowUserBoot will now result in fatal() rather than just an error.

  • Deprecate AllowedKmemSpace, ConstrainKmemSpace, MaxKmemPercent, and MinKmemSpace.

  • Allow jobs to queue even if the user is not in AllowGroups when EnforcePartLimits=no is set. This ensures consistency for all the Partition access controls, and matches the documented behavior for EnforcePartLimits.

  • Add InfluxDBTimeout parameter to acct_gather.conf.

  • job_container/tmpfs - add support for expanding %h and %n in BasePath.

  • slurm.conf - Removed SlurmctldPlugstack option.

  • Add new SlurmctldParameters=validate_nodeaddr_threads=<number> option to allow concurrent hostname resolution at slurmctld startup.

  • Add new AccountingStoreFlags=job_extra option to store a job’s extra field in the database.

  • Add new defer_batch option to SchedulerParameters to only defer scheduling for batch jobs.

  • Add new DebugFlags option JobComp to replace Elasticsearch.

  • Add configurable job requeue limit parameter - MaxBatchRequeue - in slurm.conf to permit changes from the old hard-coded value of 5.

  • helpers.conf - Allow specification of node specific features.

  • helpers.conf - Allow many features to one helper script.

  • job_container/tmpfs - Add Shared option to support shared namespaces. This allows autofs to work with the job_container/tmpfs plugin when enabled.

  • acct_gather.conf - Added EnergyIPMIPowerSensors=Node=DCMI and Node=DCMI_ENHANCED.

  • Add new getnameinfo_cache_timeout=<number> option to CommunicationParameters to adjust or disable caching the results of getnameinfo().

  • Add new PrologFlags=ForceRequeueOnFail option to automatically requeue batch jobs on Prolog failures regardless of the job --requeue setting.

  • Add HealthCheckNodeState=NONDRAINED_IDLE option.

  • Add explicit to Flags in gres.conf. This makes it so the gres is not automatically added to a job’s allocation when --exclusive is used. Note that this is a per-node flag.

  • Moved the preempt_ options from SchedulerParameters to PreemptParameters, and dropped the prefix from the option names. (The old options will still be parsed for backwards compatibility, but are now undocumented.)

  • Add LaunchParameters=ulimit_pam_adopt, which enables setting RLIMIT_RSS in adopted processes.

  • Update SwitchParameters=job_vni to enable/disable creating job VNIs for all jobs, or when a user requests them.

  • Update SwitchParameters=single_node_vni to enable/disable creating single node VNIs for all jobs, or when a user requests them.

  • Add ability to preserve SuspendExc* parameters on reconfig with ReconfigFlags=KeepPowerSaveSettings.

  • slurmdbd.conf - Add new AllResourcesAbsolute to force all new resources to be created with the Absolute flag.

  • topology/tree - Add new TopologyParam=SwitchAsNodeRank option to reorder nodes based on switch layout. This can be useful if the naming convention for the nodes does not natually map to the network topology.

  • Removed the default setting for GpuFreqDef. If unset, no attempt to change the GPU frequency will be made if --gpu-freq is not set for the step.

6.9.3.4 Command Changes (see man pages for details)
  • sacctmgr - no longer force updates to the AdminComment, Comment, or SystemComment to lower-case.

  • sinfo - Add -F/--future option to sinfo to display future nodes.

  • sacct - Rename Reserved field to Planned to match sreport and the nomenclature of the 'Planned' node.

  • scontrol - advanced reservation flag MAINT will no longer replace nodes, similar to STATIC_ALLOC

  • sbatch - add parsing for #PBS -d and #PBS -w.

  • scontrol show assoc_mgr will show username(uid) instead of uid in QoS section.

  • Add strigger --draining and -R/--resume options.

  • Change --oversubscribe and --exclusive to be mutually exclusive for job submission. Job submission commands will now fatal if both are set. Previously, these options would override each other, with the last one in the job submission command taking effect.

  • scontrol - Requested TRES and allocated TRES will now always be printed when showing jobs, instead of one TRES output that was either the requested or allocated.

  • srun --ntasks-per-core now applies to job and step allocations. Now, use of --ntasks-per-core=1 implies --cpu-bind=cores and --ntasks-per-core>1 implies --cpu-bind=threads.

  • salloc/sbatch/srun - Check and abort if ntasks-per-core > threads-per-core.

  • scontrol - Add ResumeAfter=<secs> option to scontrol update nodename=.

  • Add a new nodes= argument to scontrol setdebug to allow the debug level on the slurmd processes to be temporarily altered.

  • Add a new nodes= argument to scontrol setdebugflags as well.

  • Make it so scrontab prints client-side the job_submit() error messsage (which can be set i.e. by using the log_user() function for the lua plugin).

  • scontrol - Reservations will not be allowed to have STATIC_ALLOC or MAINT flags and REPLACE[_DOWN] flags simultaneously.

  • scontrol - Reservations will only accept one reoccurring flag when being created or updated.

  • scontrol - A reservation cannot be updated to be reoccurring if it is already a floating reservation.

  • squeue - removed unused %s and SelectJobInfo formats.

  • squeue - align print format for exit and derived codes with that of other components (<exit_status>:<signal_number>).

  • sacct - Add --array option to expand job arrays and display array tasks on separate lines.

  • Partial support for --json and --yaml formated outputs have been implemented for sacctmgr, sdiag, sinfo, squeue, and scontrol. The resultant data ouput will be filtered by normal command arguments. Formatting arguments will continue to be ignored.

  • salloc/sbatch/srun - extended the --nodes syntax to allow for a list of valid node counts to be allocated to the job. This also supports a "step count" value (e.g., --nodes=20-100:20 is equivalent to --nodes=20,40,60,80,100) which can simplify the syntax when the job needs to scale by a certain "chunk" size.

  • srun - add user requestible vnis with --network=job_vni option.

  • srun - add user requestible single node VNIs with the --network=single_node_vni option.

6.9.3.5 API Changes
  • job_container plugins - container_p_stepd_create() function signature replaced uint32_t uid with stepd_step_rec_t* step.

  • gres plugins - gres_g_get_devices() function signature replaced pid_t pid with stepd_step_rec_t* step.

  • cgroup plugins - task_cgroup_devices_constrain() function signature removed pid_t pid.

  • task plugins - replace task_p_pre_set_affinity(), task_p_set_affinity(), and task_p_post_set_affinity() with task_p_pre_launch_priv() like it was back in slurm 20.11.

  • Allow for concurrent processing of job_submit_g_submit() and job_submit_g_modify() calls. If your plugin is not capable of concurrent operation you must add additional locking within your plugin.

  • Removed return value from slurm_list_append().

  • The List and ListIterator types have been removed in favor of list_t and list_itr_t respectively.

  • burst buffer plugins - add bb_g_build_het_job_script(). bb_g_get_status() - added authenticated UID and GID. bb_g_run_script() - added job_info argument.

  • burst_buffer.lua - Pass UID and GID to most hooks. Pass job_info (detailed job information) to many hooks. See etc/burst_buffer.lua.example for a complete list of changes. WARNING: Backwards compatibility is broken for slurm_bb_get_status: UID and GID are passed before the variadic arguments. If UID and GID are not explicitly listed as arguments to slurm_bb_get_status(), then they will be included in the variadic arguments. Backwards compatibility is maintained for all other hooks because the new arguments are passed after the existing arguments.

  • node_features plugins - node_features_p_reboot_weight() function removed. node_features_p_job_valid() - added parameter feature_list. node_features_p_job_xlate() - added parameters feature_list and job_node_bitmap.

  • New data_parser interface with v0.0.39 plugin.

6.9.4 Important Notes for Upgrading Slurm Releases:

If using the slurmdbd (Slurm DataBase Daemon) you must update this first. If using a backup DBD you must start the primary first to do any database conversion, the backup will not start until this has happened.

6.9.5 Slurm version 22.05

An update to Slurm version 22.05 is available.

6.9.5.1 Important notes for upgrading to version 22.05

Slurmdbd version 22.05 will work Slurm daemons of version 20.11. You will not need to update all clusters at the same time, but it is very important to update slurmdbd first and having it running before updating any other clusters making use of it.

Slurm can be upgraded from version 20.11 to version 22.05 without loss of jobs or other state information. Upgrading directly from an earlier version of Slurm will result in loss of state information.

For more information and a recommended upgrade procedure, see the section "Upgrading Slurm" in the chapter "Slurm — utility for HPC workload management" of the in the SLE HPC 15 "Administration Guide".

All SPANK plugins must be recompiled when upgrading from any Slurm version prior to 22.05.

If you are using the Slurm plugin for pdsh you must make sure, pdsh_slurm_22_05 is installed together with slurm_22_05.

6.9.5.2 Highlights of version 20.11
  • The template slurmrestd.service unit file now defaults to listen on both the Unix socket and the slurmrestd port.

  • The template slurmrestd.service unit file now defaults to enable auth/jwt and the munge unit is no longer a dependency by default.

  • Add extra EnvironmentFile=-/etc/default/$service setting to service files.

  • Allow jobs to pack onto nodes already rebooting with the desired features.

  • Reset job start time after nodes are rebooted, previously only done for cloud/power save boots.

  • Node features (if any) are passed to RebootProgram if run from slurmctld.

  • Fail srun when using invalid --cpu-bind options (e.g. --cpu-bind=map_cpu:99 when only 10 CPUs are allocated).

  • Storing batch scripts and env vars are now in indexed tables using substantially less disk space. Those storing scripts in 21.08 will all be moved and indexed automatically.

  • Run MailProg through slurmscriptd instead of directly fork+exec()'ing from slurmctld.

  • Add acct_gather_interconnect/sysfs plugin.

  • Future and Cloud nodes are treated as "Planned Down" in usage reports.

  • Add new shard plugin for sharing GPUs but not with mps.

  • Add support for Lenovo SD650 V2 in acct_gather_energy/xcc plugin.

  • Remove cgroup_allowed_devices_file.conf, since the default policy in modern kernels is to whitelist by default. Denying specific devices must be done through gres.conf.

  • Node state flags (DRAIN, FAILED, POWERING UP, etc.) will be cleared now if node state is updated to FUTURE.

  • srun will no longer read in SLURM_CPUS_PER_TASK. This means you will implicitly have to specify --cpus-per-task on your srun calls, or set the new SRUN_CPUS_PER_TASK environment variable to accomplish the same thing.

  • Remove connect_timeout and timeout options from JobCompParams as there’s no longer a connectivity check happening in the jobcomp/elasticsearch plugin when setting the location off of JobCompLoc.

  • Add support for hourly reoccurring reservations.

  • Allow nodes to be dynamically added and removed from the system. Configure MaxNodeCount to accomodate nodes created with dynamic node registrations (slurmd -Z --conf="") and scontrol.

  • Added support for Cgroup Version 2.

  • sacct - allocations made by srun will now always display the allocation and step(s). Previously, the allocation and step were combined when possible.

  • cons_tres - change definition of the "least loaded node" (LLN) to the node with the greatest ratio of available CPUs to total CPUs.

  • Add support to ship Include configuration files with configless.

  • Provide a detailed reason in the job log as to why it has been terminated when hitting a resource limit.

  • Pass and use alias_list through credential instead of environment variable.

  • Add ability to get host addresses from nss_slurm.

  • Enable reverse fanout for cloud+alias_list jobs.

  • Add support to delete/update nodes by specifying nodesets or the 'ALL' keyword alongside the delete/update node message nodelist expression (i.e. scontrol delete/update NodeName=ALL or scontrol delete/update NodeName=ns1,nodes[1-3]).

  • Expanded the set of environment variables accessible through Prolog/Epilog and PrologSlurmctld/EpilogSlurmctld to include SLURM_JOB_COMMENT, SLURM_JOB_STDERR, SLURM_JOB_STDIN, SLURM_JOB_STDOUT, SLURM_JOB_PARTITION, SLURM_JOB_ACCOUNT, SLURM_JOB_RESERVATION, SLURM_JOB_CONSTRAINTS, SLURM_JOB_NUM_HOSTS, SLURM_JOB_CPUS_PER_NODE, SLURM_JOB_NTASKS, and SLURM_JOB_RESTART_COUNT.

  • Attempt to requeue jobs terminated by slurm.conf changes (node vanish, node socket/core change, etc). Processes may still be running on excised nodes. Admin should take precautions when removing nodes that have jobs on running on them.

  • Add switch/hpe_slingshot plugin.

  • Add new SchedulerParameters option bf_licenses to track licenses as within the backfill scheduler.

6.9.5.3 Configureation File changes (for details, see the appropriate man page)
  • AcctGatherEnergyType rsmi is now gpu.

  • TaskAffinity parameter was removed from cgroup.conf.

  • Fatal if the mutually-exclusive JobAcctGatherParams options of UsePss and NoShared are both defined.

  • KeepAliveTime has been moved into CommunicationParameters. The standalone option will be removed in a future version.

  • preempt/qos - add support for WITHIN mode to allow for preemption between jobs within the same QOS.

  • Fatal error if CgroupReleaseAgentDir is configured in cgroup.conf. The option has long been obsolete.

  • Fatal if more than one burst buffer plugin is configured.

  • Added keepaliveinterval and keepaliveprobes to CommunicationParameters.

  • Added new max_token_lifespan=<seconds> to AuthAltParameters to allow sites to restrict the lifespan of any requested ticket by an unprivileged user.

  • Disallow slurm.conf node configurations with NodeName=ALL.

6.9.5.4 Command Changes (for details, see the appropriate man page)
  • Remove support for (non-functional) --cpu-bind=boards.

  • Added --prefer option at job submission to allow for 'soft' constraints.

  • Add condflags=open to sacctmgr show events to return open/currently down events.

  • sacct -f flag implies -c flag.

  • srun --overlap now allows the step to share all resources (CPUs, memory, and GRES), where previously --overlap only allowed the step to share CPUs with other steps.

6.9.5.5 API Changes
  • openapi/v0.0.35 - Plugin has been removed.

  • burst_buffer plugins - err_msg added to bb_p_job_validate().

  • openapi - added flags to slurm_openapi_p_get_specification(). Existing plugins only need to update their prototype for the function as manipulating the flags pointer is optional.

  • openapi - Added OAS_FLAG_MANGLE_OPID to allow plugins to request that the operationId of path methods be mangled with the full path to ensure uniqueness.

  • openapi/[db]v0.0.36 - Plugins have been marked as deprecated and will be removed in the next major release.

  • switch plugins - add switch_g_job_complete() function.

6.9.6 Highlights of Slurm version 21.08

6.9.6.1 Highlights
  • Removed gres/mic plugin used to support Xeon Phi coprocessors.

  • Add LimitFactor to the QOS. A float that is factored into an associations GrpTRES limits. For example, if the LimitFactor is 2, then an association with a GrpTRES of 30 CPUs, would be allowed to allocate 60 CPUs when running under this QOS.

  • A job’s next_step_id counter now resets to 0 after being requeued. Previously, the step id’s would continue from the job’s last run.

  • API change: Removed slurm_kill_job_msg and modified the function signature for slurm_kill_job2. slurm_kill_job2 should be used instead of slurm_kill_job_msg.

  • AccountingStoreFlags=job_script allows you to store the job’s batch script.

  • AccountingStoreFlags=job_env allows you to store the job’s env vars.

  • Removed sched/hold plugin.

  • cli_filter/lua, jobcomp/lua, job_submit/lua now load their scripts from the same directory as the slurm.conf file (and thus now will respect changes to the SLURM_CONF environment variable).

  • SPANK - call slurm_spank_init if defined without slurm_spank_slurmd_exit in slurmd context.

  • Add new PLANNED state to a node to represent when the backfill scheduler has it planned to be used in the future instead of showing as IDLE. sreport also has changed it’s cluster utilization report column name from 'Reserved' to 'Planned' to match this nomenclature.

  • Put node into INVAL state upon registering with an invalid node configuration. Node must register with a valid configuration to continue.

  • Remove SLURM_DIST_LLLP environment variable in favor of just SLURM_DISTRIBUTION.

  • Make --cpu-bind=threads default for --threads-per-core — can be overridden by the CLI or an environment variable.

  • slurmd - allow multiple comma-separated controllers to be specified in configless mode with --conf-server

  • Manually powering down of nodes with scontrol now ignores SuspendExc<Nodes|Parts>.

  • Distinguish queued reboot requests (REBOOT@) from issued reboots (REBOOT^).

  • auth/jwt - add support for RS256 tokens. Also permit the username in the 'username' field in addition to the 'sun' (Slurm UserName) field.

  • service files - change dependency to network-online rather than just network to ensure DNS and other services are available.

  • Add "Extra" field to node to store extra information other than a comment.

  • Add ResumeTimeout, SuspendTimeout and SuspendTime to Partitions.

  • The memory.force_empty parameters is no longer set by jobacct_gather/cgroup when deleting the cgroup`. This previously caused a significant delay (~2s) when terminating a job, and is not believed to have provided any perceivable benefit. However, this may lead to slightly higher reported kernel mem page cache usage since the kernel cgroup memory is no longer freed immediately.

  • TaskPluginParam=verbose is now treated as a default. Previously it would be applied regardless of the job specifying a --cpu-bind.

  • Add node_reg_mem_percent SlurmctldParameter to define percentage of memory nodes are allowed to register with.

  • Define and separate node power state transitions. Previously a powering down node was in both states, POWERING_OFF and POWERED_OFF. These are now separated. e.g. IDLE+POWERED_OFF (IDLE~) → IDLE+POWERING_UP (IDLE#) - Manual power up or allocation → IDLEIDLE+POWER_DOWN (IDLE!) - Node waiting for power down → IDLE+POWERING_DOWN (IDLE%) - Node powering down → IDLE+POWERED_OFF (IDLE~) - Powered off

  • Some node state flag names have changed. These would be noticeable for example if using a state flag to filter nodes with sinfo. e.g. POWER_UPPOWERING_UP POWER_DOWNPOWERED_DOWN POWER_DOWN now represents a node pending power down

  • Create a new process called slurmscriptd which runs PrologSlurmctld and EpilogSlurmctld. This avoids fork() calls from slurmctld, and can avoid performance issues if the slurmctld has a large memory footprint.

  • Pass JSON of job to node mappings to ResumeProgram.

  • QOS accrue limits only apply to the job QOS, not partition QOS.

  • Any return code from SPANK plugin or SPANK function that is not SLURM_SUCCESS (zero) will be considered to be an error. Previously, only negative return codes were considered an error.

  • Add support for automatically detecting and broadcasting executable shared object dependencies for sbcast and srun --bcast.

  • All SPANK error codes now start at 3000. Where previously SPANK would give a return code of 1, it will now return 3000. This change will break ABI compatibility with SPANK plugins compiled against older version of Slurm.

  • SPANK plugins are now required to match the current Slurm release, and must be recompiled for each new Slurm major release. (They do not need to be recompiled when upgrading between maintenance releases.)

  • SLURM_NODE_ALIASES now has brackets around the node’s address to be able to distinguish IPv6 addresses. e.g. <node_name>:[<node_addr>]:<node_hostname>

  • The job_container/tmpfs plugin now requires PrologFlags=contain to be set in slurm.conf.

  • Limit max_script_size to 512 MB.

6.9.6.2 Configuration File Changes (for details, see the appropriate man page)
  • Errors detected in the parser handlers due to invalid configurations are now propagated and can lead to fatal (and thus exit) the calling process.

  • Enforce a valid configuration for AccountingStorageEnforce in slurm.conf. If the configuration is invalid, then an error message will be printed and the command or daemon (including slurmctld) will not run.

  • Removed AccountingStoreJobComment option. Please update your config to use AccountingStoreFlags=job_comment instead.

  • Removed DefaultStorage{Host,Loc,Pass,Port,Type,User} options.

  • Removed CacheGroups, CheckpointType, JobCheckpointDir, MemLimitEnforce, SchedulerPort, SchedulerRootFilter options.

  • Added Script to DebugFlags for debugging slurmscriptd (the process that runs slurmctld scripts such as PrologSlurmctld and EpilogSlurmctld).

  • Rename SbcastParameters to BcastParameters.

  • systemd service files - add new -s option to each daemon which will change the working directory even with the -D option. (Ensures any core files are placed in an accessible location, rather than /.)

  • Added BcastParameters=send_libs and BcastExclude options.

  • Remove the (incomplete) burst_buffer/generic plugin.

  • Make SelectTypeParameters=CR_Core_Memory default for cons_tres and cons_res.

  • Remove support for TaskAffinity=yes in cgroup.conf. Adding task/affinity to TaskPlugins in slurm.conf is strongly recommended instead.

6.9.6.3 Command Changes (for details, see the appropriate man page)
  • Changed the --format handling for negative field widths (left justified) to apply to the column headers as well as the printed fields.

  • Invalidate multiple partition requests when using partition based associations.

  • scrontab - create the temporary file under the TMPDIR environment variable (if set), otherwise continue to use TmpFS as configured in slurm.conf.

  • sbcast / srun --bcast - removed support for zlib compression. lz4 is vastly superior in performance, and (counter-intuitively) zlib could provide worse performance than no compression at all on many systems.

  • sacctmgr - changed column headings to ParentID and ParentName instead of Par ID and "Par Name` respectively.

  • SALLOC_THREADS_PER_CORE and SBATCH_THREADS_PER_CORE have been added as input environment variables for salloc and sbatch, respectively. They do the same thing as --threads-per-core.

  • Don’t display node’s comment with scontrol show nodes unless set.

  • Added SLURM_GPUS_ON_NODE environment variable within each job/step.

  • sreport - change to sorting TopUsage by the --tres option.

  • slurmrestd - do not run allow operation as SlurmUser/root by default.

  • scontrol show node now shows State as base_state+flags instead of shortened state with flags appended. eg. IDLE#IDLE+POWERING_UP. Also POWER state flag string is POWERED_DOWN.

  • scrontab - add ability to update crontab from a file or standard input.

  • scrontab - added ability to set and expand variables.

  • Make srun sensitive to BcastParameters.

  • Added sbcast/srun --send-libs, sbcast --exclude and srun --bcast-exclude.

  • Changed ReqMem field in sacct to match memory from ReqTRES. It now shows the requested memory of the whole job with a letter appended indicating units (M for megabytes, G for gigabytes, etc.). ReqMem is only displayed for the job, since the step does not have requested TRES. Previously ReqMem was also displayed for the step but was just displaying ReqMem for the job.

6.9.6.4 API Changes
  • jobcomp plugin: change plugin API to jobcomp_p_*().

  • sched plugin: change plugin API to sched_p_*() and remove slurm_sched_p_initial_priority() call.

  • step_ctx code has been removed from the api.

  • slurm_stepd_get_info()/stepd_get_info() has been removed from the api.

  • The v0.0.35 OpenAPI plugin has now been marked as deprecated. Please convert your requests to the v0.0.37 OpenAPI plugin.

6.10 Creating containers from current HPC environment

Usually users use environment modules to adjust their environment (that is, environment variables like PATH, LD_LIBRARY_PATH, MANPATH etc.) to pick exactly the tools and libraries they need for their work. The same can be achieved with containers by including only those components in a container that are part of this environment. This functionality is now provided using the spack and singularity applications.

7 Removed and deprecated features and packages

This section lists features and packages that were removed from SUSE Linux Enterprise for High-Performance Computing or will be removed in upcoming versions.

7.1 Removed features and packages

The following features and packages have been removed in this release.

  • Python 2 bindings for genders has been removed. These are now provided for Python 3.

  • Ganglia is not supported anymore in 15 SP4. It has been replaced with Grafana (https://grafana.com/)

  • Due to a lack of usage by customers, some library packages have been removed from the HPC module in SLE HPC 15 SP4. On SUSE Linux Enterprise you can build your own library using spack. These libraries will continue to be available through SUSE Package Hub. The following libraries have been removed:

    • boost

    • adios

    • gsl

    • fftw3

    • hypre

    • metis

    • mumps

    • netcdf

    • ocr

    • petsc

    • ptscotch

    • scalapack

    • superlu

    • trilinos

7.2 Deprecated features and packages

The following features and packages are deprecated and will be removed in a future version of SUSE Linux Enterprise for High-Performance Computing.

8 Obtaining source code

This SUSE product includes materials licensed to SUSE under the GNU General Public License (GPL). The GPL requires SUSE to provide the source code that corresponds to the GPL-licensed material. The source code is available for download at https://www.suse.com/download/sle-hpc/ on Medium 2. For up to three years after distribution of the SUSE product, upon request, SUSE will mail a copy of the source code. Send requests by e-mail to sle_source_request@suse.com. SUSE may charge a reasonable fee to recover distribution costs.

Print this page