1
如何獲得jcuda中的CUDA核心數?如何在jcuda中獲得CUDA內核?
我已經試過,但它不會產生正確的輸出:
int cudacount = cudaDeviceAttr.cudaDevAttrMultiProcessorCount;
它返回16,但我有1個Nvidia的GPU與640個cudacores。
上述屬性的JavaDoc爲available here。 任何幫助將不勝感激。
如何獲得jcuda中的CUDA核心數?如何在jcuda中獲得CUDA內核?
我已經試過,但它不會產生正確的輸出:
int cudacount = cudaDeviceAttr.cudaDevAttrMultiProcessorCount;
它返回16,但我有1個Nvidia的GPU與640個cudacores。
上述屬性的JavaDoc爲available here。 任何幫助將不勝感激。
看來,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();
它得到16但我的NVIDIA gpu只有1gpu和640個cudacores(麥克斯韋爾) –
如果你在那個調用中獲得16個,那麼在一個帶有640個cudacores的Maxwell GPU上,那麼這個調用或者你的代碼或者它的解釋就會被破壞。你應該得到5.我相信發佈的答案是正確的,但如果這個調用實際上返回16,它不會給你正確的答案(640)。 –