Der Cuda-compiler funktioniert nicht mit GCC-4.5 +
Ich bin neu auf der Cuda, und ich bin versucht zu kompilieren dieses einfache test_1.cu
Datei:
#include <stdio.h>
__global__ void kernel(void)
{
}
int main (void)
{
kernel<<<1,1>>>();
printf( "Hello, World!\n");
return 0;
}
diesem: nvcc test_1.cu
Die Ausgabe die ich bekomme, ist:
In file included from /usr/local/cuda/bin/../include/cuda_runtime.h:59:0,
from <command-line>:0:
/usr/local/cuda/bin/../include/host_config.h:82:2: error: #error -- unsupported GNU version! gcc 4.5 and up are not supported!
mein gcc --version:
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Wie installiere ich eine zweite version von gcc (4.4 -) zusammen mit 4,6 ohne messing alles?
Fand ich dieses alte Thema:
CUDA nicht kompatibel mit meiner gcc-version
war die Antwort:
gcc 4.5 und 4.6 werden nicht unterstützt mit CUDA - code wird nicht kompiliert und
der rest der toolchain, inklusive cuda-gdb, nicht mehr richtig funktioniert.
Sie können nicht verwenden Sie, und die Einschränkung ist nicht verhandelbar.Ihre einzige Lösung ist die Installation des gcc-4.4-version, wie einer zweiten
compiler (die meisten Distributionen ermöglichen es, die). Es gibt eine option, um
nvcc-compiler-bindir, die verwendet werden können, eine alternative
compiler. Erstellen Sie ein lokales Verzeichnis und stellen symbolische links auf die
unterstützte gcc-version ausführbaren Dateien. Übergeben Sie das lokale Verzeichnis, in nvcc
über die --compiler-bindir option, und Sie sollten in der Lage sein zu kompilieren
CUDA-code, ohne Einfluss auf den rest Ihres Systems.
Aber ich habe keine Ahnung, wie es zu tun
- Nicht ganz richtig. gcc 4.5 funktioniert Prima. Es erfordert, dass Sie den Kommentar, die Fehler generieren von code aus der header-Datei. gcc 4.6, ist eine andere Frage, die nicht unterstützt cuda 4.0. Aber ich bin zuversichtlich den neuen cuda 4.1 (Anfang Januar) wird kompatibel sein mit 4.6
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun einige online-Forschung zeigt mehrere Methoden für die Erfüllung dieser Aufgabe. Ich habe gerade getestet der Methode finden Sie hier: http://www.vectorfabrics.com/blog/item/cuda_4.0_on_ubuntu_11.04 und es funktionierte wie ein Charme für mich. Es führt Sie schrittweise durch die Installation von gcc 4.4 und die Erstellung von Skripts ausführen, die version mit nvcc. Wenn Sie lieber versuchen, die Methode erwähnt in Ihrem Beitrag, dem empfehle ich folgende, der erste link zur Installation von gcc4.4 und erstellen Sie symbolische links, wie bereits erwähnt, in Ihrem Beitrag. Erstellen von symbolischen links in Linux wird erreicht, indem die " ln " - Befehl.
Beispiel:
Dieser link gibt ein paar Beispiele für das erstellen von symbolischen links auf beiden Ubuntu und Windows: http://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/. Hoffentlich, die Punkte, die Sie in die richtige Richtung.
In meinem Fall, dass ich nicht über root-Rechte, so konnte ich nicht vollständig ersetzen Sie den aktuellen gcc (4.7) mit der älteren version 4.4 (was ich denke, wäre eine schlechte alternative). Obwohl, ich habe Rechte, wo CUDA installiert wurde. Meine Lösung war das anlegen eines extra Ordner (z.B. /somepath/gccfornvcc/), wo ich auch Rechte hatte, dann erstellen Sie einen link zu einer nvcc compiler akzeptiert. Ich hatte schon gcc-4.4 verfügbar (aber Sie können es installieren, ohne dass Sie Ihre aktuelle version).
Dann in den gleichen Ordner, in dem die nvcc binären Leben, sollten Sie sich eine Datei namens nvcc.Profil . Dort müssen Sie nur die folgende Zeile hinzufügen:
Und das wird nvcc mit dem richtigen compiler. Dadurch bleibt das system in einem ordnungsgemäßen Zustand, halten die neueste compiler, aber nvcc (nur nvcc) wird die Nutzung der alten compiler-version.
Ich denke, man kann versuchen die neue, beta-version, dass basierend auf LLVM.
Anderer Weg, um
nvcc
Arbeit mit nicht-Standard-compiler (im Gegensatz zu @Sluml Antwort, es ermöglicht mehr Flexibilität):Zunächst, genau wie @Einbruch vorgeschlagen, die Sie brauchen, zu erstellen, Verzeichnis
~/local/gcc-4.4/
, und erstellen Sie dann es symbolische Links für die richtigen Versionen von gcc:for i in gcc gxx; do ln -s /usr/bin/${i}-4.4 ~/local/cudagcc/${i}; done
. Nun, wenn Sie Sie ausführennvcc -ccbin ~/local/gcc-4.4/...
nvcc wird die Verwendung der richtigen Versionen von gcc.Hier ist kleine CMake-snippet zwingen nvcc bestimmte host-compiler.
Referenz:
Ich update mein gcc von 4.4 bis 4.6. Dann konnte ich nicht verwenden nvcc kompilieren meines Codes. Zum Glück, durch die Verwendung der Methode durch den folgenden link. Ich meine Standard-gcc-compiler zurück zu gcc 4.4. Ich könnte jetzt kompilieren Sie die Datei entweder mit gcc4.4 oder gcc4.6. beenden Sie cool
http://ubuntuguide.net/how-to-install-and-setup-gcc-4-1g4-1-in-ubuntu-10-0410-10