Skip to content

Commit b6f83a8

Browse files
author
Caspar van Leeuwen
committed
Merge branch 'main' into reprod_scripts
2 parents 20dea7e + 6a0b96a commit b6f83a8

12 files changed

Lines changed: 184 additions & 165 deletions

.github/workflows/test_licenses.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.

EESSI-extend-easybuild.eb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,12 @@ if mode() == "unload" or mode() == "dependencyCk" or convertToCanonical(easybuil
244244
-- Set environment variables that are EESSI version specific
245245
if convertToCanonical(eessi_version) > convertToCanonical("2023.06") then
246246
setenv ("EASYBUILD_PREFER_PYTHON_SEARCH_PATH", "EBPYTHONPREFIXES")
247+
-- Note: make sure to *not* use same setting for both module-search-path-headers and search-path-cpp-headers
248+
-- EasyBuild configuration options, since this leads to trouble because (for example) $C_INCLUDE_PATH
249+
-- only includes paths for the *direct* dependencies (not transitive dependencies)
250+
-- when using EasyBuild v5.2.1 or earlier
247251
setenv ("EASYBUILD_MODULE_SEARCH_PATH_HEADERS", "include_paths")
248-
setenv ("EASYBUILD_SEARCH_PATH_CPP_HEADERS", "include_paths")
252+
setenv ("EASYBUILD_SEARCH_PATH_CPP_HEADERS", "flags")
249253
end
250254
end
251255

create_tarball.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ for subdir in ${sw_subdirs}; do
9191
echo "handling ${package_version}"
9292
find ${eessi_version}/software/${os}/${subdir}/software/${package_version} -maxdepth 0 -type d \! -name '.wh.*' >> ${files_list}
9393
# if there is a directory for this installation in the stack's reprod directory, include that too
94-
if [ -d ${eessi_version}/software/${os}/${subdir}/reprod ]; then
94+
if [ -d ${eessi_version}/software/${os}/${subdir}/reprod/${package_version} ]; then
9595
find ${eessi_version}/software/${os}/${subdir}/reprod/${package_version} -maxdepth 0 -type d \! -name '.wh.*' >> ${files_list}
9696
fi
9797
done

eb_hooks.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
CPU_TARGET_ICELAKE = 'x86_64/intel/icelake'
4141
CPU_TARGET_SAPPHIRE_RAPIDS = 'x86_64/intel/sapphirerapids'
4242
CPU_TARGET_ZEN4 = 'x86_64/amd/zen4'
43+
CPU_TARGET_ZEN5 = 'x86_64/amd/zen5'
4344

4445
EESSI_RPATH_OVERRIDE_ATTR = 'orig_rpath_override_dirs'
4546
EESSI_MODULE_ONLY_ATTR = 'orig_module_only'
@@ -697,7 +698,7 @@ def pre_fetch_hook_check_installation_path(self, *args, **kwargs):
697698
strict_eessi_installation = (
698699
bool(re.search(EESSI_INSTALLATION_REGEX, self.installdir)) or
699700
self.installdir.startswith(HOST_INJECTIONS_LOCATION))
700-
if strict_eessi_installation:
701+
if strict_eessi_installation and not os.getenv("EESSI_OVERRIDE_STRICT_INSTALLPATH_CHECK"):
701702
dependency_names = self.cfg.dependency_names()
702703
if self.cfg.name in accelerator_deps or any(dep in dependency_names for dep in accelerator_deps):
703704
# Make sure the path is an accelerator location
@@ -960,10 +961,11 @@ def pre_configure_hook(self, *args, **kwargs):
960961
self.cfg.update('configopts', 'CPPFLAGS="-DOF=_Z_OF ${CPPFLAGS}"')
961962

962963

963-
def pre_configure_hook_BLIS_a64fx(self, *args, **kwargs):
964+
def pre_configure_hook_BLIS(self, *args, **kwargs):
964965
"""
965-
Pre-configure hook for BLIS when building for A64FX to fix "Illegal instruction" problem
966-
- add -DCACHE_SECTOR_SIZE_READONLY to $CFLAGS for BLIS 0.9.0, cfr. https://github.com/flame/blis/issues/800
966+
Pre-configure hook for BLIS
967+
- fix "Illegal instruction" problem on A64FX by adding -DCACHE_SECTOR_SIZE_READONLY to $CFLAGS for BLIS 0.9.0, cfr. https://github.com/flame/blis/issues/800
968+
- fall back to zen3 for zen5 to solve "Unable to automatically detect hardware type" error
967969
"""
968970
if self.name == 'BLIS':
969971
cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR')
@@ -974,6 +976,8 @@ def pre_configure_hook_BLIS_a64fx(self, *args, **kwargs):
974976
cflags_var = 'CFLAGS="$CFLAGS -DCACHE_SECTOR_SIZE_READONLY"'
975977
config_target = config_opts[-1]
976978
self.cfg['configopts'] = ' '.join(config_opts[:-1] + [cflags_var, config_target])
979+
if self.version in ('1.0', '1.1', '2.0') and cpu_target == CPU_TARGET_ZEN5:
980+
self.cfg['cpu_architecture'] = 'zen3'
977981
else:
978982
raise EasyBuildError("BLIS-specific hook triggered for non-BLIS easyconfig?!")
979983

@@ -1089,7 +1093,7 @@ def pre_configure_hook_graphviz(self, *args, **kwargs):
10891093
# Replace --with-ltdl-lib and --with-zlibdir options defined in the EC to point to compat layer
10901094
lib_dir = os.path.join(usr_dir, 'lib64')
10911095
new_items = set()
1092-
# Add to the new_items all the old items except the `--with-ltdl-lib` and `--with-ltdl-lib` for
1096+
# Add to the new_items all the old items except the `--with-ltdl-lib` and `--with-ltdl-lib` for
10931097
# which we fix the lib dir to lib64 instead of lib
10941098
for item in old_items:
10951099
if item.startswith('--with-ltdl-lib'):
@@ -1483,7 +1487,7 @@ def pre_test_hook_ignore_failing_tests_OpenBabel_a64fx(self, *args, **kwargs):
14831487
Pre-test hook for OpenBabel: skip timeout tests for OpenBabel 3.1.1 on aarch64/a64fx
14841488
see https://github.com/EESSI/software-layer/pull/1332#issuecomment-3877255228
14851489
the `testroundtrip.py` test reads and writes tens of thousands of small files.
1486-
The test works fine when manually ran with EESSI-extend either directly or inside an eessi_container, but
1490+
The test works fine when manually ran with EESSI-extend either directly or inside an eessi_container, but
14871491
consistently fails with the bot
14881492
"""
14891493
cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR')
@@ -1873,7 +1877,7 @@ def post_easyblock_hook(self, *args, **kwargs):
18731877
}
18741878

18751879
PRE_CONFIGURE_HOOKS = {
1876-
'BLIS': pre_configure_hook_BLIS_a64fx,
1880+
'BLIS': pre_configure_hook_BLIS,
18771881
'CUDA-Samples': pre_configure_hook_CUDA_Samples_test_remove,
18781882
'GObject-Introspection': pre_configure_hook_gobject_introspection,
18791883
'Extrae': pre_configure_hook_extrae,

eessi_container.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,7 +828,7 @@ if [[ ! -z ${http_proxy} ]]; then
828828
;;
829829
2)
830830
# target not found - safe to add
831-
if [[ -z ${BIND_PATH} ]]; then
831+
if [[ -z ${BIND_PATHS} ]]; then
832832
BIND_PATHS="${src}:${target}"
833833
else
834834
BIND_PATHS="${BIND_PATHS},${src}:${target}"

init/eessi_archdetect.sh

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ cpupath(){
9393
# Identify the best matching CPU architecture from a list of supported specifications for the host CPU
9494
# Return the path to the installation files in EESSI of the best matching architecture
9595
local cpu_arch_spec=()
96-
96+
9797
# Identify the host CPU architecture
9898
local machine_type=${EESSI_MACHINE_TYPE:-$(uname -m)}
9999
log "DEBUG" "cpupath: Host CPU architecture identified as '$machine_type'"
100-
100+
101101
# Populate list of supported specs for this architecture
102102
case $machine_type in
103103
"x86_64") local spec_file="eessi_arch_x86.spec";;
@@ -109,14 +109,28 @@ cpupath(){
109109
# spec files are located in a subfolder with this script
110110
local base_dir=$(dirname $(readlink -f $0))
111111
update_arch_specs "$base_dir/arch_specs/${spec_file}"
112-
112+
113113
# Identify the host CPU vendor
114114
local cpu_vendor=$(get_cpuinfo "vendor[ _]id")
115115
if [ "${cpu_vendor}" == "" ]; then
116116
cpu_vendor=$(get_cpuinfo "cpu[ _]implementer")
117117
fi
118118
log "DEBUG" "cpupath: CPU vendor of host system: '$cpu_vendor'"
119-
119+
# Construct a list of known cpu vendors
120+
local cpu_vendors=()
121+
for spec in "${cpu_arch_spec[@]}"; do
122+
eval "cols=$spec"
123+
cpu_vendors+=("${cols[1]}")
124+
done
125+
log "DEBUG" "cpupath: Known CPU vendors: ${cpu_vendors[*]}"
126+
# For ARM, if CPU vendor is as-yet-unknown fall back to a default ARM vendor 0x41
127+
if [ "${machine_type}" == "aarch64" ]; then
128+
if [[ " ${cpu_vendors[*]} " != *" $cpu_vendor "* ]]; then
129+
log "DEBUG" "cpupath: Unknown ARM CPU vendor '$cpu_vendor', falling back to '0x41'"
130+
cpu_vendor="0x41"
131+
fi
132+
fi
133+
120134
# Identify the host CPU flags or features
121135
# cpuinfo systems print different line identifiers, eg features, instead of flags
122136
local cpu_flag_tag;
@@ -132,14 +146,14 @@ cpupath(){
132146
else
133147
cpu_flag_tag='flags'
134148
fi
135-
149+
136150
local cpu_flags=$(get_cpuinfo "$cpu_flag_tag")
137151
log "DEBUG" "cpupath: CPU flags of host system: '$cpu_flags'"
138-
152+
139153
# Default to generic CPU
140154
local best_arch_match="$machine_type/generic"
141155
local all_arch_matches=$best_arch_match
142-
156+
143157
# Iterate over the supported CPU specifications to find the best match for host CPU
144158
# Order of the specifications matters, the last one to match will be selected
145159
for arch in "${cpu_arch_spec[@]}"; do
@@ -151,7 +165,7 @@ cpupath(){
151165
log "DEBUG" "cpupath: host CPU best match updated to $best_arch_match"
152166
fi
153167
done
154-
168+
155169
if [ "allx" == "${CPUPATH_RESULT}x" ]; then
156170
log "INFO" "cpupath: all matches for host CPU: $all_arch_matches"
157171
echo "$all_arch_matches"
@@ -219,4 +233,3 @@ case "$ARGUMENT" in
219233
"accelpath") accelpath; exit;;
220234
*) echo "$USAGE"; log "ERROR" "Missing <action> argument (possible actions: 'cpupath', 'accelpath')";;
221235
esac
222-

licenses/README.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

licenses/licenses.json

Lines changed: 0 additions & 10 deletions
This file was deleted.

licenses/spdx.py

Lines changed: 0 additions & 100 deletions
This file was deleted.

scripts/gpu_support/nvidia/easystacks/2025.06/eessi-2025.06-eb-5.2.0-CUDA-host-injections.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,10 @@ easyconfigs:
1515
options:
1616
accept-eula-for: cuDNN
1717
cuda-sanity-check-accept-missing-ptx: True
18+
- CUDA-12.9.1.eb:
19+
options:
20+
accept-eula-for: CUDA
21+
- cuDNN-9.15.0.57-CUDA-12.9.1.eb:
22+
options:
23+
accept-eula-for: cuDNN
24+
cuda-sanity-check-accept-missing-ptx: True

0 commit comments

Comments
 (0)