2013-04-05 120 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