通过SYCL库中机器学习引导的内核选择实现性能可移植性
Performance portability through machine learning guided kernel selection in SYCL libraries
摘要:
自动调优并行计算内核允许库和框架在各种硬件上实现性能,然而这些技术通常专注于为特定输入大小和参数找到最佳内核参数。通用计算库必须能够满足用户提供的所有输入和参数,因此这些技术的用途有限。此外,像SYCL这样的并行编程框架要求内核以二进制格式嵌入库中。因此,在不增加库大小的情况下部署大量可能的内核配置是不切实际的。机器学习方法可用于缓解这两个问题,并为具有有限数量的内核配置的通用例程提供性能。我们表明,无监督聚类方法可用于选择应部署的可能内核的子集,并且可以训练简单的分类方法以在运行时从这些内核中选择以提供良好的性能。由于这些技术是完全自动化的,仅依赖于基准数据,因此针对新硬件或问题的调优过程不需要任何开发人员的努力或专业知识。
英文摘要:
Automatically tuning parallel compute kernels allows libraries and frameworks to achieve performance on a wide range of hardware, however these techniques are typically focused on finding optimal kernel parameters for particular input sizes and parameters. General purpose compute libraries must be able to cater to all inputs and parameters provided by a user, and so these techniques are of limited use. Additionally, parallel programming frameworks such as SYCL require that the kernels be deployed in a binary format embedded within the library. As such it is impractical to deploy a large number of possible kernel configurations without inflating the library size. Machine learning methods can be used to mitigate against both of these problems and provide performance for general purpose routines with a limited number of kernel configurations. We show that unsupervised clustering methods can be used to select a subset of the possible kernels that should be deployed and that simple classification methods can be trained to select from these kernels at runtime to give good performance. As these techniques are fully automated, relying only on benchmark data, the tuning process for new hardware or problems does not require any developer effort or expertise.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。