У меня есть два графических процессора, один - AMD (fglrx-updates) и один nVidia (nvidia-current) - драйверы от PPA x-swat. Карта AMD используется by 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
. это нормально, так как все было хорошо, пока я не установил карту AMD вместе.
Запуск /usr/share/doc/python-pyopencl/examples/benchmark.py
дает сбой точно так же (в pyopencl::program::get_build_info
).
Любой намек на то, что не так?
Реализация, вероятно, не может отделить одну из используемых библиотек, попробуйте запустить приложение с LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH ./yourapp
, и если это не поможет запустить его с помощью strace, и искать библиотеки, которые не могут загрузить и настроить путь, чтобы он мог их найти.