Accelerate Your Development of GPU Based Innovative Applications

Print Friendly, PDF & Email

GPUs have become an essential component of innovative organizations that require the highest performing clusters, whether one server or thousands of servers. Many High-Performance Computing (HPC) and Machine Learning (ML) applications have demonstrated tremendous performance gains by using one or more GPUs in conjunction with powerful CPUs. Over 25% of the Top500 list of the most powerful supercomputers on this planet use accelerators, specifically GPUs, to achieve teraflop and petaflop speeds.

The programming and use of a GPU to accelerate applications requires intimate knowledge of the algorithms implemented as well as the overall architecture of the code. Not all applications are designed to take advantage of GPUs, and understanding the parts of an application that will benefit is critical to achieving performance goals.  GPUs are continually evolving due to the increases in speed and number of transistors on a die.  However, ongoing advances in the architecture and capability of a GPU might require a constant or periodic modification of the application to take advantage of the new capabilities. A developer needs APIs that can use the underlying hardware to its fullest, and that does not require application modification across GPU products from multiple vendors. Specifically, what is needed by developers can be summarized as:

  • Open – source code is available, and there is no cost to obtain
  • Portable – is not limited to specific GPUs from a particular vendor
  • Multi-Platform – works on a variety of CPU hosts
  • OS and Delivery Agnostic – can be used with the latest containerization technologies
  • Programming models and language-independent – use from a variety of programming languages.
  • Aware of the latest GPU technologies – understands multiple GPUs in a single system

ROCm, from AMD, is an open-source platform that has been created for developers that require portability for their applications while getting the maximum performance from a range of GPUs. Since developers, at different times and for various reasons, may need to move their applications from one cluster to another, which may not have the same CPUs or GPUs, they want the guaranteed portability that AMD ROCm delivers. Developers may also be using different Operating Systems for creating new applications, and ROCm is widely available on popular Linux® OS’s today. While some HPC or ML applications will run natively on servers, a popular method of deployment today is with containers. AMD ROCm is entirely container compatible, which allows for the fast deployment of applications on a wide range of delivery methods. Supported container technology includes Docker, Singularity, Kubernetes, and Slurm.

AMD ROCm is a collection of drivers and development tools that communicate very efficiently with the underlying GPUs from a variety of vendors. Multiple architectures are supported, from systems that contain just one GPU to those that have several GPUs. When an application uses multiple GPUs, to obtain the best performance, the GPUs must be able to communicate with each other when needed through API calls. AMD ROCm supports these environments with multiple GPUs.

There are several programming models that developers choose to implement their HPC application. AMD ROCm supports programming models such as HIP, OpenCL, and OpenMP. More programming models will be supported shortly.

The next generation of supercomputer, Frontier, located at the Oak Ridge National Laboratory, is under development and will contain thousands of AMD EPYC ™ CPUs, Radeon Instinct™ GPUs, and the AMD ROCm open standards-based ecosystem. Developers are creating accelerated applications, and scientists are beginning to plan how to best utilize the United States first exascale supercomputer.

To learn more about ROCm and how you can quickly develop accelerated applications, visit:

© 2020 Advanced Micro Devices, Inc.  All rights reserved. AMD, the AMD Arrow logo, AMD Instinct, Infinity Fabric, Radeon Instinct, and combinations thereof are trademarks of Advanced Micro Devices, Inc.  Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries. OpenCL™ is a registered trademark of the Khronos Group Inc. Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies.