Skip to content

{compiler,toolchain}[GCCcore-13.2.0] nvidia-compilers, NVHPC 25.7 CUDA-12.4#24436

Closed
adammccartney wants to merge 4 commits intoeasybuilders:developfrom
adammccartney:nvidia-compilers257-GCCcore-13.2.0
Closed

{compiler,toolchain}[GCCcore-13.2.0] nvidia-compilers, NVHPC 25.7 CUDA-12.4#24436
adammccartney wants to merge 4 commits intoeasybuilders:developfrom
adammccartney:nvidia-compilers257-GCCcore-13.2.0

Conversation

@adammccartney
Copy link
Contributor

@adammccartney adammccartney commented Nov 1, 2025

Draft! -> intended for use in a discussion

Based on #23125,
this tries out one possible variation of an easyconfig for the nvidia compilers and NVHPC
toolchain. That would be suitable for use with EESSI/2023.06

Requires:
+ easybuilders/easybuild-easyblocks#3788
+ easybuilders/easybuild-framework#4927

lexming and others added 4 commits June 18, 2025 11:07
Based on [easybuilders#23125](easybuilders#23125),
this tries out one possible variation of an easyconfig for the
nvidia-compilers. This is to make the module compatible with the
defaults in EESSI/2023.06. It swaps out the SYSTEM toolchain for
GCCcore-13.2.0 and uses that same gcccore version in the other deps.
Also default to CUDA-12.4.

Requires:
+ easybuilders/easybuild-easyblocks#3788
+ easybuilders/easybuild-framework#4927
@github-actions
Copy link

github-actions bot commented Nov 1, 2025

Updated software NVHPC-25.1.eb

Diff against NVHPC-25.3-CUDA-12.8.0.eb

easybuild/easyconfigs/n/NVHPC/NVHPC-25.3-CUDA-12.8.0.eb

diff --git a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3-CUDA-12.8.0.eb b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1.eb
index ccafff8d0a..7c7b0c741f 100644
--- a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3-CUDA-12.8.0.eb
+++ b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1.eb
@@ -1,6 +1,5 @@
 name = 'NVHPC'
-version = '25.3'
-versionsuffix = '-CUDA-%(cudaver)s'
+version = '25.1'
 
 homepage = 'https://developer.nvidia.com/hpc-sdk/'
 description = """Complete toolchain based on NVIDIA HPC SDK. Includes C, C++ and FORTRAN
@@ -17,19 +16,18 @@ sources = [local_tarball_tmpl % '%(arch)s']
 checksums = [
     {
         local_tarball_tmpl % 'aarch64':
-            'a2b86cf5141c0a9b0925999521693981451a8d2403367c36c46238163be6f2bb',
+            '0e1d694d54d44559155024d5bab4ca6764eba52d3f27b89f5c252416976e0360',
         local_tarball_tmpl % 'x86_64':
-            'e2b2c911478a5db6a15d1fd258a8c4004dbfccf6f32f4132fe142a24fb7e6f8f',
+            '0813791f8363f4c493db7891b00396ce522cb73910279b8f18a440aedda6727c',
     }
 ]
 
 dependencies = [
-    ('CUDA', '12.8.0'),
-    ('nvidia-compilers', version, versionsuffix),
+    ('nvidia-compilers', version),
 ]
 
-# NVHPC needs CUDA to work. This easyconfig uses external CUDA from EasyBuild.
-# The default CUDA version used by NVHPC will be the version of loaded CUDA module
+# NVHPC needs CUDA to work. This easyconfig uses CUDA bundled in NVHPC
+# The default CUDA version used by NVHPC is the one defined in nvidia-compilers
 
 # The default Compute Capability used by NVHPC is the one defined in nvidia-compilers (if any)
 
Diff against NVHPC-25.1-CUDA-12.6.0.eb

easybuild/easyconfigs/n/NVHPC/NVHPC-25.1-CUDA-12.6.0.eb

diff --git a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1-CUDA-12.6.0.eb b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1.eb
index d34825a8c2..7c7b0c741f 100644
--- a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1-CUDA-12.6.0.eb
+++ b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1.eb
@@ -1,6 +1,5 @@
 name = 'NVHPC'
 version = '25.1'
-versionsuffix = '-CUDA-%(cudaver)s'
 
 homepage = 'https://developer.nvidia.com/hpc-sdk/'
 description = """Complete toolchain based on NVIDIA HPC SDK. Includes C, C++ and FORTRAN
@@ -24,12 +23,11 @@ checksums = [
 ]
 
 dependencies = [
-    ('CUDA', '12.6.0'),
-    ('nvidia-compilers', version, versionsuffix),
+    ('nvidia-compilers', version),
 ]
 
-# NVHPC needs CUDA to work. This easyconfig uses external CUDA from EasyBuild.
-# The default CUDA version used by NVHPC will be the version of loaded CUDA module
+# NVHPC needs CUDA to work. This easyconfig uses CUDA bundled in NVHPC
+# The default CUDA version used by NVHPC is the one defined in nvidia-compilers
 
 # The default Compute Capability used by NVHPC is the one defined in nvidia-compilers (if any)
 
Diff against NVHPC-24.11-CUDA-12.6.0.eb

easybuild/easyconfigs/n/NVHPC/NVHPC-24.11-CUDA-12.6.0.eb

diff --git a/easybuild/easyconfigs/n/NVHPC/NVHPC-24.11-CUDA-12.6.0.eb b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1.eb
index 546b28e714..7c7b0c741f 100644
--- a/easybuild/easyconfigs/n/NVHPC/NVHPC-24.11-CUDA-12.6.0.eb
+++ b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1.eb
@@ -1,73 +1,34 @@
 name = 'NVHPC'
-version = '24.11'
-versionsuffix = '-CUDA-%(cudaver)s'
+version = '25.1'
 
 homepage = 'https://developer.nvidia.com/hpc-sdk/'
-description = """C, C++ and Fortran compilers included with the NVIDIA HPC SDK (previously: PGI)"""
+description = """Complete toolchain based on NVIDIA HPC SDK. Includes C, C++ and FORTRAN
+compilers (nvidia-compilers), an MPI implementation based on OpenMPI (NVHPCX)
+and math libraries based on OpenBLAS and ScaLAPACK."""
 
 toolchain = SYSTEM
 
-local_tarball_tmpl = 'nvhpc_2024_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz'
 # By downloading, you accept the HPC SDK Software License Agreement
 # https://docs.nvidia.com/hpc-sdk/eula/index.html
-# accept_eula = True
+local_tarball_tmpl = 'nvhpc_2025_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz'
 source_urls = ['https://developer.download.nvidia.com/hpc-sdk/%(version)s/']
 sources = [local_tarball_tmpl % '%(arch)s']
 checksums = [
     {
         local_tarball_tmpl % 'aarch64':
-            'f2f64e5dec5e90dad5e12a31a992172b0aa19abf872ef1c54a1a437c7008eefb',
+            '0e1d694d54d44559155024d5bab4ca6764eba52d3f27b89f5c252416976e0360',
         local_tarball_tmpl % 'x86_64':
-            '0c27d66ed0e2d3007d30ac904922a9abf96475197dc0f4dcc6316d235a1dc0c3',
+            '0813791f8363f4c493db7891b00396ce522cb73910279b8f18a440aedda6727c',
     }
 ]
 
-local_gccver = '13.3.0'
 dependencies = [
-    ('GCCcore', local_gccver),
-    ('binutils', '2.42', '', ('GCCcore', local_gccver)),
-    # This is necessary to avoid cases where just libnuma.so.1 is present in the system and -lnuma fails
-    ('numactl', '2.0.18', '', ('GCCcore', local_gccver)),
-    ('CUDA', '12.6.0', '', SYSTEM),
+    ('nvidia-compilers', version),
 ]
 
-module_add_cuda = False
+# NVHPC needs CUDA to work. This easyconfig uses CUDA bundled in NVHPC
+# The default CUDA version used by NVHPC is the one defined in nvidia-compilers
 
-# specify default CUDA version that should be used by NVHPC
-# should match one of the CUDA versions that are included with this NVHPC version
-# (see install_components/Linux_x86_64/$version/cuda/) where $version is the NVHPC version
-# this version can be tweaked from the EasyBuild command line with
-# --try-amend=default_cuda_version="11.0" (for example)
-default_cuda_version = '%(cudaver)s'
+# The default Compute Capability used by NVHPC is the one defined in nvidia-compilers (if any)
 
-# NVHPC EasyBlock supports some features, which can be set via CLI or this easyconfig.
-# The following list gives examples for the easyconfig
-#
-# NVHPC needs CUDA to work. Two options are available: 1) Use NVHPC-bundled CUDA, 2) use system CUDA
-# 1) Bundled CUDA
-#    If no easybuild dependency to CUDA is present, the bundled CUDA is taken. A version needs to be specified with
-#      default_cuda_version = "11.0"
-#    in this easyconfig file; alternatively, it can be specified through the command line during installation with
-#      --try-amend=default_cuda_version="10.2"
-# 2) CUDA provided via EasyBuild
-#    Use CUDA as a dependency, for example
-#      dependencies = [('CUDA', '11.5.0')]
-#    The parameter default_cuda_version still can be set as above.
-#    If not set, it will be deduced from the CUDA module (via $EBVERSIONCUDA)
-#
-# Define a NVHPC-default Compute Capability
-#   cuda_compute_capabilities = "8.0"
-# Can also be specified on the EasyBuild command line via --cuda-compute-capabilities=8.0
-# Only single values supported, not lists of values!
-#
-# Options to add/remove things to/from environment module (defaults shown)
-#   module_byo_compilers = False  # Remove compilers from PATH (Bring-your-own compilers)
-#   module_nvhpc_own_mpi = False  # Add NVHPC's own pre-compiled OpenMPI
-#   module_add_math_libs = False  # Add NVHPC's math libraries (which should be there from CUDA anyway)
-#   module_add_profilers = False  # Add NVHPC's NVIDIA Profilers
-#   module_add_nccl = False       # Add NVHPC's NCCL library
-#   module_add_nvshmem = False    # Add NVHPC's NVSHMEM library
-#   module_add_cuda = False       # Add NVHPC's bundled CUDA
-
-# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS)
-moduleclass = 'compiler'
+moduleclass = 'toolchain'

Updated software NVHPC-25.3.eb

Diff against NVHPC-25.3-CUDA-12.8.0.eb

easybuild/easyconfigs/n/NVHPC/NVHPC-25.3-CUDA-12.8.0.eb

diff --git a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3-CUDA-12.8.0.eb b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3.eb
index ccafff8d0a..4c6f1148c3 100644
--- a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3-CUDA-12.8.0.eb
+++ b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3.eb
@@ -1,6 +1,5 @@
 name = 'NVHPC'
 version = '25.3'
-versionsuffix = '-CUDA-%(cudaver)s'
 
 homepage = 'https://developer.nvidia.com/hpc-sdk/'
 description = """Complete toolchain based on NVIDIA HPC SDK. Includes C, C++ and FORTRAN
@@ -24,12 +23,11 @@ checksums = [
 ]
 
 dependencies = [
-    ('CUDA', '12.8.0'),
-    ('nvidia-compilers', version, versionsuffix),
+    ('nvidia-compilers', version),
 ]
 
-# NVHPC needs CUDA to work. This easyconfig uses external CUDA from EasyBuild.
-# The default CUDA version used by NVHPC will be the version of loaded CUDA module
+# NVHPC needs CUDA to work. This easyconfig uses CUDA bundled in NVHPC
+# The default CUDA version used by NVHPC is the one defined in nvidia-compilers
 
 # The default Compute Capability used by NVHPC is the one defined in nvidia-compilers (if any)
 
Diff against NVHPC-25.1-CUDA-12.6.0.eb

easybuild/easyconfigs/n/NVHPC/NVHPC-25.1-CUDA-12.6.0.eb

diff --git a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1-CUDA-12.6.0.eb b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3.eb
index d34825a8c2..4c6f1148c3 100644
--- a/easybuild/easyconfigs/n/NVHPC/NVHPC-25.1-CUDA-12.6.0.eb
+++ b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3.eb
@@ -1,6 +1,5 @@
 name = 'NVHPC'
-version = '25.1'
-versionsuffix = '-CUDA-%(cudaver)s'
+version = '25.3'
 
 homepage = 'https://developer.nvidia.com/hpc-sdk/'
 description = """Complete toolchain based on NVIDIA HPC SDK. Includes C, C++ and FORTRAN
@@ -17,19 +16,18 @@ sources = [local_tarball_tmpl % '%(arch)s']
 checksums = [
     {
         local_tarball_tmpl % 'aarch64':
-            '0e1d694d54d44559155024d5bab4ca6764eba52d3f27b89f5c252416976e0360',
+            'a2b86cf5141c0a9b0925999521693981451a8d2403367c36c46238163be6f2bb',
         local_tarball_tmpl % 'x86_64':
-            '0813791f8363f4c493db7891b00396ce522cb73910279b8f18a440aedda6727c',
+            'e2b2c911478a5db6a15d1fd258a8c4004dbfccf6f32f4132fe142a24fb7e6f8f',
     }
 ]
 
 dependencies = [
-    ('CUDA', '12.6.0'),
-    ('nvidia-compilers', version, versionsuffix),
+    ('nvidia-compilers', version),
 ]
 
-# NVHPC needs CUDA to work. This easyconfig uses external CUDA from EasyBuild.
-# The default CUDA version used by NVHPC will be the version of loaded CUDA module
+# NVHPC needs CUDA to work. This easyconfig uses CUDA bundled in NVHPC
+# The default CUDA version used by NVHPC is the one defined in nvidia-compilers
 
 # The default Compute Capability used by NVHPC is the one defined in nvidia-compilers (if any)
 
Diff against NVHPC-24.11-CUDA-12.6.0.eb

easybuild/easyconfigs/n/NVHPC/NVHPC-24.11-CUDA-12.6.0.eb

diff --git a/easybuild/easyconfigs/n/NVHPC/NVHPC-24.11-CUDA-12.6.0.eb b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3.eb
index 546b28e714..4c6f1148c3 100644
--- a/easybuild/easyconfigs/n/NVHPC/NVHPC-24.11-CUDA-12.6.0.eb
+++ b/easybuild/easyconfigs/n/NVHPC/NVHPC-25.3.eb
@@ -1,73 +1,34 @@
 name = 'NVHPC'
-version = '24.11'
-versionsuffix = '-CUDA-%(cudaver)s'
+version = '25.3'
 
 homepage = 'https://developer.nvidia.com/hpc-sdk/'
-description = """C, C++ and Fortran compilers included with the NVIDIA HPC SDK (previously: PGI)"""
+description = """Complete toolchain based on NVIDIA HPC SDK. Includes C, C++ and FORTRAN
+compilers (nvidia-compilers), an MPI implementation based on OpenMPI (NVHPCX)
+and math libraries based on OpenBLAS and ScaLAPACK."""
 
 toolchain = SYSTEM
 
-local_tarball_tmpl = 'nvhpc_2024_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz'
 # By downloading, you accept the HPC SDK Software License Agreement
 # https://docs.nvidia.com/hpc-sdk/eula/index.html
-# accept_eula = True
+local_tarball_tmpl = 'nvhpc_2025_%%(version_major)s%%(version_minor)s_Linux_%s_cuda_multi.tar.gz'
 source_urls = ['https://developer.download.nvidia.com/hpc-sdk/%(version)s/']
 sources = [local_tarball_tmpl % '%(arch)s']
 checksums = [
     {
         local_tarball_tmpl % 'aarch64':
-            'f2f64e5dec5e90dad5e12a31a992172b0aa19abf872ef1c54a1a437c7008eefb',
+            'a2b86cf5141c0a9b0925999521693981451a8d2403367c36c46238163be6f2bb',
         local_tarball_tmpl % 'x86_64':
-            '0c27d66ed0e2d3007d30ac904922a9abf96475197dc0f4dcc6316d235a1dc0c3',
+            'e2b2c911478a5db6a15d1fd258a8c4004dbfccf6f32f4132fe142a24fb7e6f8f',
     }
 ]
 
-local_gccver = '13.3.0'
 dependencies = [
-    ('GCCcore', local_gccver),
-    ('binutils', '2.42', '', ('GCCcore', local_gccver)),
-    # This is necessary to avoid cases where just libnuma.so.1 is present in the system and -lnuma fails
-    ('numactl', '2.0.18', '', ('GCCcore', local_gccver)),
-    ('CUDA', '12.6.0', '', SYSTEM),
+    ('nvidia-compilers', version),
 ]
 
-module_add_cuda = False
+# NVHPC needs CUDA to work. This easyconfig uses CUDA bundled in NVHPC
+# The default CUDA version used by NVHPC is the one defined in nvidia-compilers
 
-# specify default CUDA version that should be used by NVHPC
-# should match one of the CUDA versions that are included with this NVHPC version
-# (see install_components/Linux_x86_64/$version/cuda/) where $version is the NVHPC version
-# this version can be tweaked from the EasyBuild command line with
-# --try-amend=default_cuda_version="11.0" (for example)
-default_cuda_version = '%(cudaver)s'
+# The default Compute Capability used by NVHPC is the one defined in nvidia-compilers (if any)
 
-# NVHPC EasyBlock supports some features, which can be set via CLI or this easyconfig.
-# The following list gives examples for the easyconfig
-#
-# NVHPC needs CUDA to work. Two options are available: 1) Use NVHPC-bundled CUDA, 2) use system CUDA
-# 1) Bundled CUDA
-#    If no easybuild dependency to CUDA is present, the bundled CUDA is taken. A version needs to be specified with
-#      default_cuda_version = "11.0"
-#    in this easyconfig file; alternatively, it can be specified through the command line during installation with
-#      --try-amend=default_cuda_version="10.2"
-# 2) CUDA provided via EasyBuild
-#    Use CUDA as a dependency, for example
-#      dependencies = [('CUDA', '11.5.0')]
-#    The parameter default_cuda_version still can be set as above.
-#    If not set, it will be deduced from the CUDA module (via $EBVERSIONCUDA)
-#
-# Define a NVHPC-default Compute Capability
-#   cuda_compute_capabilities = "8.0"
-# Can also be specified on the EasyBuild command line via --cuda-compute-capabilities=8.0
-# Only single values supported, not lists of values!
-#
-# Options to add/remove things to/from environment module (defaults shown)
-#   module_byo_compilers = False  # Remove compilers from PATH (Bring-your-own compilers)
-#   module_nvhpc_own_mpi = False  # Add NVHPC's own pre-compiled OpenMPI
-#   module_add_math_libs = False  # Add NVHPC's math libraries (which should be there from CUDA anyway)
-#   module_add_profilers = False  # Add NVHPC's NVIDIA Profilers
-#   module_add_nccl = False       # Add NVHPC's NCCL library
-#   module_add_nvshmem = False    # Add NVHPC's NVSHMEM library
-#   module_add_cuda = False       # Add NVHPC's bundled CUDA
-
-# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS)
-moduleclass = 'compiler'
+moduleclass = 'toolchain'

@adammccartney
Copy link
Contributor Author

sorry, added this by mistake!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants