High-performance computing (HPC) is a major driver accelerating scientific research and discovery, from quantum simulations to medical therapeutics. While the increasing availability of HPC resources is in many cases pivotal to successful science, even the largest collaborations lack the computational expertise required for maximal exploitation of current hardware capabilities. The need to maintain multiple platform-specific codebases further complicates matters, potentially adding constraints on machines that can be utilized. Fortunately, numerous programming models are under development that aim to facilitate portable codes for heterogeneous computing. One in particular is SYCL, an open standard, C++-based single-source programming paradigm. Among SYCL's features is interoperability, a mechanism through which applications and third-party libraries coordinate sharing data and execute collaboratively. In this paper, we leverage the SYCL programming model to demonstrate cross-platform performance portability across heterogeneous resources. We detail our NVIDIA and AMD random number generator extensions to the oneMKL open-source interfaces library. Performance portability is measured relative to platform-specific baseline applications executed on four major hardware platforms using two different compilers supporting SYCL. The utility of our extensions are exemplified in a real-world setting via a high-energy physics simulation application. We show the performance of implementations that capitalize on SYCL interoperability are at par with native implementations, attesting to the cross-platform performance portability of a SYCL-based approach to scientific codes.
翻译:高性能计算(HPC)是推动从量子模拟到医疗治疗等科学研究和发现的主要驱动因素,从量子模拟到医疗治疗,虽然高性能计算资源越来越多,在许多情况下对成功科学至关重要,但即使是最大的协作,也缺乏最佳利用现有硬件能力所需的计算专门知识; 需要维护多平台专用代码库,这会使问题更加复杂,有可能增加对机器的制约; 幸运的是,正在开发许多旨在便利易移动混合计算编码的编程模型; 特别是SYCL, 一种开放的标准,C++基于单一源的编程模式。 SYCL的特征之一是互操作性,一个应用程序和第三方图书馆通过这一机制协调共享数据并协同执行。 在本文件中,我们利用SYCLL编程编程模型展示跨平台性能,我们VIVIA和AM的随机发电机扩展到一个MKL开放源界面图书馆图书馆。 与使用两个不同的编程器支持SYCLCL的平台的基线应用相比,绩效可测量性比度是两个不同的编程,我们在SBLICL的通用性应用中,在现实性标准上,我们SLIBSAL执行工具的实用性扩展在现实应用中展示。