CUDA nvprof профилировщик в 12.04

У меня установлена ​​последняя версия инструментария CUDA и драйверов, установленных на сервере 12.04. Драйверы работают нормально: весь пример кода NVIDIA компилируется и запускается, и я написал, скомпилировал и запустил несколько программ CUDA. На днях я пошел использовать новый профилировщик командной строки nvprof и получил следующую ошибку:

Error: unable to locate profiling library libcuinj64.so.5.0.35.

Я дважды проверил библиотеки CUDA, и эта конкретная библиотека фактически включена в LD_LIBRARY_PATH. (Я использовал метод, описанный здесь ). Запуск ldconfig -v показывает, что все библиотеки Cuda загружены в LD_LIBRARY_PATH:

/usr/local/cuda-5.0/lib:
    libcurand.so.5.0 -> libcurand.so.5.0.35
    libnpp.so.5.0 -> libnpp.so.5.0.35
    libcusparse.so.5.0 -> libcusparse.so.5.0.35
    libcufft.so.5.0 -> libcufft.so.5.0.35
    **libcuinj32.so.5.0 -> libcuinj32.so.5.0.35**
    libcudart.so.5.0 -> libcudart.so.5.0.35
    libnvToolsExt.so.5.0 -> libnvToolsExt.so.5.0.35
    libcublas.so.5.0 -> libcublas.so.5.0.35
/usr/local/cuda-5.0/lib64:
    libcurand.so.5.0 -> libcurand.so.5.0.35
    libcuinj64.so.5.0 -> libcuinj64.so.5.0.35
    libnpp.so.5.0 -> libnpp.so.5.0.35
    libcusparse.so.5.0 -> libcusparse.so.5.0.35
    libcufft.so.5.0 -> libcufft.so.5.0.35
    libcudart.so.5.0 -> libcudart.so.5.0.35
    libnvToolsExt.so.5.0 -> libnvToolsExt.so.5.0.35
    libcublas.so.5.0 -> libcublas.so.5.0.35

Библиотека-нарушитель выделена жирным шрифтом. На этом этапе старый компилятор командной строки работает нормально, сам компилятор работает нормально, так что, похоже, он специфичен для nvprof.

Я не уверен, что это Ubuntu или сборка nvprof, предоставляемая NVIDIA. У кого-нибудь есть опыт запуска nvprof под 12.04 или даже 12.10? Кто-нибудь видел эту проблему раньше? Я понимаю, что это довольно нишевый вопрос, но вы никогда не знаете.

ОБНОВЛЕНИЕ: Эта проблема сохраняется в Ubuntu 12.04 с CUDA 5.5 (выпущена 1 августа 2013 г.). Исправление все еще работает, вам просто нужно использовать обновленную библиотеку (см. Ниже).

1
задан 13 April 2017 в 15:23

2 ответа

Я знаю, что это старая версия, но это все еще первая проблема в Google, и я хотел, чтобы люди знали, как ее исправить. Глядя на strace, я понял, что библиотека не найдена ни в одном из путей (похоже, она просматривает другой набор папок по некоторым причинам). Несмотря на это, я просто связал свою копию библиотеки с одним из каталогов, на которые она смотрела, и он работал отлично. Я запустил этот код:

sudo ln -s `locate libcuinj64.so.5.0.35` /usr/lib/x86_64-linux-gnu/libcuinj64.so.5.0.35 

Вы можете просто запустить команду locate самостоятельно, если вы хотите вставить ее вручную, но если у вас есть только одна копия библиотеки, это будет работать нормально. Сначала создайте каталог верхнего уровня, если у вас его нет по какой-либо причине:

sudo mkdir -p /usr/lib/x86_64-linux-gnu/

Надеюсь, это поможет!

Обновление для CUDA 5.5: библиотека для CUDA 5.5 - libcuinj64.so .5.5.22. Итак, однострочная команда:

sudo ln -s `locate libcuinj64.so.5.5.22` /usr/lib/x86_64-linux-gnu/libcuinj64.so.5.5.22
0
ответ дан 13 April 2017 в 15:23

Вероятно, это связано с неправильной установкой $ LD_LIBRARY_PATH. Эта переменная среды должна включать путь к библиотеке CUDA. Пример:

setenv QUDA_INSTALL_PATH /usr/local/cuda/lib64 

setenv LD_LIBRARY_PATH $QUDA_INSTALL_PATH/lib64:$LD_LIBRARY_PATH
0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: