From cfd80b18b1014f63462eb6ee6cf388695c70f362 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 23 Jul 2026 11:19:00 +0200 Subject: [PATCH 1/6] In 2023.06 don't fail for missing PTX for CUDA install, allow overriding the easystacks directory --- ...eessi-2023.06-eb-5.3.0-2023a-CUDA-host-injections.yml | 2 ++ scripts/gpu_support/nvidia/install_cuda_and_libraries.sh | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/gpu_support/nvidia/easystacks/2023.06/eessi-2023.06-eb-5.3.0-2023a-CUDA-host-injections.yml b/scripts/gpu_support/nvidia/easystacks/2023.06/eessi-2023.06-eb-5.3.0-2023a-CUDA-host-injections.yml index 83e68077..a618877c 100644 --- a/scripts/gpu_support/nvidia/easystacks/2023.06/eessi-2023.06-eb-5.3.0-2023a-CUDA-host-injections.yml +++ b/scripts/gpu_support/nvidia/easystacks/2023.06/eessi-2023.06-eb-5.3.0-2023a-CUDA-host-injections.yml @@ -7,3 +7,5 @@ easyconfigs: # needed to enforce acceptance of EULA in cuDNN easyblock, # see https://github.com/easybuilders/easybuild-easyblocks/pull/3473 include-easyblocks-from-commit: 11afb88ec55e0ca431cbe823696aa43e2a9bfca8 + # Don't fail for missing PTX + cuda-sanity-check-accept-missing-ptx: True diff --git a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh index b11bd2c0..d338b65c 100755 --- a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh +++ b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh @@ -92,7 +92,14 @@ echo "Created temporary directory '${tmpdir}'" # Store MODULEPATH so it can be restored at the end of each loop iteration SAVE_MODULEPATH=${MODULEPATH} -for EASYSTACK_FILE in ${TOPDIR}/easystacks/eessi-*CUDA*.yml; do +# Check if NVIDIA_EASYSTACKS_DIRECTORY is already set and not empty +if [ -n "${NVIDIA_EASYSTACKS_DIRECTORY}" ]; then + echo_yellow "Using environment override NVIDIA_EASYSTACKS_DIRECTORY: ${EASYSTACKS_DIRECTORY}" +else + NVIDIA_EASYSTACKS_DIRECTORY="${TOPDIR}" + echo_green "NVIDIA_EASYSTACKS_DIRECTORY environment variable override is not set, using default ${EASYSTACKS_DIRECTORY}" +fi +for EASYSTACK_FILE in ${NVIDIA_EASYSTACKS_DIRECTORY}/easystacks/eessi-*CUDA*.yml; do echo -e "Processing easystack file ${EASYSTACK_FILE}...\n\n" # determine version of EasyBuild module to load based on EasyBuild version included in name of easystack file From 081e9caceb77543465c4ebd6572f1d8286b5b292 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 23 Jul 2026 11:45:02 +0200 Subject: [PATCH 2/6] Make sure easystacks actually exist --- .../nvidia/install_cuda_and_libraries.sh | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh index d338b65c..c954f4f0 100755 --- a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh +++ b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh @@ -94,12 +94,16 @@ SAVE_MODULEPATH=${MODULEPATH} # Check if NVIDIA_EASYSTACKS_DIRECTORY is already set and not empty if [ -n "${NVIDIA_EASYSTACKS_DIRECTORY}" ]; then - echo_yellow "Using environment override NVIDIA_EASYSTACKS_DIRECTORY: ${EASYSTACKS_DIRECTORY}" + echo_yellow "Using environment override NVIDIA_EASYSTACKS_DIRECTORY: ${NVIDIA_EASYSTACKS_DIRECTORY}" else - NVIDIA_EASYSTACKS_DIRECTORY="${TOPDIR}" - echo_green "NVIDIA_EASYSTACKS_DIRECTORY environment variable override is not set, using default ${EASYSTACKS_DIRECTORY}" + NVIDIA_EASYSTACKS_DIRECTORY="${TOPDIR}/easystacks" + echo_green "NVIDIA_EASYSTACKS_DIRECTORY environment variable override is not set, using default ${NVIDIA_EASYSTACKS_DIRECTORY}" fi -for EASYSTACK_FILE in ${NVIDIA_EASYSTACKS_DIRECTORY}/easystacks/eessi-*CUDA*.yml; do +# Initialize an empty array to store the processed easystack paths +PROCESSED_EASYSTACK_FILES=() +for EASYSTACK_FILE in ${NVIDIA_EASYSTACKS_DIRECTORY}/eessi-*CUDA*.yml; do + # The file must exist + [ -e "${EASYSTACK_FILE}" ] || continue echo -e "Processing easystack file ${EASYSTACK_FILE}...\n\n" # determine version of EasyBuild module to load based on EasyBuild version included in name of easystack file @@ -274,6 +278,7 @@ for EASYSTACK_FILE in ${NVIDIA_EASYSTACKS_DIRECTORY}/easystacks/eessi-*CUDA*.yml fatal_error "some installation failed, please check EasyBuild logs ${PWD}/$(basename ${eb_last_log})..." else echo_green "all installations at ${EASYBUILD_INSTALLPATH}/software/... succeeded!" + PROCESSED_EASYSTACK_FILES+=("${EASYSTACK_FILE}") fi # clean up tmpdir content @@ -282,5 +287,17 @@ for EASYSTACK_FILE in ${NVIDIA_EASYSTACKS_DIRECTORY}/easystacks/eessi-*CUDA*.yml # Restore MODULEPATH for next loop iteration MODULEPATH=${SAVE_MODULEPATH} done + +# Check that we processed at least one easystack file +if [ ${#PROCESSED_EASYSTACK_FILES[@]} -gt 0 ]; then + echo_green "${#PROCESSED_EASYSTACK_FILES[@]} easystack files processed." + for EASYSTACK_FILE in "${PROCESSED_EASYSTACK_FILES[@]}"; do + echo_green "- ${EASYSTACK_FILE}" + done +else + echo_red "Error: No matching CUDA easystack files were found in ${NVIDIA_EASYSTACKS_DIRECTORY}!" + # exit 1 +fi + # Remove the temporary directory rm -rf "${tmpdir}" From 748c86c017e03339c95129a630dd0e333c71329c Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 23 Jul 2026 11:47:20 +0200 Subject: [PATCH 3/6] We want a fatal_error, not just a red echo --- scripts/gpu_support/nvidia/install_cuda_and_libraries.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh index c954f4f0..b49242c6 100755 --- a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh +++ b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh @@ -295,8 +295,7 @@ if [ ${#PROCESSED_EASYSTACK_FILES[@]} -gt 0 ]; then echo_green "- ${EASYSTACK_FILE}" done else - echo_red "Error: No matching CUDA easystack files were found in ${NVIDIA_EASYSTACKS_DIRECTORY}!" - # exit 1 + fatal_error "Error: No matching CUDA easystack files were found in ${NVIDIA_EASYSTACKS_DIRECTORY}!" fi # Remove the temporary directory From 98264246cf2db6097ac5da878d025f64e53af77b Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 23 Jul 2026 11:50:36 +0200 Subject: [PATCH 4/6] Better error message --- scripts/gpu_support/nvidia/install_cuda_and_libraries.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh index b49242c6..0c90315f 100755 --- a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh +++ b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh @@ -295,7 +295,7 @@ if [ ${#PROCESSED_EASYSTACK_FILES[@]} -gt 0 ]; then echo_green "- ${EASYSTACK_FILE}" done else - fatal_error "Error: No matching CUDA easystack files were found in ${NVIDIA_EASYSTACKS_DIRECTORY}!" + fatal_error "Error: No matching CUDA easystack files were successfully found/processed in ${NVIDIA_EASYSTACKS_DIRECTORY}!" fi # Remove the temporary directory From ac7cc2df78bb30f9fb37208c267f91f6a6d10441 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 23 Jul 2026 11:52:22 +0200 Subject: [PATCH 5/6] Tweak --- scripts/gpu_support/nvidia/install_cuda_and_libraries.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh index 0c90315f..9cb4d9f0 100755 --- a/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh +++ b/scripts/gpu_support/nvidia/install_cuda_and_libraries.sh @@ -290,7 +290,7 @@ done # Check that we processed at least one easystack file if [ ${#PROCESSED_EASYSTACK_FILES[@]} -gt 0 ]; then - echo_green "${#PROCESSED_EASYSTACK_FILES[@]} easystack files processed." + echo_green "${#PROCESSED_EASYSTACK_FILES[@]} easystack files processed:" for EASYSTACK_FILE in "${PROCESSED_EASYSTACK_FILES[@]}"; do echo_green "- ${EASYSTACK_FILE}" done From 7adee1c0355bbf8c0e4e40bf95a7a562b3a1abec Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Fri, 24 Jul 2026 14:27:25 +0200 Subject: [PATCH 6/6] Add support for Tegra platforms to our driver linker scripts --- .../nvidia/link_nvidia_host_libraries.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh b/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh index 9c87cf9d..69a520cb 100755 --- a/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh +++ b/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh @@ -130,6 +130,9 @@ get_nvlib_list() { "libglx.so" "libGLX.so" "libnvcuvid.so" + "libnvcucompat.so" + "libnvcudla.so" + "libnvcuextend.so" "libnvidia-cbl.so" "libnvidia-cfg.so" "libnvidia-compiler.so" @@ -150,10 +153,23 @@ get_nvlib_list() { "libnvidia-opencl.so" "libnvidia-opticalflow.so" "libnvidia-ptxjitcompiler.so" + "libnvidia-rmapi-tegra.so" "libnvidia-rtcore.so" "libnvidia-tls.so" "libnvidia-wfb.so" "libnvoptix.so" + "libnvos.so" + "libnvosd.so" + "libnvrm_chip.so" + "libnvrm_gpu.so" + "libnvrm_host1x.so" + "libnvrm_mem.so" + "libnvrm_stream.so" + "libnvrm_surface.so" + "libnvrm_sync.so" + "libnvsciipc.so" + "libnvsocsys.so" + "libnvtegrahv.so" "libOpenCL.so" "libOpenGL.so" "libvdpau_nvidia.so" @@ -820,4 +836,3 @@ fi # If everything went OK, show success message echo_green "Host NVIDIA GPU drivers linked successfully for EESSI" -