2

Я пытаюсь проверить установку CUDA и сталкиваюсь с некоторыми проблемами. Я успешно создал все примеры, которые поставляются с SDK для вычислений на GPU. Однако, когда я пытаюсь запустить deviceQuery, я получаю сообщение о том, что libcudart.so.4 не может быть найден.

Тем не мение:

echo $LD_LIBRARY_PATH

возвращается

/usr/local/cuda/lib64

Внутри этого каталога находится файл:

libcudart.so.4

Какие еще ошибки могут быть причиной того, что библиотека не будет найдена?

РЕДАКТИРОВАТЬ для ответа Фрэн:

  1. Да, я экспортирую переменную
  2. Я не уверен, является ли программа 64-битной, однако она была частью 64-битной установки SDK, поэтому я хотел бы предположить, что это
  3. Вывод ldd:

    #ldd deviceQuery
    linux-vdso.so.1 =>  (0x00007fff94ecc000)
    libcudart.so.4 => /usr/local/cuda/lib64/libcudart.so.4 (0x00007f2d4658a000)
    libcuda.so.1 => /usr/lib64/libcuda.so.1 (0x00007f2d45b1e000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000037f1200000)
    libm.so.6 => /lib64/libm.so.6 (0x00000037e5e00000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000037f0600000)
    libc.so.6 => /lib64/libc.so.6 (0x00000037e5600000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00000037e5a00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00000037e5200000)
    librt.so.1 => /lib64/librt.so.1 (0x00000037e6200000)
    libz.so.1 => /lib64/libz.so.1 (0x00000037e6e00000)
    /lib64/ld-linux-x86-64.so.2 (0x00000037e4e00000)
    

Я обнаружил, что могу запустить его как обычный пользователь, но это приводит к сбою, поскольку у пользователя нет доступа к графическому процессору. Запуск с sudo вызывает ошибку отсутствующего файла.

Бег:

sudo ldd deviceQuery

подтверждает отсутствующий libcudart.so.4 во второй строке вывода.

2 ответа2

1
  1. Вы экспортировали LD_LIBRARY_PATH из оболочки, в которой вы запускаете программу?

  2. Являются ли и программа, и общая библиотека 64-разрядными (или 32-разрядными)?

  3. Что выводится программой ldd program , где program - это программа, которая не может найти библиотеку во время выполнения?

1

Если вы строите из исходного кода, у вас есть возможность построить его так, чтобы он использовал существующий путь к библиотеке через --prefix = или --libdir =. В противном случае вы можете:

  • Добавьте /usr /local /cuda /lib64 в LD_LIBRARY_PATH в /etc /profile
  • переместите его вручную (например, в /usr /local /) и создайте символическую ссылку для /usr /local /cuda в /usr /local
  • используйте LDPRELOAD для предварительной загрузки отсутствующих библиотек вручную

Просто быстрое напоминание о LD_LIBRARY_PATH - имейте в виду, что чем больше путей вы добавляете, тем больше динамический компоновщик должен просматривать, чтобы найти его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .