conda-forge.github.io
conda-forge.github.io copied to clipboard
Add package for the NVIDIA HPC SDK
The NVIDIA HPC SDK is a comprehensive suite of compilers, libraries and tools for HPC developers. The HPC SDK includes C, C++, and Fortran compilers (formerly known as the PGI compilers), as well as CUDA, GPU math libraries, communication libraries such as MPI and NCCL, and Nsight performance profilers.
This issue is to discuss adding a package for the HPC SDK, including support for using the compilers to build other packages.
The HPC SDK is free for download, and is also available as containers from NGC and is supported in Spack.
The HPC SDK is available for x86_64, Power, and Arm.
The HPC SDK has two variants: one includes the latest CUDA only, and the other includes 3 versions of CUDA. Ideally, based on the detected NVIDIA driver, the most appropriate variant can be selected for install.
The "REDIST" directory contains the set of runtime libraries (there are also separate devel
and runtime
Docker containers on NGC).
Tagging @jakirkham @kkraus14 @raydouglass @costat @sfiligoi
When I read the license, I understood the text to mean that while the compilers are available for download, conda-forge cannot redistribute them. Even if the runtimes are redistributable, this would mean our CI services would have to download the compilers themselves, which might be a big lift. Supporting CUDA in this way has been pretty non-trivial.
Does anyone know the situation regarding ABI compatibility on the fortran side?
also cc @conda-forge/core @isuruf
Yeah I think we are figuring out how to redistribute these
There are Docker images as well, which may help mitigate the download size
Does anyone know the situation regarding ABI compatibility on the fortran side?
@samcmill do you know?
Does anyone know the situation regarding ABI compatibility on the fortran side?
@samcmill do you know?
In general there is no Fortran ABI compatibility between different compilers.
This is what I figured and is the same with ifort. This means we will have to rebuild the full fortran stack if we want fully ship things. We faced a similar question for intel fortran and ended up punting on the fortran compilers from them.
I have not tried the fortran builds, but I have heard them claim they maintain GCC ABI compatibility.
I know that it holds for C/C++ builds for sure. BTW: If anyone is interested, I had posted a recipe for building a mixed gcc/NVIDIA HPC SDK setup some time ago: https://www.linkedin.com/pulse/conda-h5c-openacc-gpu-compute-nvidia-hpc-sdk-igor-sfiligoi/
I have not tried the fortran builds, but I have heard them claim they maintain GCC ABI compatibility.
That would be very good if it is true.
Does anyone have timing comparisons for various libraries that we might build with the compilers or is this more about getting access to some other feature I am not aware of?
@beckermr The NVIDIA HPC SDK is the only compiler with great support for OpenACC (for GPU offload). That's my main reason for wanting it.
@sfiligoi, are you simply wanting to install the compiler or are there particular packages that you are wanting to rebuild with it? Also how are you planning to use it (particularly if not rebuilding packages with the compilers)
Our problem is dependencies; in particular hdf5. And python. Our main GPU-using package, unifrac, is currently being hosted on bioconda, but it depends on conda-forge packages.
So is the NVIDIA HPC SDK now available in conda-forge
?
Not yet no
Effort has currently been focused on packaging the CUDA SDK ( https://github.com/conda-forge/staged-recipes/issues/21382 ) and integrating that into conda-forge ( https://github.com/conda-forge/conda-forge.github.io/issues/1963 )