GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Schwerwiegender Fehler:cuda.h:Keine solche Datei oder Verzeichnis

Ich habe noch nie selbst ein cuda-Projekt kompiliert, aber ich denke, Sie müssen die Bibliothek mit dem Compiler verknüpfen.

Etwas schnelles Googeln sagt, Nvidia hat dafür einen Compiler, der alles handhabt. Sie müssen das also nur installieren und Sie sollten loslegen können. Es heißt NVVC. Nach der Installation einfach ausführen:

nvcc helloworld.cu -o hello.out

Bei externen Bibliotheken wie diesen müssen Sie sie fast immer verknüpfen. Für die Standardbibliothek müssen Sie dies nicht tun, da der Linker bereits weiß, wo er sie finden kann.


Die richtige Include-Header-Datei dafür ist nicht cuda.h aber cuda_runtime.h , vorausgesetzt, Sie möchten gcc verwenden als Compiler für diesen Code. Wie die andere Antwort zeigt, könnten Sie einfach nvcc verwenden (das bereits auf Ihrem Rechner installiert ist), was überhaupt keine Include-Header für diesen Code erfordern würde.

Wenn Sie nvcc verwenden möchten Sie sollten wahrscheinlich sicherstellen, dass der entsprechende PATH Umgebungsvariable gesetzt. Diese und andere nützliche Informationen sind in der Linux-Installationsanleitung enthalten.

Wenn Sie also Ihren Code wie folgt ändern:

#include <cuda_runtime.h>

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

Sie sollten in der Lage sein, es erfolgreich mit einem Befehl wie dem folgenden zu kompilieren:

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

Der Pfad nach -I switch sollte den Pfad zu cuda_runtime.h enthalten auf Ihrer Maschine. Normalerweise würde das wie oben eingerichtet werden, aber ich bin mir nicht sicher, ob die cuda Symlink ist auf Ihrem Rechner eingerichtet, und es sieht auch so aus, als ob sich Ihr Include-Verzeichnis an einem ungewöhnlichen Ort befindet, z. B.

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

aber Sie können find verwenden genau so, wie Sie es getan haben, um es zu finden.

Ebenso der Pfad nach dem -L switch muss der Pfad zu Ihrem cuda lib64 sein Verzeichnis, das libcudart.so und seine Cousins ​​enthalten wird. Auch dies wäre normalerweise auf dem von mir gezeigten Pfad symbolisch verlinkt, aber Ihre Maschineninstallation entspricht möglicherweise nicht meinen Erwartungen. Sie sollten find verwenden können um den richtigen Pfad zu finden.

Und wie in der anderen Antwort angegeben, wenn Sie nvcc verwenden (die Sie bereits gefunden haben), müssen Sie den -I nicht explizit auswählen und -L Weg. Der einfachste Weg, dies zum Laufen zu bringen, besteht darin, Ihre Datei von has_cuda.c umzubenennen bis has_cuda.cu , dann sollten Sie in der Lage sein, wie folgt zu kompilieren:

nvcc has_cuda.cu -o has_cuda

Schließlich ist Ubuntu 16.10 derzeit keine offiziell unterstützte Distribution für CUDA, daher kann es einige unerwartete Dinge geben, wie es auf Ihrem Computer installiert wurde. Ich möchte Sie ermutigen, die zuvor verlinkte Installationsanleitung zu lesen, da sie nützliche Informationen zu den Einrichtungsschritten nach der Installation enthält, z. B. zum Festlegen von Umgebungsvariablen und auch zum "Verifizieren" der CUDA-Installation.

Jedes Mal, wenn Sie CUDA-Codes ausführen und irgendwelche Probleme haben, stellen Sie sicher, dass Sie die richtige cuda-Fehlerprüfung verwenden und Ihre Codes mit cuda-memcheck wie folgt ausführen:

cuda-memcheck ./has_cuda

Auch wenn Sie die gemeldeten Fehlerinformationen nicht verstehen, können sie für diejenigen hilfreich sein, die versuchen, Ihnen zu helfen.


Linux
  1. Fehler:xenstore-read:xs_open:Keine solche Datei oder Verzeichnis auf DomU [Gelöst]

  2. Fehler:Xend Start – /proc/xen/capabilities:No such file or directory [Gelöst]

  3. schwerwiegender Fehler openssl/evp.h:Keine solche Datei oder Verzeichnis:[Gelöst]

  4. Kann nicht ausgeführt werden Keine solche Datei oder Verzeichnis [Fix]

  5. Behebt schwerwiegenden Fehler openssl err.h – Keine solche Datei oder kein Verzeichnis [OpenCA]

Mkdir:Verzeichnis kann nicht erstellt werden:Keine solche Datei oder Verzeichnis?

Kompilierungsfehler:g++:Fehler beim Versuch, 'cc1plus' auszuführen:execvp:Keine solche Datei oder kein solches Verzeichnis

Warum bedeutet ENOENT No such file or directory?

So vermeiden Sie den Fehler „Keine solche Datei oder Verzeichnis“ für das Makefile-Ziel „make clean“.

conda source deactivate :bash:deactivate:Keine solche Datei oder Verzeichnis

ssh-add gibt zurück mit:Fehler beim Verbinden mit dem Agenten:Keine solche Datei oder kein solches Verzeichnis