是否可以查詢OpenCL中處理元素的數量(每個計算單元)?如果是,如何?我沒有在clGetDeviceInfo
doc page上找到相應的參數。OpenCL:查詢處理元素的數量
我不確定處理元件是標準術語。我從this video得到了這個術語。
我想查詢此信息,因爲我很好奇,而不是爲了實際目的。
是否可以查詢OpenCL中處理元素的數量(每個計算單元)?如果是,如何?我沒有在clGetDeviceInfo
doc page上找到相應的參數。OpenCL:查詢處理元素的數量
我不確定處理元件是標準術語。我從this video得到了這個術語。
我想查詢此信息,因爲我很好奇,而不是爲了實際目的。
處理單元(PE)是標準術語,您不能查詢編號。
現在我看到一些原因,這是不可能的:
的定義本身:
PE:虛擬標量處理器。工作項目可以在一個或多個處理元件上執行。
因此,根據體系結構,返回的數字或多或少沒有意義。例如,我想到以前使用VLIW處理器的AMD GPU架構。
PE是一個抽象,它在標準中最有用來說明/定義一些概念,例如可以看到給定給SIMD,SPMD以及平臺模型的定義。但是這個概念並沒有在實踐中使用(儘管開發人員知道實現良好性能非常有用)。您將關心工作組中工作項目的最大數量。
即使在給定的體系結構中,處理元素也是不同的類型。例如,如果我們採用GK110 Kepler Architecture,則SMx(等效計算單元)具有192個SP CUDA內核,64個DP單元和32個特殊功能單元(SFU)。那麼應該返回一個詢問PE數量的查詢的數量?
基準不同的最大線程數然後找到獲得最大佔用/發佈的線程數。例如,1280核心GPU將會滿意1280(或256 x 5)個線程和多個線程。但它不像1024個線程,2048個線程,4096個線程,因爲在這個設置中總是有空閒/等待空閒內核。另外不要忘記將線程組大小設置爲256(較小的只會增加佔用並使基準過時)。如果2048和2604給出相同的結果,則將線程組大小減小到128,然後測試2048-2604的較窄範圍。 –
@huseyintugrulbuyukisik我是OpenCL的完整初學者。我認爲你的評論意味着沒有直接和簡單的方法通過標準的OpenCL來查詢,對吧? – Szabolcs
你需要一個「更接近硬件」的API,甚至可能需要像使用GPU-z一樣使用GPU的驅動程序(那不是我希望的數據庫硬編碼的東西)。當我第一次開始opencl但找不到時,我搜索了相同的東西。即使在compubench.com上也無法列出他們的核心號碼。例如,HD7750的每個計算單元具有與HD7970相同的核心數量(全部64個用於GCN)。對於600系列,Nvidia顯卡通常有192個。英特爾高清使用4和8寬。版本。撥弄驅動程序來查詢核心號碼或使用數據庫或獲取計算單元號碼並將其乘以192/64。 –