【问题标题】:CUDA, do i need a newer card? Differences on the 1.0, 1.1, 2.0, 2.1CUDA,我需要更新的卡吗? 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 并仔细阅读。我将为您提供有关各种计算能力及其差异/改进所需的所有信息。

标签: c++ opencv cuda nvidia


【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      相关资源
      最近更新 更多