我有两个 GPU,一个是 AMD(fglrx-updates),另一个是 nVidia(nvidia-current),驱动程序来自 x-swat PPA。AMD 卡由 xorg 使用(没有问题)。两个设备都显示在lspci|grep VGA
:
01:00.0 VGA compatible controller: ATI Technologies Inc Device 6718
02:00.0 VGA compatible controller: nVidia Corporation Device 1200 (rev a1)
nvidia 内核模块已加载(dmesg|grep nvidia
):
[ 16.033488] nvidia 0000:02:00.0: enabling device (0000 -> 0003)
[ 16.033501] nvidia 0000:02:00.0: PCI INT A -> GSI 40 (level, low) -> IRQ 40
[ 16.033507] nvidia 0000:02:00.0: setting latency timer to 64
OpenCL 问题
我创建了/etc/OpenCL/vendors/nvidia.icd
包含
/usr/lib/nvidia-current/libcuda.so
检测到设备,平台NVIDIA CUDA
,设备GeForce GTX 560 Ti
。但是,没有为设备编译代码,clBuildProgram
总是返回CL_BUILD_RPOGRAM_FAILURE
查询clGetProgramBuildInfo
崩溃并带有不具信息性的回溯
#0 0x00007ffff7442bef in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff22c0e67 in ?? () from /usr/lib/nvidia-current/libcuda.so
该程序是cl.h
基于英特尔的 SDK 构建的;这没问题,因为在我安装 AMD 卡之前一切都很好。
运行/usr/share/doc/python-pyopencl/examples/benchmark.py
同样崩溃(在pyopencl::program::get_build_info
)。
有什么提示表明哪里出了问题吗?
答案1
实现可能无法 dlopen 它使用的某个库,请尝试使用 运行您的应用程序LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH ./yourapp
,如果这没有帮助,请使用 strace 运行它,并查找无法加载的库并调整路径以便可以找到它们。