CUDA,我需要更新的卡吗? 1.0、1.1、2.0、2.1 上的差异

Posted

技术标签:

【中文标题】CUDA,我需要更新的卡吗? 1.0、1.1、2.0、2.1 上的差异【英文标题】:CUDA, do i need a newer card? Differences on the 1.0, 1.1, 2.0, 2.1 【发布时间】:2012-03-21 16:23:59 【问题描述】:

正在研究一些 GPU CUDA 示例并尝试从 Nvidia 的包中提取一些示例以及 OpenCV 中的一些演示。 Nvidia 的大多数示例都运行,但 OpenCV 给我的主要是 OpenCV Error: Gpu API call (invalid device symbol)。

我有一个 gts 8800 卡,支持 Nvidia 列出的计算能力 1.0。有什么区别,我的错误与此有关吗?如果我购买更新的卡,我可以运行更多的东西吗?

【问题讨论】:

下载CUDA C Programming Guide 并仔细阅读。我将为您提供有关各种计算能力及其差异/改进所需的所有信息。 【参考方案1】:

OpenCV 似乎支持 1.1 及更高版本的 CUDA 功能。悲伤,但真实......

来自 OpenCV Makefile:

set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0)" 
         CACHE STRING "Specify 'real' GPU architectures to build binaries for, 
         BIN(PTX) format is supported")

【讨论】:

【参考方案2】:

是的,如果您购买更新的卡,您应该能够使用更高级的功能。您可以使用 DeviceQuery SDK 示例来获取计算能力,也可以查找许多卡。 CUDA 编程指南和/或 CUDA 最佳实践指南的附录中列出了具有不同计算能力的硬件设备之间的差异,这两者都可以在您获得驱动程序和工具包的同一个地方获得...... developer.nvidia.com,也许吧。

我不知道这是否是您的具体问题的原因;但总的来说,在许多情况下,新设备比旧设备能做的更多。

【讨论】:

我自己编译了opencv后确实让它运行了。只需要弄清楚这些演示源在哪里,我就可以尝试它们。【参考方案3】:

我有一个 8800 gtx,我无法使用 1.0 版的 CUDA 功能。对于正确的 CUDA 检测使用:

if (GpuInvoke.HasCuda &&
    GpuInvoke.GetCudaEnabledDeviceCount() > 0 &&
    new GpuDevice(GpuInvoke.GetDevice()).CudaComputeCapability.Major > 1)
  
   //enter code here

【讨论】:

以上是关于CUDA,我需要更新的卡吗? 1.0、1.1、2.0、2.1 上的差异的主要内容,如果未能解决你的问题,请参考以下文章

当主机具有 CUDA 9 时,我可以使用 CUDA 10 运行 Docker 容器吗?

ubuntu16.04 tensoflow使用服务器需要支持gpu吗

iPad 版本 1.0,而同一应用程序的 iTunes 版本 1.1

CUDA 统一内存工作(具体来说,cudaMallocManaged();)

iPhone应用程序更新与新版本

支持 Opencv GPU 的卡