iOS 开发者的 Metal 养成计划「5」 —— 利用 Metal 并发处理数据以及性能测试

发布于:2018-02-28 23:29,阅读数:310,点赞数:0


> 本文为小专栏[《Graphics Dance》](https://xiaozhuanlan.com/graphics_dance)特供文章,仅提供预览,欢迎订阅。

# 目录

- 引言
- Metal Shader System
- 并发运算
- Kernel Function
- Metal API
- 性能
- 测试方法
- 整数性能
- 浮点性能
- 小结

# 引言

在上一篇文章中已经将图形绘制的路走通。从 Metal API 到顶点着色器到片元着色器,完成这几部就可以在屏幕上绘制图像了。那么在本文中,将把 GPU 并发运算的路走通。

# Metal Shader System

## 并发运算

相对于图像渲染,利用 Metal 来进行并发运算就简单的多。

![](//cdn.yuusann.com/img/corpus/18009_1.png)

在批量处理数据时,可以将需要处理的源数据拼在一起封装成`MTLBuffer`对象上传至 GPU,在 Metal 中使用`kernel function`对批量数据进行并发处理,之后写入另一个`MTLBuffer`中。

大致步骤描述如下:

- 将批量处理的源数据组装进一个`MTLBuffer`中,并准备另一个`MTLBuffer`用于存放输出数据。
- 在`MTLCommandBuffer`编码阶段设置输入输出的缓冲区。
- 通过`MTLLibrary`加载 Metal 函数,即上文提到的`Kernel Function`。
- 使用上一条中中加载完的函数来构造`MTLComputePipelineState`对象,用于命令编码。
- 使用上一条中构造的`MTLComputePipelineState`编码计算命令。

下面来看看具体实现

---

# 预览结束,查看全文请订阅小专栏[《Graphics Dance》](https://xiaozhuanlan.com/topic/1027836945)


评论:0条


返回列表

返回归档

返回主页