c++ 9.2 programming - Perché non è possibile trovare libcudart.so.4 durante la compilazione degli esempi CUDA in Ubuntu?





4 Answers

Per prima cosa è necessario concatenare i percorsi ai binari e alle librerie CUDA. Questo è fatto semplicemente aggiungendo le seguenti righe al tuo file .bashrc.

export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=:/usr/local/cuda/lib64

Se si utilizza un sistema operativo a 32 bit, cambiare lib64 in lib

Secondo, dovevano esserci alcuni file di oggetti condivisi installati in / usr / lib o / usr / lib64, a seconda del sistema operativo in uso. Questi file oggetto dovrebbero essere contenuti in una directory chiamata "nvidia". I due file che ci interessano sono nomi libcuda.so.drivernumber e libOpenCL.so.somenumber. Per distinguere tra i file di oggetti condivisi effettivi basta usare ls -l . I collegamenti simbolici mostreranno a cosa stanno effettivamente collegando.

Come root, eseguire i seguenti comandi:

ln -s /usr/lib64/nvidia/libcuda.so.somenumber /usr/lib64/libcuda.so
ln -s /usr/lib64/nvidia/libOpenCL.so.somenumber /usr/lib64/libOpenCL.so

Questo dovrebbe consentire di compilare tutte le fonti nell'SDK.

A partire da Cuda 5.5 e Ubuntu 12.04 / 12.10, il comando sopra diventa (notare le modifiche alle directory di Ubuntu e Cuda) per 64 bit

ln -s /usr/local/cuda/lib64/libcuda.so.5.5 /usr/lib/libcuda.so.5.5

Cioè, le cartelle lib su Ubuntu a partire dalla 12.04 sono lib32 e lib; il 64 è implicito e cuda 5.5 e versioni successive ora si installa in una directory diversa.

gpu toolkit download

Sto cercando di far funzionare i miei campioni CUDDK, ma ottengo il seguente errore:

./bandwidthTest: error while loading shared libraries:
                 libcudart.so.4: cannot open shared object file:
                 No such file or directory

Perché posso compilare l'esempio con successo, ma non eseguirlo? C'è un modo per specificare manualmente il percorso della libreria di runtime CUDA?




LD_LIBRARY_PATH è fortemente deprecato. Potrebbe rovinare altri programmi e altri potrebbero ripristinarli. Dovrebbe essere usato solo per sovrascrivere temporaneamente i percorsi permanenti a scopo di test (non prendere la parola, google).

Invece, aggiungi una riga con la tua directory cuda lib su /etc/ld.so.conf, dopo ogni linea esistente.

Ad esempio, se hai installato su / usr / local / cuda, dovrai aggiungere

32-bit: / usr / local / cuda / lib

64-bit: / usr / local / cuda / lib64

Salva ed esegui ldconfig. Questo dovrebbe risolvere in modo permanente il problema.

I collegamenti simbolici sono probabilmente già impostati dall'installazione. In caso contrario, aggiungili come consigliato da Alex.

Nota - Ho ricevuto degli errori che fanno riferimento a / lib, ma ho dovuto aggiungere lib64 per correggerli.




creare un file nvidia_settings.conf in /etc/ld.so.conf.d/ e aggiungere il percorso alle librerie nel file nvidia_settings.conf

 /usr/local/cuda/lib64
 /usr/local/cuda/lib

Ora per aggiornare le modifiche eseguire il seguente comando:

sudo ldconfig



Nel mio caso stavo eseguendo un'applicazione usando MPI. L'errore era:

libcudart.so.7: cannot open shared object file

CUDA è stato installato correttamente in tutti i nodi. Inoltre, come nelle risposte precedenti, le variabili $ PATH e $ LD_LIBRARY_PATH puntavano rispettivamente al binario e alle librerie.

Il passaggio del $ PATH e $ LD_LIBRARY_PATH nel comando MPI ha risolto il problema.

mpirun -x PATH=$PATH -x LD_LIBRARY_PATH=$LD_LIBRARY_PATH ...



Related