CUDA nvprof profiler em 12.04

1

Eu tenho o kit de ferramentas e drivers CUDA mais recentes instalados em um servidor 12.04. Os drivers estão funcionando bem: todo o código de amostra da NVIDIA é compilado e executado, e eu escrevi, compilei e executei vários programas CUDA. No outro dia fui usar o novo profiler de linha de comando nvprof e fui saudado com o seguinte erro:

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

Eu verifiquei duas vezes as bibliotecas CUDA e essa biblioteca específica está incluída no LD_LIBRARY_PATH. (Eu usei o método descrito aqui ). A execução de ldconfig -v mostra que todas as bibliotecas do Cuda são carregadas no 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

A biblioteca incorreta está em negrito. Neste ponto, o antigo compilador de linha de comando funciona bem, o próprio compilador funciona bem, então parece ser específico do nvprof.

Não tenho certeza se esse é o Ubuntu ou o build do nvprof fornecido pela NVIDIA. Alguém tem uma experiência com o nvprof em 12.04 ou mesmo 12.10? Alguém já viu esse problema antes? Eu percebo que esta é uma questão bastante específica, mas você nunca sabe.

UPDATE: Este problema parece persistir no Ubuntu 12.04 com CUDA 5.5 (lançado em 1 de agosto de 2013). A correção ainda funciona, você só precisa usar a biblioteca atualizada (veja abaixo).

    
por Logan Mayfield 07.04.2013 / 15:00

2 respostas

2

Eu sei que isso é antigo, mas esse ainda é o primeiro hit no google por esse problema e eu queria que as pessoas soubessem como corrigi-lo. Olhando strace me disse que não estava encontrando a biblioteca em qualquer um dos caminhos (parece que está olhando através de um conjunto diferente de pastas por algum motivo). Independentemente disso, eu apenas vinculei minha cópia da biblioteca em um dos diretórios que ela estava olhando, e funcionou perfeitamente bem. Eu corri este código:

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

Você pode simplesmente executar o comando locate sozinho se quiser colocá-lo manualmente, mas se tiver apenas uma cópia da biblioteca, isso funcionará bem. Crie o diretório de nível superior primeiro se você não o tiver por algum motivo:

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

Espero que isso ajude!

Atualização para o CUDA 5.5: A biblioteca para o CUDA 5.5 é libcuinj64.so.5.5.22. Então, o comando de uma linha é:

sudo ln -s 'locate libcuinj64.so.5.5.22' /usr/lib/x86_64-linux-gnu/libcuinj64.so.5.5.22
    
por user165122 07.06.2013 / 04:55
1

É provavelmente devido a um valor não definido $ LD_LIBRARY_PATH. Essa variável de ambiente deve incluir o caminho para a biblioteca CUDA. Exemplo:

setenv QUDA_INSTALL_PATH /usr/local/cuda/lib64 

setenv LD_LIBRARY_PATH $QUDA_INSTALL_PATH/lib64:$LD_LIBRARY_PATH
    
por ritter 10.04.2013 / 18:16