Apple Metal 2 简明Metal教程

原文https://developer.apple.com/documentation/metal/a_brief_tour_of_metal

Metal 简明教程

学习Metal GPU编程的基础知识

概览

Metal 提供底层和低功耗的方式去访问图形处理单元(GPU).

开发一个优秀的Metal app 使用GPU 高效 理解 软件和硬件交互?

GPU 编程基础

GPU 是一个强大的硬件单元 包含很多的处理核心 远多于CPU所包含的核心.
单独说 每一个GPU 核心 比CPU的处理容量要少. 然而, GPU 能够收集处理大量的数据通过分发 工作负载 在 多核之间.

这基础的硬件不同 导致 每一个处理器 适合处理 不同的任务. GPU 适合大量并行计算任务 ,比如渲染成千上万的像素点在一帧 或者是 执行一个成千上万的元素的数组的计算任务.

下面的代码展示一个简单的GPU 函数计算函数(comupte_function) ,这个函数输入两个buffer (inputA,inputB) 和 存储单个输出buffer(bufferC)的结果.

using namespace metal;
kernel void
compute_function(constant float *inputA  [[buffer(0)]],
                 constant float *inputB  [[buffer(1)]],
                 device   float *outputC [[buffer(2)]],
                 uint           index    [[thread_position_in_grid]])
{
    outputC[index] = inputA[index] + inputB[index];
}

在CPU 这个操作 被描述在内循环和执行序列.
在GPU 这个操作被分发到 多个核心之间 并行计算执行.

Metal 基础组件

上面的示例是一个完整的Metal GPU 函数
你仅需要 Metal Shading Language 才能写GPU 执行函数(着色器),但是你需要metal 框架来指定GPU 可用的资源和 GPU中心的命令.

下面的 简单的metal系统 图像简化图 ,数据流进入流出GPU . 函数和资源被编码合并成 命令.

该命令会被提交到GPU 和被GPU 执行.

GPU渲染的结果或者 写入到其他的资源集合中, 这是一个可选的 发送到 显示.

39026a02-816d-4281-a483-bef09cf02d9c.png

更多信息 查看 基础组件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容