与 CUDA 相比,Taichi 跑得快不快?
在「v1.0.0」用 Taichi AOT 方案将特效部署到移动端中,我们展示了 Taichi 脱离 Python 环境部署的方法,实现了将特效算法快速部署在安卓手机上,并加上了重力交互功能。受制于散热、成本等问题,在部署环境中的硬件其计算能力通常很弱,因此有一个问题变得非常重要:相比于更底层的原生编程语言,Taichi 能不能充分地发挥设备的计算能力?
于是我们发起 Taichi benchmark 项目做一个更加细分、准确的性能评估。
作为一个领域编程语言(domain-specific language),Taichi 可以用很短的代码解决数值计算方面的问题。我们针对领域中常用算法建立了测试集,将每一个测试项目和性能最好的实现方法进行对比,简而言之:对比基线是外部最强实现 vs Taichi 实现。通过这样的对比,我们试图评估 Taichi 编译器中内置优化技术的有效性以及可优化的空间。同时,这种对比也可以帮助改进 Taichi,以达到更好的性能。作为这个项目的开端,目前版本的性能评测主要是 Taichi 与 CUDA,通过与高度优化的 CUDA 代码进行对照,以评估 Taichi 的优化水平。
这次评测部分地解答了用户一直以来的疑问:Taichi 和 CUDA 比性能究竟怎么样?我们在一块 Nvidia Geforce RTX 3080 上进行了测试,其中有 9 个算法以高性能的 CUDA 实现作为参考。在测试中计时方法对结果很重要,采用的两种计时方式分别是:
- 外部计时:重复运行计算函数,取平均计算时间。其中第一次运行包含了 Taichi 的编译开销,不计入总时间。
- Kernel 计时:在 CUDA 中使用 cudaEventElapsedTime 接口,在 Taichi 中使用 ti.profiler ¹ 统计 kernel 的运行时间。二者的底层实现统一调用 CUPTI,因此在度量上是一致的。
其中,外部计时的方式仍然包含了每次调用的 Python 开销,更贴近实际的使用场景。Kernel 计时仅包含 GPU 计算函数,能更准确地评估 Kernel 函数的质量。无论采用哪种方式,在每个测试项目中我们使用相同的计时器以保证对比是公平的。
下图中我们统计了 Taichi 在不同测试算法中相对 CUDA 的加速比。
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。