swift - 使用 swift 在 GPU 上运行函数
问题描述
我有一个可以运行很长时间处理作业的函数(有几个内循环)。我假设在 GPU 而不是 CPU 上运行它会更快?
有没有办法在 GPU 上运行任意函数?
苹果公司表示,Metal:
Metal 2 提供对图形处理单元 (GPU) 的近乎直接访问,使您能够最大限度地发挥应用程序的计算潜力
我看到了使用 Metal 进行游戏和图形渲染的示例,但是是否有任何示例或链接可以帮助我仅运行常规功能?
解决方案
GPU 可用于某些类型的纯计算。
任务必须是高度可并行化的。
它不得需要来自系统库或框架的任何 API。Metal 有自己的库,只有计算功能。无磁盘访问。没有数组/缓冲区之外的数据结构。
系统允许计算着色器运行多长时间有一个上限(因为它可能是一个无限循环,没有其他方法可以停止它)。因此,根据您所说的“长时间处理”的含义,它可能不合适,或者仅在分解为工作块时才合适。
如果任务适合 GPU,则必须为 GPU 显式编程。您不能只是透明地或自动地将普通代码迁移到 GPU。它必须被重写。
推荐阅读
- javascript - Scriptlet 不在 Gsheet App 脚本中打印 JS 和 CSS 文件
- pine-script - Pine 脚本,尝试将指标从版本 2 迁移到 4 时出现多个错误
- sparql - SPARQL:从可能的关系列表中查找连接两个实体的关系
- java - 带有 GraphQL 服务器的 Spring Boot 未启动
- python - 是否可以将变量或对象的属性传递给函数或方法?
- python - 在文本文件中的特定位置插入数据,Python
- python - 使用标签在数据透视表中绘图
- jdbc - 如何从 HAProxy 中的 TCP 连接中拦截 jdbc 连接字符串
- javascript - 用于 2D 上下文绘图的 chrome 中的慢速复合层
- java - 如何正确设置监听器?