如何在 jcuda 中获取 CUDA 核心数?
我已经尝试过这个,但它没有产生正确的输出:
int cudacount = cudaDeviceAttr.cudaDevAttrMultiProcessorCount;
它返回 16,但我有 1 个带有 640 个核心的 Nvidia GPU。
上述属性的 JavaDoc 可在此处获得。 任何帮助将不胜感激。
似乎这个答案几乎完全符合您的要求。它是用 C 编写的,类型略有不同,所以这里有一个 Java 版本(几乎没有任何不同(:
int getSPCount()
{
final int mp = cudaDeviceAttr.cudaDevAttrMultiProcessorCount;
final int major = cudaDeviceAttr.cudaDevAttrComputeCapabilityMajor;
final int minor = cudaDeviceAttr.cudaDevAttrComputeCapabilityMinor;
switch (major)
{
case 2: // Fermi
return (minor == 1) ? mp * 48 : mp * 32;
case 3: // Kepler
return mp * 192;
case 5: // Maxwell
return mp * 128;
case 6: // Pascal
if (minor == 1) {
return mp * 128;
}
else if (minor == 0) {
return mp * 64;
}
}
throw new RuntimeException("Unknown device type");
}
像这样使用此函数:
int cudacount = getSPCount();