GNU/Linux >> Linux Esercitazione >  >> Linux

Errore irreversibile:cuda.h:file o directory non presenti

Non ho mai compilato un progetto cuda da solo, ma penso che dovrai collegare la libreria al compilatore.

Alcune rapide ricerche su Google dicono che Nvidia ha un compilatore per questo che gestirà tutto. Quindi devi solo installarlo e dovresti essere a posto. Si chiama NVVC. Una volta installato basta eseguire:

nvcc helloworld.cu -o hello.out

Con librerie esterne come queste, è quasi sempre necessario collegarle. Non devi farlo per la libreria standard perché il linker sa già dove trovarlo.


Il file di intestazione include corretto per questo non è cuda.h ma cuda_runtime.h , supponendo che tu voglia utilizzare gcc come compilatore per questo codice. Come sottolinea l'altra risposta, potresti semplicemente usare nvcc (che è già installato sulla tua macchina) che non richiederebbe alcuna intestazione di inclusione per questo codice.

Se vuoi usare nvcc probabilmente dovresti assicurarti che il PATH appropriato variabile di ambiente è impostata. Questa e altre informazioni utili sono contenute nella guida all'installazione di Linux.

Quindi, se modifichi il tuo codice in questo modo:

#include <cuda_runtime.h>

int main ()
{
    int deviceCount;
    cudaError_t e = cudaGetDeviceCount(&deviceCount);
    return e == cudaSuccess ? deviceCount : -1;
}

Dovresti essere in grado di compilarlo con successo usando un comando simile a questo:

gcc -I/usr/local/cuda/include -L/usr/local/cuda/lib64 has_cuda.c -lcudart -o has_cuda

Il percorso dopo -I switch dovrebbe contenere il percorso di cuda_runtime.h sulla tua macchina. Normalmente sarebbe impostato come sopra, ma non sono sicuro che il cuda symlink è impostato sul tuo computer e sembra anche che la tua directory di inclusione potrebbe trovarsi in un posto insolito, ad es.

/usr/local/cuda-8.0/targets/x86_64-linux/include

ma puoi usare find proprio come hai fatto tu per individuarlo.

Allo stesso modo, il percorso dopo -L switch deve essere il percorso del tuo cuda lib64 directory, che conterrà libcudart.so e i suoi cugini. Ancora una volta, normalmente sarebbe un collegamento simbolico sul percorso che ho mostrato, ma l'installazione della tua macchina potrebbe non essere conforme alle mie aspettative. Dovresti essere in grado di usare find per individuare il percorso corretto.

E come indicato nell'altra risposta, se usi nvcc (che hai già individuato), non avrai bisogno di selezionare esplicitamente -I e -L sentiero. Il modo più semplice per farlo funzionare è rinominare il file da has_cuda.c a has_cuda.cu , allora dovresti essere in grado di compilare in questo modo:

nvcc has_cuda.cu -o has_cuda

Infine, Ubuntu 16.10 non è una distribuzione ufficialmente supportata per CUDA in questo momento, quindi potrebbero esserci alcune cose inaspettate nel modo in cui è stato installato sul tuo computer. Ti invito a leggere la guida all'installazione precedentemente collegata, poiché contiene informazioni utili sui passaggi di configurazione post-installazione, come l'impostazione delle variabili di ambiente e anche su come "verificare" l'installazione di CUDA.

Ogni volta che esegui codici CUDA e riscontri qualsiasi tipo di problema, assicurati di utilizzare il corretto controllo degli errori cuda ed esegui i tuoi codici con cuda-memcheck, in questo modo:

cuda-memcheck ./has_cuda

Anche se non comprendi le informazioni sull'errore riportate, potrebbero essere utili per coloro che cercano di aiutarti.


Linux
  1. Errore:xenstore-read:xs_open:nessun file o directory di questo tipo su DomU [Risolto]

  2. Errore:Xend Start – /proc/xen/capabilities:nessun file o directory di questo tipo [Risolto]

  3. errore fatale openssl/evp.h:nessun file o directory di questo tipo:[Risolto]

  4. Mkdir:Impossibile creare una directory:nessun file o directory di questo tipo?

  5. Errore:Tcl.h non trovato (nessun file o directory di questo tipo)?

Correzione dell'errore fatale openssl err.h – Nessun file o directory di questo tipo [OpenCA]

Ssh - Provare a Ssh nel server e ottenere Key_load_public:nessun errore di file o directory di questo tipo?

Perché ENOENT significa No such file or directory?

Come evitare Nessun file o directory di questo tipo Errore per il target Makefile `make clean`

sys/types.h:file o directory non presenti

ssh-add restituisce con:Errore durante la connessione all'agente:file o directory non presenti