1

如何获得jcuda中的 CUDA 核心数?

我已经尝试过了,但它没有产生正确的输出:

int cudacount = cudaDeviceAttr.cudaDevAttrMultiProcessorCount;

它返回 16,但我有 1 个具有 640 个 cudacore 的 Nvidia GPU。

上述属性的 JavaDoc可在此处获得。任何帮助将不胜感激。

4

1 回答 1

2

似乎这个答案几乎完全符合您的要求。它是用 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();
于 2017-07-06T13:11:31.770 回答