原文https://developer.apple.com/documentation/metal/a_brief_tour_of_metal
Metal 簡明教程
學習Metal GPU編程的基礎(chǔ)知識
概覽
Metal 提供底層和低功耗的方式去訪問圖形處理單元(GPU).
開發(fā)一個優(yōu)秀的Metal app 使用GPU 高效 理解 軟件和硬件交互?
GPU 編程基礎(chǔ)
GPU 是一個強大的硬件單元 包含很多的處理核心 遠多于CPU所包含的核心.
單獨說 每一個GPU 核心 比CPU的處理容量要少. 然而, GPU 能夠收集處理大量的數(shù)據(jù)通過分發(fā) 工作負載 在 多核之間.
這基礎(chǔ)的硬件不同 導致 每一個處理器 適合處理 不同的任務. GPU 適合大量并行計算任務 ,比如渲染成千上萬的像素點在一幀 或者是 執(zhí)行一個成千上萬的元素的數(shù)組的計算任務.
下面的代碼展示一個簡單的GPU 函數(shù)計算函數(shù)(comupte_function
) ,這個函數(shù)輸入兩個buffer (inputA
,inputB
) 和 存儲單個輸出buffer(bufferC)的結(jié)果.
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 這個操作 被描述在內(nèi)循環(huán)和執(zhí)行序列.
在GPU 這個操作被分發(fā)到 多個核心之間 并行計算執(zhí)行.
Metal 基礎(chǔ)組件
上面的示例是一個完整的Metal GPU 函數(shù)
你僅需要 Metal Shading Language
才能寫GPU 執(zhí)行函數(shù)(著色器),但是你需要metal 框架來指定GPU 可用的資源和 GPU中心的命令.
下面的 簡單的metal系統(tǒng) 圖像簡化圖 ,數(shù)據(jù)流進入流出GPU . 函數(shù)和資源被編碼合并成 命令.
該命令會被提交到GPU 和被GPU 執(zhí)行.
GPU渲染的結(jié)果或者 寫入到其他的資源集合中, 這是一個可選的 發(fā)送到 顯示.
更多信息 查看 基礎(chǔ)組件