Skip to main content
QUICK REVIEW

[论文解读] Cross-Platform Performance Portability Using Highly Parametrized SYCL Kernels

John Lawson, Mehdi Goli|arXiv (Cornell University)|Apr 10, 2019
Parallel Computing and Optimization Techniques参考文献 17被引用 4
一句话总结

本文展示了高度参数化的 SYCL 内核在 ARM HiKey 960 和 Intel i7-6700K 等多样化架构上,性能可与手写优化的厂商库(如 cuBLAS、ARM Compute Library、MKL-DNN)相媲美。通过利用 C++ 模板和 SYCL 的可移植性,作者为每种硬件实例化了经过调优的内核,实现了跨平台的高性能可移植性,且不损失效率。

ABSTRACT

Over recent years heterogeneous systems have become more prevalent across HPC systems, with over 100 supercomputers in the TOP500 incorporating GPUs or other accelerators. These hardware platforms have different performance characteristics and optimization requirements. In order to make the most of multiple accelerators a developer has to provide implementations of their algorithms tuned for each device. Hardware vendors provide libraries targeting their devices specifically, which provide good performance but frequently have different API designs, hampering portability. The SYCL programming model allows users to write heterogeneous programs using completely standard C++, and so developers have access to the power of C++ templates when developing compute kernels. In this paper we show that by writing highly parameterized kernels for matrix multiplies and convolutions we achieve performance competitive with vendor implementations across different architectures. Furthermore, tuning for new devices amounts to choosing the combinations of kernel parameters that perform best on the hardware.

研究动机与目标

  • 解决异构加速器之间因优化需求不同而带来的性能可移植性挑战。
  • 减少对厂商特定库的依赖,因为这些库因接口和硬件目标不同而阻碍可移植性。
  • 评估高度参数化的 SYCL 内核是否能够匹配或超越手写优化库(如 cuBLAS、ARM Compute Library 和 MKL-DNN)的性能。
  • 证明针对每种架构调优内核参数可实现在多样化硬件平台上高效且可移植的性能。

提出的方法

  • 作者使用 C++ 模板实现高度参数化的 SYCL 内核,用于矩阵乘法和卷积运算,以表达内核配置。
  • 他们为每种目标设备的架构量身定制了特定的模板参数(例如,块大小、分块维度、数据类型)来实例化这些内核。
  • 性能通过标准深度学习基准进行评估:在 ARM HiKey 960 和 Intel i7-6700K 系统上运行 VGG-16 和 ResNet-50 的卷积层。
  • 将基于 SYCL 的实现(SYCL-DNN)与厂商优化库(ARM Compute Library(CPU/NEON 和 GPU/OpenCL)、MKL-DNN 和 cuBLAS)进行比较。
  • 通过改变批量大小进行基准测试,以评估在典型工作负载下的实际性能表现。
  • 该方法依赖于 SYCL 在保持标准 C++ 语法的同时,通过编译时模板特化生成优化且可移植的内核的能力。

实验结果

研究问题

  • RQ1高度参数化的 SYCL 内核是否能在多样化硬件平台上实现与手写优化的厂商特定库相媲美的性能?
  • RQ2通过模板参数调优内核在多大程度上可以替代针对特定架构的手动优化?
  • RQ3SYCL-DNN 在 ARM 和 Intel 平台上与 ARM Compute Library 和 MKL-DNN 的性能相比如何?
  • RQ4一个单一的、可移植的内核框架是否能够无需牺牲可移植性而在 CPU、GPU 和加速器上实现高性能?

主要发现

  • 在 ARM HiKey 960 上,SYCL-DNN 在 VGG 层上实现了 90 至 150 吉弗洛普斯的性能,优于 NEON CPU 实现,并在大多数情况下与 OpenCL GPU 版本持平或更优。
  • 在 Intel i7-6700K 上,SYCL-DNN 在 GPU 上的性能始终优于 MKL-DNN 在 CPU 上的性能,VGG-16 卷积的峰值性能达到 420 吉弗洛普斯。
  • 对于 ResNet-50,MKL-DNN 在 CPU 上的性能优于 SYCL-DNN 在 CPU 和 GPU 上的性能,峰值性能分别为 366 吉弗洛普斯和 244 吉弗洛普斯。
  • 在 ARM 上的 VGG-16 基准测试中,ARM Compute Library 的 OpenCL 内核在 3×3 卷积中表现优于 SYCL-DNN,但 SYCL-DNN 整体仍具竞争力。
  • 结果证实,通过适当模板参数化的 SYCL 内核可在 ARM 和 Intel 平台上实现与厂商优化库相差 10%–20% 的性能。
  • 该研究证明,针对每种设备调优内核参数可实现有效的性能可移植性,即使在性能特征显著不同的架构之间也无需牺牲效率。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。