我們先來搞清幾個概念:
計算平台指機器設備對OpenCL某個版本的具體實現。
一台計算機上可以有多個計算平台,一個計算平台上可以有多個計算核心。
多核CPU和多CPU是兩回事,除非你的主闆上插有兩塊CPU,這種情況也隻有服務器主闆上才會出現多CPU情況。
一個計算平台設備裡面,可以有多個計算核心,每個核心就是實質的計算部件。
像4核CPU就是一個計算平台設備裡面有4個計算部件。可以并行執行四個運算操作。因此我們除了要獲取系統裡計算平台設備信息外,還要獲取每個設備裡面的計算核心信息,這樣才可以對我們的程序進行最大優化。 OpenCL除了獲取計算機平台設備數目外,還可以獲取這些設備的特性數據。比如剛才說的,CPU是幾核心的,頻率是多少,CACHE是多大等等這些數據。我們在上節課的程序中進行修改,檢測每個計算平台的計算部件信息。
程序代碼如下:
程序運行結果如下:
硬件檢索運行結果
大家可看到,我的計算機上有兩個計算平台,第一個平台包含了CPU和GPU。第二個平台隻包含了CPU。這是怎麼回事呢?注意看第二個平台支持的OpenCL版本是 OpenCL2.1。而且還隻是實驗性版本。這下明白了。OpenCL把計算平台分得很細。這裡面又有幾個問題了,全局内存、本地内存、最大工作組是什麼意思呢?這些我們下節課再講。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!