At the inaugural meeting of the Singularity User Group (SUG), AMD Product Manager Derek Bouius made the case for generalizing support for GPUs in Singularity. By contributing the code required to implement this generalization, AMD has significantly accelerated (no pun intended!) the timeframe required to deliver this capability to the Singularity user, developer, and provider community.
Resulting in what is rapidly becoming the new “–gpu=<target_gpu_platform>” option for Singularity, Sylabs is currently collaborating with AMD to implement this impressive contribution to the open source Singularity code base. Although general availability in Singularity of generic GPU support will likely not be released until later this year, those attending the ISC High Performance 2019 Conference in Frankfurt, Germany will be treated to a prerelease demo. Members of the Sylabs team will be on-site at ISC to staff one of the demo pods in the AMD booth (booth # H-700).
Our demo in the AMD booth at ISC features a Machine Learning use case containerized via Singularity. If “amd_ml_gpu.sif” is the name of the Singularity Image Format (SIF) file that containerizes this use case for AMD Radeon Instinct™ Accelerators, then
$ singularity run --gpu=rocm amd_ml_gpu.sif
is all that is required to run it. From the end-user’s perspective, it’s only use of the “–gpu=rocm” option that is required to target use of the AMD GPU. By emphasizing integration over isolation, this example illustrates the ease with which sophisticated AMD GPUs can be efficiently and effectively exploited for computational purposes via Singularity. In so doing, it’s important to note that the GPU support in this case also allows users to leverage ROCm:
… the first open-source HPC/Hyperscale-class platform for GPU computing that’s also programming-language independent.
According to the project’s GitHub repo:
- ROCm is built for scale – it supports multi-GPU computing in and out of server-node communication through RDMA
- ROCm has a rich system run time – with the critical features that large-scale application, compiler and language-run-time development requires
- ROCm makes heavy use of the Heterogeneous System Architecture Compliant Runtime and Driver for AMD RADEON GPU’s
This last point requires elaboration as by making heavy use of the HSA Runtime API, the ROCr System Runtime is rendered language independent. Thus ‘native’ support for HCC C++ and HIP, the Khronos Group’s OpenCL, and Continuum’s Anaconda Python is achieved. Taken together, a new avenue for GPU-based computing is being ushered in, and the possibilities are nothing short of enticing and exciting.
Programmatic exploitation of GPUs for compute-intensive use cases has already proven impactful. The combination of ROCm compliant GPUs from AMD, in tandem with integrated support for Singularity containers, well positions those seeking to embrace this performant and language-independent platform at extreme scale. Once again, for that sneak peek at ISC, we encourage you to drop by the Sylabs demo pod in the AMD booth (# H-700) where you’ll be able to discuss prospects and plans with the technical experts from Sylabs and AMD.