我正在尝试使用 CUDA 技术,但有一些问题
greymachine ~/NVIDIA_CUDA-5.0_Samples/1_Utilities/deviceQuery $ ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
greymachine ~/NVIDIA_CUDA-5.0_Samples/1_Utilities/deviceQuery $
那是我的问题。
我的配置:
$ nvidia-settings -q NvidiaDriverVersion
Attribute 'NvidiaDriverVersion' (greymachine.localdomain:0.0): 310.19
$ uname -r
3.7.1-un-def-alt2.1
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Fri_Sep_21_17:28:58_PDT_2012
Cuda compilation tools, release 5.0, V0.2.1221
$ ./deviceQueryDrv
./deviceQueryDrv Starting...
CUDA Device Query (Driver API) statically linked version
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GT 430"
CUDA Driver Version: 5.0
CUDA Capability Major/Minor version number: 2.1
Total amount of global memory: 1024 MBytes (1073283072 bytes)
( 2) Multiprocessors x ( 48) CUDA Cores/MP: 96 CUDA Cores
GPU Clock rate: 1400 MHz (1.40 GHz)
Memory Clock rate: 800 Mhz
Memory Bus Width: 128-bit
L2 Cache Size: 131072 bytes
Max Texture Dimension Sizes 1D=(65536) 2D=(65536,65535) 3D=(2048,2048,2048)
Max Layered Texture Size (dim) x layers 1D=(16384) x 2048, 2D=(16384,16384) x 2048
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 32768
Warp size: 32
Maximum number of threads per multiprocessor: 1536
Maximum number of threads per block: 1024
Maximum sizes of each dimension of a block: 1024 x 1024 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 65535
Texture alignment: 512 bytes
Maximum memory pitch: 2147483647 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Concurrent kernel execution: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Bus ID / PCI location ID: 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
$ lsmod | grep nvidia
nvidia 9381500 39
i2c_core 30993 3 i2c_i801,nvidia,videodev
dmesg:
[ 28.548939] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 310.19 Thu Nov 8 00:52:03 PST 2012
[ 29.065356] NVRM: GPU at 0000:01:00: GPU-5a5ce500-f7fd-ab9d-64d7-cc0d1fe26ff1
[ 29.065360] NVRM: Your system is not currently configured to drive a VGA console
[ 29.065361] NVRM: on the primary VGA device. The NVIDIA Linux graphics driver
[ 29.065362] NVRM: requires the use of a text-mode VGA console. Use of other console
[ 29.065363] NVRM: drivers including, but not limited to, vesafb, may result in
[ 29.065364] NVRM: corruption and stability problems, and is not supported.
1682.331776] NVRM: GPU at 0000:01:00: GPU-5a5ce500-f7fd-ab9d-64d7-cc0d1fe26ff1
$ ldd ./deviceQuery
linux-vdso.so.1 (0x00007fffd4dff000)
libcudart.so.5.0 => /usr/local/cuda-5.0/lib64/libcudart.so.5.0 (0x00007f5e90c26000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f5e90922000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f5e9070c000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5e90362000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5e90145000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5e8ff40000)
librt.so.1 => /lib64/librt.so.1 (0x00007f5e8fd38000)
libm.so.6 => /lib64/libm.so.6 (0x00007f5e8fa3e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5e90eaa000)
我已经安装了从 nvidia 站点下载的 cuda 工具包,我已经从我的发行版(Alt Linux)预编译了驱动程序,但是 libcuda.so 没有附带它们,所以我从原始 nvidia 驱动程序中复制了该库。编译没问题。我还用 304.51 测试了 2.6.32 内核:得到了相同的 msg,但这是可以理解的,cuda 带有 304.54 驱动程序。
AFAIU,如果我有更新的驱动程序,而不是 cuda 工具包,那没关系。但正如你所见,有些事情是错误的。
那么,内核驱动程序可以比原始驱动程序更新(即我使用 cuda 获得的驱动程序)可能我应该自己编译模块吗?但是为了什么,为什么?我的发行版模块运行良好。
谢谢