ORCHA: A Performance Portability System for Extreme Heterogeneity
arXiv:2507.09337 · doi:10.1177/10943420261465929
Abstract
Heterogeneity is the prevalent trend in the rapidly evolving high-performance computing (HPC) landscape in both hardware and application software. The diversity in hardware platforms, currently comprising various accelerators and a future possibility of specializable chiplets, poses a significant challenge for scientific software developers aiming to harness optimal performance across different computing platforms while maintaining the quality of solutions when their applications are simultaneously growing more complex. Code synthesis and code generation can provide mechanisms to mitigate this challenge. We have developed a divide-and-conquer approach where different aspects of performance are handled by different stand-alone tools that are interfaced with the application through generated code. This system, ORCHA, enables users to configure and orchestrate their computations among available resources on a platform by specifying a high-level recipe, thereby permitting a many-to-many paradigm where each recipe results in a different variant of the application. The core design goal is to let users decide the application's hardware mapping and orchestration by editing only the high-level recipe. Tools in ORCHA distribution are: CG-Kit for translating the recipe into an execution graph; Milhoja to execute the graph by orchestrating data and task among hardware resources; and Macroprocessor that enables users to define their own code-shorthand for higher composability and easier management of code variants. In this paper, we describe the design of ORCHA and the role that code-generation plays in isolating applications from tools. We demonstrate the breadth of configurations ORCHA enables with a case study in which an application configuration is realized on three distinct hardware mappings---a GPU-centric, a CPU/GPU balanced, and a CPU/GPU concurrent layouts by using different recipes.