Linux 为什么CUDA 6.5示例不适用于CUDA 5.5?

Linux 为什么CUDA 6.5示例不适用于CUDA 5.5?,linux,cuda,Linux,Cuda,我的CUDA版本是5.5,nvcc的输出证明了这一点,即: nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2013 NVIDIA Corporation Built on Wed_Jul_17_18:36:13_PDT_2013 Cuda compilation tools, release 5.5, V5.5.0 我还没有使用6.5,因为我的NVIDIA驱动程序是331.113(它是Kubuntu 14.04 repo版本,

我的CUDA版本是5.5,nvcc的输出证明了这一点,即:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2013 NVIDIA Corporation
Built on Wed_Jul_17_18:36:13_PDT_2013
Cuda compilation tools, release 5.5, V5.5.0
我还没有使用6.5,因为我的NVIDIA驱动程序是331.113(它是Kubuntu 14.04 repo版本,我就是这样安装的)

我得到了6.5个示例,例如,如果我制作
2_graphics/Mandelbrot
示例,没有编译错误,但是当我运行它时,我得到

[CUDA Mandelbrot/Julia Set] - Starting...
CUDA error at ../../common/inc/helper_cuda.h:1032 code=35(cudaErrorInsufficientDriver) "cudaGetDeviceCount(&device_count)"
现在,如果我进入
examples/5.5/2_graphics/Mandelbrot
目录并
make
代码,当我运行它时,一切正常


当我收到
CudaErrorSufficientDriver
错误时,会发生什么情况?这两个
Mandelbrot
包之间会导致此错误但不会导致编译错误的区别是什么?

您运行的应用程序:
2_graphics/Mandelbrot
显然是用CUDA 6.5工具编译的,即nvcc,最重要的是它与CUDA 6.5运行时库(cudart)相链接

此库将在初始化时检查当前安装的驱动程序版本。如果它不是CUDA 6.5的足够驱动程序,它将在CUDA API调用中返回错误


如果您只安装了CUDA 5.5,并且仅使用CUDA 5.5工具和库构建了
2_graphics/Mandelbrot
示例代码(即使示例代码本身来自CUDA 6.5发行版)最有可能的是它会正常工作。

显示的错误代码非常清楚:CUDA 6.5运行时需要比您安装的CUDA驱动程序更新的CUDA驱动程序。如果你安装了一个适合CUDA 6.5的最新驱动程序,你可以运行CUDA 6.5和CUDA 5.5构建的应用程序是的,我知道这就是错误的意思。我不清楚是什么(在源代码或编译中)导致了这种情况,因为
/6.5/*/Mandelbrot
/5.5/*/Mandelbrot
都做了完全相同的事情。当您使用CUDA 6.5构建时,可执行文件链接到CUDA 6.5运行时,这需要类似于驱动程序343.19的东西。使用CUDA 5.5构建时,可执行文件链接到5.5运行时。区别不在于应用程序,而在于CUDA运行时链接到二进制文件中。