COX:通过将线程束级函数暴露给 CPU 实现 X86 上的 CUDA
分布式、并行与集群计算
2021-12-21 v1 硬件体系结构
摘要
随着 CUDA 程序成为高性能计算或机器学习应用等数据并行应用中的事实标准程序,在其他平台上运行 CUDA 成为一个引人注目的选择。尽管已有若干努力尝试在 NVIDIA GPU 以外的设备上支持 CUDA,但由于翻译中的额外步骤,其支持总是落后数年才能支持 CUDA 的最新特性。例子有 DPC、Hipfy,它们必须将 CUDA 源代码翻译为其原生支持的语言,然后才得以支持。特别是,新的 CUDA 编程模型在编程语言中暴露了 warp(线程束)概念,这极大改变了 CUDA 代码映射到 CPU 程序的方式。本文提出了可正确在 CPU 上支持 CUDA 线程束级函数的层次化折叠方法。基于层次化折叠,开发了框架 COX,允许具有最新特性的 CUDA 程序在 CPU 平台上高效执行。COX 由编译器 IR 变换(新的 LLVM pass)和在 CPU 设备上执行变换后程序的运行时系统组成。COX 可支持最新 CUDA 特性,且应用覆盖率(90%)远高于先前框架(68%),性能相当。我们还展示了 CUDA 中的线程束级函数可通过利用 CPU SIMD(AVX)指令高效执行。
引用
@article{arxiv.2112.10034,
title = {COX: CUDA on X86 by Exposing Warp-Level Functions to CPUs},
author = {Ruobing Han and Jaewon Lee and Jaewoong Sim and Hyesoon Kim},
journal= {arXiv preprint arXiv:2112.10034},
year = {2021}
}