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渲染的结果或者 写入到其他的资源集合中, 这是一个可选的 发送到 显示.

Apple Metal 2 简明Metal教程_第1张图片
39026a02-816d-4281-a483-bef09cf02d9c.png

更多信息 查看 基础组件

  • GPU 资源
  • GPU 函数
  • GPU 命令

你可能感兴趣的:(Apple Metal 2 简明Metal教程)