conda-forge.github.io icon indicating copy to clipboard operation
conda-forge.github.io copied to clipboard

Add package for the NVIDIA HPC SDK

Open samcmill opened this issue 3 years ago • 12 comments

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

samcmill avatar Apr 16 '21 21:04 samcmill

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?

beckermr avatar Apr 16 '21 21:04 beckermr

also cc @conda-forge/core @isuruf

beckermr avatar Apr 16 '21 21:04 beckermr

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?

jakirkham avatar Apr 16 '21 21:04 jakirkham

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.

samcmill avatar Apr 16 '21 22:04 samcmill

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.

beckermr avatar Apr 16 '21 22:04 beckermr

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/

sfiligoi avatar Apr 17 '21 02:04 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 avatar Apr 17 '21 19:04 beckermr

@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 avatar Apr 17 '21 19:04 sfiligoi

@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)

jakirkham avatar May 05 '21 21:05 jakirkham

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.

sfiligoi avatar May 05 '21 22:05 sfiligoi

So is the NVIDIA HPC SDK now available in conda-forge?

berceanu avatar Oct 31 '23 11:10 berceanu

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 )

jakirkham avatar Oct 31 '23 21:10 jakirkham