我在Mathematica中使用NVIDIA K20 GPU。 K20的白皮书规定了以下规格:
但是,当我启动Mathematica并在加载OpenCL或CUDA后查看GPU的规格时,它说我只有416个核心(我附上了Mathematica命令的屏幕截图并报告了规格)。这是否与双精度核心或特殊功能单元的数量有关? Mathematica在我告诉它将编写什么样的代码(例如双精度,超越函数)之前报告这些规范。
答案 0 :(得分:6)
您的Mathematica更有可能尚未了解Kepler架构,因此错误地将多处理器计数转换为核心数。
由于“核心”无论如何都是营销发明,你可以放心地忽略这个数字。 Mathematica仍将使用整个GPU(尽管Kepler感知版本可能仍会通过其他优化带来一些加速)。
答案 1 :(得分: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上做类似的事情,报告28个计算单元为7950,其中有1792个流单元。 AMD 79xx每个SMU运行64个线程。