iOS 开发者的 Metal 养成计划「5」 —— 利用 Metal 并发处理数据以及性能测试
发布于:2018-02-28 23:29,阅读数:520,点赞数:0
> 本文为小专栏[《Graphics Dance》](https://xiaozhuanlan.com/graphics_dance)特供文章,仅提供预览,欢迎订阅。 # 目录 - 引言 - Metal Shader System - 并发运算 - Kernel Function - Metal API - 性能 - 测试方法 - 整数性能 - 浮点性能 - 小结 # 引言 在上一篇文章中已经将图形绘制的路走通。从 Metal API 到顶点着色器到片元着色器,完成这几部就可以在屏幕上绘制图像了。那么在本文中,将把 GPU 并发运算的路走通。 # Metal Shader System ## 并发运算 相对于图像渲染,利用 Metal 来进行并发运算就简单的多。 ![](//cdn.blog.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条