你如何在 jcuda 中获得 CUDA 核心数?
Posted
技术标签:
【中文标题】你如何在 jcuda 中获得 CUDA 核心数?【英文标题】:How do you get CUDA cores count in jcuda? 【发布时间】:2017-12-10 11:32:22 【问题描述】:如何获取jcuda 中的 CUDA 内核数?
我已经尝试过了,但它没有产生正确的输出:
int cudacount = cudaDeviceAttr.cudaDevAttrMultiProcessorCount;
它返回 16,但我有 1 个具有 640 个 cudacores 的 Nvidia GPU。
上述属性的JavaDoc 是available here。 任何帮助将不胜感激。
【问题讨论】:
它有 16 个。但我的 nvidia gpu 只有 1gpu 和 640 个 cudacores (maxwell) 如果您在具有 640 个 cudacores 的 Maxwell GPU 上为该调用获得 16 个,那么该调用或您的代码或对其的解释中出现了问题。你应该得到 5。我相信发布的答案是正确的,但如果这个电话实际上返回 16,它不会给你正确的答案 (640)。 【参考方案1】:似乎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();
【讨论】:
以上是关于你如何在 jcuda 中获得 CUDA 核心数?的主要内容,如果未能解决你的问题,请参考以下文章