Von der question ist bekannt, dass PTX über verschiedene Architekturen portierbar ist. Ich glaube, dass dies die Migration von: sm_20 zu sm_30 ermöglicht. Ich habe einen speziellen Anwendungsfall, um von sm_20 zu sm_10 zu gelangen. So ist es möglich, mit einem PTX, der für das Ziel sm_20 kompiliert wurde, eine Binärdatei wie beispielsweise cubin für das Ziel sm_10 zu erzeugen.Kompilieren von CUDA PTX zu binär für ein älteres Ziel
Antwort
PTX ist vorwärts kompatibel, wenn sie gegen eine bestimmte Architektur kompiliert (d.h. unter Verwendung des sm_*
Flag), aber es ist nicht rückwärtskompatibel. Eine Möglichkeit, um darüber hinwegzukommen, besteht darin, eine bestimmte virtuelle Architektur anzugeben und dann Binärbilder für alle realen Architekturen zu generieren, auf die Sie gezielt abzielen. Zum Beispiel
nvcc -arch=compute_20 -code=sm_20,sm_30,sm_35
erzeugt PTX für die Rechen- 2.0 virtuelle Architektur und erzeugen Binärbildern für 2,0, 3,0 und 3,5-Geräte. Bitte beachten Sie, dass compute 1.0 ab CUDA 7.0 veraltet ist. Dies ist als fat binary Ansatz bekannt.
Siehe code generation options für den Unterschied zwischen realen und virtuellen Architekturen.
EDIT: Eigentlich ist es ein bisschen überflüssig -arch=compute_35
und -code=sm_35
angeben, da der JIT-Compiler und baute es für Sie interveniert hätte. Solange es Ihnen nichts ausmacht, ein wenig zusätzliches Fett in Ihrem Fett-Doppelstern zu nehmen, dann ist es wohl nicht so wichtig.
EDIT2: code
Muss größer oder gleich arch
weil PTX nicht rückwärtskompatibel ist. Danke an Robert Crovella für den Hinweis auf diesen dummen Fehler.
- 1. CUDA - PTX Übertrag Ausbreitung
- 2. Wie zu erklären Inline-PTX internen Compiler-Fehler von CUDA
- 3. Kann ich ein Cuda-Programm kompilieren, ohne ein Cuda-Gerät zu haben?
- 4. iPhone kompilieren abhängig von Ziel
- 5. CMake + Cuda: cpp-Dateien in Cuda-Modus kompilieren (-X = cu)
- 6. Nicht aufgelöste extern beim Kompilieren von OpenCL zu PTX mit Clang?
- 7. pthreads kompilieren aber binär ist nicht erstellt
- 8. Neueste PTX ISA-Version für sm_10
- 9. Wie kann ich ein CUDA-Programm für sm_1X UND sm_2X kompilieren, wenn ich eine Oberfläche Erklärung habe
- 10. Theano + Cuda 8.0 unter Windows - Kompilieren Fehler
- 11. Kann python distutils CUDA-Code kompilieren?
- 12. Ungültige Operanden zu Binär "|"
- 13. CUDA 7.0 Fehler beim Kompilieren der Beispiele
- 14. Fehler beim Kompilieren/Ausführen von CUDA-Code mit dynamischer Parallelität
- 15. Detektieren ptx Kernel von Thrust transform
- 16. Debugging von Inline-PTX in Parallel-Nsight
- 17. Wie sollte ein sehr einfaches Makefile aussehen für Cuda kompilieren unter Linux
- 18. Wo kann ich ein etwas älteres iOS SDK herunterladen?
- 19. Tracing-Quelle zu binär
- 20. numpy.array Boolesch zu binär?
- 21. Maven-Compiler: Ziel-Plugin kompilieren fehlende Spezifikation?
- 22. Kompilieren von gdb für armv6
- 23. Ziel C: Aktualisieren von Werten für Schlüssel für ein NSMutableDictionary?
- 24. Dezimal zu Bit (Binär)
- 25. C++ int zu binär
- 26. Welches Werkzeug existiert, um C++ 2011 Code für Windows-Ziel zu kompilieren?
- 27. Compile Cuda-Code für die CPU
- 28. Konvertieren von Dezimal zu Binär in Python
- 29. Probleme beim Kompilieren von Cef-Binär beim Versuch, proprietäre Codecs mit CefSharp zu verwenden
- 30. C++ Von Text-Datei zu Binär-Datei
@RobertCrovella Ich kann nicht glauben, dass ich das geschrieben habe. Es ist fast so, als ob ich nicht den ersten Satz gelesen hätte, den ich geschrieben habe. Danke, dass du meinen dummen Fehler aufgezeigt hast. – Tim