正在研究一些GPU CUDA样本并尝试从Nvidia的包中取出一些样本以及OpenCV中的一些演示。大多数Nvidia的样本运行,但OpenCV主要给我OpenCV错误:Gpu API调用(无效的设备符号)。
我有一张gts 8800卡,支持Nvidia列出的计算能力1.0。有什么区别,我的错误与此有关吗?如果我买一张新卡,我可以运行更多东西吗?
答案 0 :(得分:1)
是的,如果您购买较新的卡,您应该可以使用更高级的功能。您可以使用DeviceQuery SDK示例来获取计算功能,或者您可以查找许多卡。不同计算能力的硬件设备之间的差异在“CUDA编程指南”和/或“CUDA最佳实践指南”的附录中列出,这两者都可以在获得驱动程序和工具包的位置获得... developer.nvidia.com,也许
我不知道这是否是您特定问题的原因;但一般而言,在许多情况下,较新的设备可以比旧设备做得更多。
答案 1 :(得分: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 :(得分:1)
我有一个8800 gtx,我不能使用版本1.0的CUDA功能。对于正确的CUDA检测使用:
if (GpuInvoke.HasCuda &&
GpuInvoke.GetCudaEnabledDeviceCount() > 0 &&
new GpuDevice(GpuInvoke.GetDevice()).CudaComputeCapability.Major > 1)
{
//enter code here
}