2013-04-05 118 views
4

我在Mathematica中使用NVIDIA K20 GPU。爲K20白皮書指出以下規格:Mathematica中NVIDIA K20 GPU的內核數量

  1. 2496單精度芯(192每個多處理器×13級的多處理器)
  2. 832雙精度芯(64每個多處理器×13級的多處理器)
  3. 416特殊功能單元(32每個多處理器×13級的多處理器)

然而,當我啓動的Mathematica,並期待在GPU的加載的OpenCL或CUDA後的規格,它說,我只有416核心(我已附加的屏幕截圖Mathematica命令和回購規格)。這在某種程度上與雙精度內核或特殊功能單元的數量有關嗎? Mathematica在我告訴它會寫什麼樣的代碼(例如雙精度,超越函數)之前報告這些規範。 enter image description here

回答

6

您的Mathematica還不知道Kepler體系結構的可能性很大,因此將多處理器計數錯誤地轉換爲核心計數。

由於「核心」無論如何都是營銷發明,您可以放心地忽略該數字。 Mathematica仍將使用整個GPU(儘管開普勒感知版本可能仍會通過其他優化帶來一些加速)。

+0

這不是一個Mathematica問題。 Mathemtaica通過驅動程序API與設備進行通信。 Mathematica只會傳遞OpenCL驅動程序在這種情況下所說的內容。 – 2013-04-06 15:06:41

3

這是OpenCL工件,而不是Mathematica的問題。 Mathematica通過供應商驅動程序API(如CUDA或OpenCL)與GPU設備通信。在這種情況下,信息通過到的OpenCL的

OpenClGetDeviceInfo(..)

呼叫來與CL_DEVICE_MAX_COMPUTE_UNITS

請求

OpenCL的驅動器是說,它有13 SMU的可各自運行32個線程。因此,416個計算單元的數量。OpenCL規範對計算單元的含義很模糊。所以OpenCl給出了SMU * Warp大小的總和。 OpenCL在AMD也做過類似的事情,報告2850個Compute Units爲7950個流量單位。 AMD 79xx每個SMU運行64個線程。

+1

這就是我在我的回覆中所說的。如果Mathematica知道開普勒多處理器有192個內核,它會報告正確的內核數量。 – tera 2013-04-06 18:36:40

+0

那麼Mathematica怎麼能知道更多關於K20的設備? Mathematica只知道設備驅動程序對設備的看法。 – 2013-04-07 04:41:21

+0

爲了確保我明白了:由於單流多處理器(SM)上有192個內核,每個SM可以一次處理六個warp(每個32個線程)。但是,由於某些原因,驅動程序API僅將每個SM的計算單元報告爲一個warp。這可能是因爲以前的卡(如我的特斯拉C2075)每個SM只有32個內核,因此一次只能在一個warp上工作? – user1401630 2013-04-07 07:20:45