如何在jcuda中获得CUDA核心数?
我已经尝试了这一点,但它没有产生正确的输出:
int cudacount = cudaDeviceAttr.cudaDevAttrMultiProcessorCount;
它返回16但我有1个Nvidia GPU和640个cudacores。
上述属性的JavaDoc是available here。 任何帮助将不胜感激。
答案 0 :(得分:2)
似乎this answer几乎完全符合您的要求。它是用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();