Why is the HPC community so obsessed with 'performance portability'?

In the field of high-performance computing (HPC), developers are almost fanatical about "performance portability". This phenomenon stems from the need for computer programs and applications to run efficiently across different platforms. As technology continues to evolve and hardware architectures change, the durability and relevance of high-performance computing applications are threatened, forcing developers to focus on improving performance portability.

Performance portability refers to the ability of computer programs and applications to run effectively on different platforms. When developers develop applications for performance portability, they hope to support multiple platforms without affecting performance and minimize platform-specific code.

The Importance of Performance Portability

As hardware diversity increases, developing software that can run on a wide range of machines has become a necessity to keep applications viable. According to the 2016 U.S. Department of Energy (DOE) Performance Portability Conference, the industry generally agrees that performance portability can be interpreted as "the ability to run the same application on multiple hardware platforms and achieve the same performance on those platforms." Some level of performance."

For example, Intel's John Penicuik said at the same conference that "an application is considered performance portable if it can achieve consistent performance levels across platforms." This means that the so-called portability is not only about the application itself, but also about the portability of the source code.

There is currently no universally accepted way to measure performance portability, and individual teams may define the concept based on their own criteria.

Measurement of performance portability

How to accurately quantify performance portability is a challenging problem that depends primarily on two factors. The first is portability, which can be measured by comparing the total number of lines of code used on multiple architectures to the total number of lines of code written specifically for a single architecture. The second is performance, usually comparing the performance between optimized versions for a specific platform and portable versions.

Currently, there is no universal standard for what counts as portable code or applications. This ambiguity in the definition leads to different evaluation criteria for different teams. According to a speaker at the 2016 conference, whether or not a project is considered portable is entirely up to the development team.

Framework and non-framework solutions

To help programmers achieve performance portability, there are currently a variety of programming applications and systems that can achieve this goal. Programming frameworks such as OpenCL, SYCL, and Kokkos claim to support functional portability and facilitate parallel programming on multiple platforms. In addition, there are some non-framework solutions, such as self-tuning technology and dedicated languages, which can also improve performance portability.

Developers must explore ways to achieve performance portability in an ever-changing computing architecture, which is not only related to current needs, but also to future survival.

Looking to the future

With the rapid development of computing technology, future performance portability may face new challenges. Industry experts believe that the evolution of parallel programming models will become a key factor affecting performance portability. Research suggests that future parallel programming models will be able to provide higher performance portability than the applications themselves in many situations.

This change means that the responsibilities that programmers need to bear when developing applications will gradually shift to the implementation of the programming model and its underlying compiler, which will significantly change the technical style of program development. These explorations and discussions will continue to promote the progress and development of high-performance computing.

So, in this ever-changing technological context, how should developers effectively balance the contradiction between platform characteristics and performance portability?

Trending Knowledge

The Hidden Challenges of High-Performance Computing: Do you know how difficult it is to measure performance portability?
In the world of high performance computing (HPC), performance portability is a goal pursued by many developers. However, with the diversification of computing platforms, this goal faces many challenge
nan
The definition and application of passenger railways vary significantly in each region.These differences not only reflect the development of public transportation systems in various places, but also t
Performance portability: How to make your program run seamlessly across different hardware platforms?
In today's highly interconnected digital era, performance portability has become an important issue in software development. Performance portability refers to the ability of an application to run effe

Responses