Skip to content

[cpeCray] [package list]

cpeCray/24.03 (cpeCray-24.03.eb)

To access module help and find out for which stacks and partitions the module is installed, use module spider cpeCray/24.03.

EasyConfig:

easyblock = 'CrayPEToolchain'

name =    'cpeCray'
version = "24.03"

homepage = 'https://pubs.cray.com'

whatis = [
    "Desription: EasyBuild toolchain using the Cray compiler wrapper with cce module (CPE release 24.03)"
]

description = """
This module is the EasyBuild toolchain that uses the Cray compiler wrapper with
the cce compiler activated. The components loaded are those of the Cray Programming
Environment (CPE) version 24.03.

The module has the same effect as loading PrgEnv-cray and cpe/24.03 should have, but
does not use either of those modules. The use of PrgEnv-cray is avoided since the
modules that it loads may change over time, reducing reproducibility, while loading
cpe/21.04 is avoided as this module is buggy and conflicts with the way the LUMI
software stack currently works. Instead, the module declares itself a member of
the PrgEnv family and sets an PE_ENV which would otherwise be set by PrgEnv-cray,
ensuring that the Cray PE will work as if those modules are loaded.
"""

toolchain = SYSTEM

PrgEnv_load   = False
PrgEnv_family = 'PrgEnv'
CPE_load      = None

import os
local_partition = os.getenv('LUMI_STACK_PARTITION')

if local_partition == 'common' or local_partition == 'L':
    cray_targets = [
        'craype-x86-rome',
        'craype-accel-host',
        'craype-network-ofi'
    ]
elif local_partition == 'C':
    cray_targets = [
        'craype-x86-milan',
        'craype-accel-host',
        'craype-network-ofi'
    ]
elif local_partition == 'G':
    cray_targets = [
        'craype-x86-trento',
        'craype-accel-amd-gfx90a',
        'craype-network-ofi'
    ]
elif local_partition == 'EAP':
    cray_targets = [
        'craype-x86-rome',
        'craype-accel-amd-gfx908',
        'craype-network-ofi'
    ]
elif local_partition == 'D':
    cray_targets = [
        'craype-x86-rome',
        # 'craype-accel-nvidia80', # It appears we can only load this module after loading cudatoolkit or nvhpc
        'craype-accel-host',
        'craype-network-ofi'
    ]

dependencies = [
    ('cce/17.0.1', EXTERNAL_MODULE),
    ('craype/2.7.31.11', EXTERNAL_MODULE),
    ('cray-mpich/8.1.29', EXTERNAL_MODULE),
    ('cray-libsci/24.03.0', EXTERNAL_MODULE),
    ('cray-dsmml/0.3.0', EXTERNAL_MODULE),
    ('perftools-base/24.03.0', EXTERNAL_MODULE),
    ('xpmem', EXTERNAL_MODULE),
]

if local_partition == 'G' or local_partition == 'EAP':
    dependencies.insert( 0, ('rocm/6.0.3', EXTERNAL_MODULE) )

moduleclass = 'toolchain'

[cpeCray] [package list]