首页 > 解决方案 > 使用 swift 在 GPU 上运行函数

问题描述

我有一个可以运行很长时间处理作业的函数(有几个内循环)。我假设在 GPU 而不是 CPU 上运行它会更快?

有没有办法在 GPU 上运行任意函数?

苹果公司表示,Metal:

Metal 2 提供对图形处理单元 (GPU) 的近乎直接访问,使您能够最大限度地发挥应用程序的计算潜力

我看到了使用 Metal 进行游戏和图形渲染的示例,但是是否有任何示例或链接可以帮助我仅运行常规功能?

标签: swiftmetal

解决方案


GPU 可用于某些类型的纯计算。

任务必须是高度可并行化的。

它不得需要来自系统库或框架的任何 API。Metal 有自己的库,只有计算功能。无磁盘访问。没有数组/缓冲区之外的数据结构。

系统允许计算着色器运行多长时间有一个上限(因为它可能是一个无限循环,没有其他方法可以停止它)。因此,根据您所说的“长时间处理”的含义,它可能不合适,或者仅在分解为工作块时才合适。

如果任务适合 GPU,则必须为 GPU 显式编程。您不能只是透明地或自动地将普通代码迁移到 GPU。它必须被重写。


推荐阅读