CUDA
![]() | |
Entwickler (en) | Nvidia |
---|---|
Erstveröffentlichung | 23. Juni 2007 |
Stabile Version | 11.7.1 / 3. August 2022 |
Betriebssystem | Fenster, Linux |
Plattform | Unterstützter GPUs |
Typ | Gpgpu |
Lizenz | Proprietär |
Webseite | Entwickler |
CUDA (oder Berechnen Sie einheitliche Gerätearchitektur) ist ein Parallele Computing Plattform und Programmierschnittstelle (API), mit der Software bestimmte Arten von Arten verwenden kann Grafikverarbeitungseinheiten (GPUs) zur allgemeinen Verarbeitung, einem Ansatz, der als Allzweck-Computing bei GPUs bezeichnet wird (Gpgpu). CUDA ist eine Softwareschicht, die einen direkten Zugriff auf die Virtuelle der GPU ermöglicht Befehlssatz und parallele Rechenelemente für die Ausführung von Kernel berechnen.[1]
CUDA ist so konzipiert, dass sie mit Programmiersprachen wie z. C, C ++, und Forran. Diese Zugänglichkeit erleichtert es für Spezialisten in paralleler Programmierung, GPU -Ressourcen im Gegensatz zu früheren APIs wie zu verwenden Direct3d und OpenGL, die erweiterte Fähigkeiten in der Grafikprogrammierung erforderten.[2] CUDA-betriebene GPUs unterstützen auch Programmierrahmen wie z. OpenMP, OpenACC und OpenCL;[3][1] und Hüfte durch Kompilieren eines solchen Codes zu CUDA.
Cuda wurde von geschaffen von Nvidia.[4] Als es zum ersten Mal eingeführt wurde, war der Name ein Akronym für die Architektur der Einheitlichen Geräte -Geräte.[5] Aber Nvidia ließ später die gemeinsame Verwendung des Akronyms fallen.
Hintergrund
Die Grafikverarbeitungseinheit (GPU) als spezialisierter Computerprozessor entspricht den Anforderungen von Echtzeit hohe Auflösung 3D -Grafik Berechnenintensive Aufgaben. Bis 2012 hatte sich GPUs zu stark parallelen entwickelt Multi-Core Systeme, die eine effiziente Manipulation großer Datenblöcke ermöglichen. Dieses Design ist effektiver als allgemeiner Zweck Zentrale Verarbeitungseinheit (CPUs) für Algorithmen In Situationen, in denen die Verarbeitung großer Datenblöcke parallel durchgeführt werden, wie z. B.:
- Kryptografische Hash -Funktionen
- maschinelles Lernen
- Molekulare Dynamik Simulationen
- Physikmotoren
- Sortieren Sie Algorithmen
Programmierfähigkeiten
- Kopieren Sie Daten vom Hauptspeicher zum GPU -Speicher
- CPU initiiert die GPU Kernel berechnen
- Cuda -Kerne der GPU führen den Kern parallel aus
- Kopieren Sie die resultierenden Daten aus dem GPU -Speicher zum Hauptspeicher
Die CUDA-Plattform ist für Softwareentwickler über Cuda-Beschleunigungsbibliotheken zugänglich. Compiler -Richtlinien wie zum Beispiel OpenACCund Erweiterungen zu branchenüblichen Programmiersprachen einschließlich der Programmiersprachen C, C ++ und Forran. C/C ++ -Programmierer können 'CUDA C/C ++' verwenden, kompiliert zu PTX mit NVCC, Nvidia Llvm-basierten C/C ++ -Compiler oder von Klang selbst.[6] FORTRAN -Programmierer können "CUDA FORTRAN" verwenden, zusammengestellt mit dem PGI CUDA FORTRAN -Compiler von Die Portland Group.
Zusätzlich zu Bibliotheken, Compiler -Richtlinien, CUDA C/C ++ und CUDA FORTRAN unterstützt die CUDA -Plattform andere Rechenoberflächen, einschließlich der Khronos Gruppe's OpenCL,[7] Microsoft's DirectCompute, OpenGL Berechnen Sie Shader und C ++ Amp.[8] Wrapper von Drittanbietern sind ebenfalls erhältlich für Python, Perl, Forran, Java, Rubin, Lua, Common Lisp, Haskell, R, Matlab, Idl, Juliaund einheimische Unterstützung in Mathematica.
In dem Computerspiel Industrie, GPU Spielphysikberechnungen (physikalische Wirkungen wie Trümmer, Rauch, Feuer, Flüssigkeiten); Beispiele beinhalten PhysX und Patrone. CUDA wurde auch verwendet, um nicht grafische Anwendungen in zu beschleunigen Computerbiologie, Kryptographie und andere Bereiche von einem Größenordnung oder mehr.[9][10][11][12][13]
CUDA bietet beide ein niedriges Niveau API (Cuda Treiber API, Nicht-Single-Source) und eine höhere API auf höherer Ebene (CUDA Laufzeit API, Single-Source). Der anfängliche Cuda SDK wurde am 15. Februar 2007 veröffentlicht, für Microsoft Windows und Linux. Mac OS X Die Unterstützung wurde später in Version 2.0 hinzugefügt.[14] Das ersetzt die Beta, die am 14. Februar 2008 veröffentlicht wurde.[15] CUDA arbeitet mit allen Nvidia -GPUs aus der G8X -Serie, einschließlich Geforce, Quadro und die Tesla Linie. CUDA ist mit den meisten Standard -Betriebssystemen kompatibel.
CUDA 8.0 verfügt über die folgenden Bibliotheken (für Zusammenstellung und Laufzeit in alphabetischer Reihenfolge):
- Cublas - CUDA Basic Linear Algebra Subroutines Library
- CUDART - CUDA -Laufzeitbibliothek
- CUFFT - CUDA Fast Fourier -Transformationsbibliothek
- Curand - Cuda Random Zahlengenerierungsbibliothek
- Cusolver - CUDA -basierte Sammlung dichter und spärlicher direkter Löser
- Cusparse - Cuda Sparse Matrix Library
- NPP - NVIDIA Performance Primitive Library
- NVGRAPH - NVIDIA Graph Analytics Library
- NVML - NVIDIA Management Library
- NVRTC - NVIDIA -Laufzeit Compilation Library für CUDA C ++
CUDA 8.0 wird mit diesen anderen Softwarekomponenten geliefert:
- NVIVE - NVIDIA NView Desktop -Verwaltungssoftware
- NVWMI - NVIDIA Enterprise Management Toolkit
- Gameworks PhysX -ist eine Mehrfachplattform-Game-Physik-Engine
CUDA 9.0–9.2 wird mit diesen anderen Komponenten geliefert:
- Cutlass 1.0 - benutzerdefinierte lineare Algebra -Algorithmen,
-
Nvcuvid- Nvidia Video Decoder wurde in CUDA 9.2 veraltet; Es ist jetzt in NVIDIA Video Codec SDK erhältlich
CUDA 10 wird mit diesen anderen Komponenten geliefert:
- NVJPEG - Hybrid (CPU und GPU) JPEG -Verarbeitung
CUDA 11.0-11.7 wird mit diesen anderen Komponenten geliefert:[16][17][18][19]
- Cub ist neu einer von mehr unterstützten C ++ - Bibliotheken
- Mig Multi -Instance -GPU -Unterstützung
- NVJPEG2000 - JPEG 2000 Encoder und Decoder
Vorteile
CUDA hat mehrere Vorteile gegenüber herkömmlichen allgemeinen Berechnungen zu GPUs (GPGPU) unter Verwendung von Grafik-APIs:
- Verstreute Lesevorgänge - Code kann aus beliebigen Adressen im Speicher lesen.
- Einheitlicher virtueller Speicher (CUDA 4.0 und höher)
- Einheitlicher Speicher (CUDA 6.0 und höher)
- Geteilte Erinnerung- Cuda enthüllt ein schnelles geteilte Erinnerung Region, die unter Threads geteilt werden kann. Dies kann als benutzerbezogener Cache verwendet werden, was eine höhere Bandbreite ermöglicht, als es mit Textur-Lookups möglich ist.[20]
- Schnellere Downloads und Readbacks zur und von der GPU
- Vollständige Unterstützung für Ganzzahl- und Bitgewise -Operationen, einschließlich ganzzahliger Textur -Lookups
- Auf Karten der RTX 20 und 30 Serien werden die CUDA-Kerne für eine Funktion namens "RTX IO" verwendet, in der die Cuda-Kerne die Spielzeiten dramatisch verringern.
Einschränkungen
- Ob für den Host -Computer oder das GPU -Gerät, der gesamte CUDA -Quellcode wird jetzt gemäß den C ++ -Syntaxregeln verarbeitet.[21] Dies war nicht immer der Fall. Frühere Versionen von CUDA basierten auf C -Syntaxregeln.[22] Wie bei dem allgemeineren Fall des Zusammenstellens von C-Code mit einem C ++-Compiler ist es daher möglich, dass der CUDA-Quellcode im C-Stil des alten C-Stils entweder nicht kompiliert oder nicht wie ursprünglich beabsichtigt wird.
- Die Interoperabilität mit Rendering-Sprachen wie OpenGL ist Einweg, wobei OpenGL zu Zugriff auf einen registrierten CUDA-Speicher verfügt, aber CUDA keinen Zugriff auf OpenGL-Speicher hat.
- Das Kopieren zwischen Host- und Gerätespeicher kann aufgrund der Systembusbandbreite und der Latenz zu einer Leistungserbringung führen (dies kann teilweise mit asynchronen Speichertransfers gelindert werden, die von der DMA -Engine der GPU behandelt werden).
- Die Themen sollten in Gruppen von mindestens 32 für die beste Leistung ausgeführt werden, wobei die Gesamtzahl der Threads zu Tausenden zählt. Zweige im Programmcode beeinflussen die Leistung nicht wesentlich, sofern jeder der 32 Threads denselben Ausführungspfad einnimmt. das Simd Das Ausführungsmodell wird zu einer signifikanten Einschränkung für jede inhärent divergierende Aufgabe (z. B. durchqueren a Weltraumpartitionierung Datenstruktur während Strahlenverfolgung).
- Für moderne Überarbeitungen ist keine Emulator- oder Fallback -Funktionalität verfügbar.
- Gültiges C ++ kann manchmal gekennzeichnet sein und die Kompilierung verhindern, da der Compiler die Optimierung für Ziel -GPU -Geräteeinschränkungen nähert.
- C ++ Laufzeitinformationen (RTTI) und C ++-Style-Ausnahmehandling werden nur im Hostcode unterstützt, nicht im Gerätecode.
- Im mit einfacher Genauigkeit Bei CUDA -Rechenfähigkeit der ersten Generation 1.x Geräte, Geräte, Denormale Zahlen werden nicht unterstützt und stattdessen auf Null geschwüngt, und die Präzision sowohl der Teilung als auch der Quadratwurzeloperationen ist etwas niedriger als die IEEE 754-konforme Single-Precision-Mathematik. Geräte, die die Berechnung der Fähigkeit 2,0 und über den Denorme unterstützen, und die Abteilungs- und Quadratwurzeloperationen sind standardmäßig IEEE 754 konform. Benutzer können jedoch die frühere schnellere Gaming-Mathematik der Rechenfunktion 1.x-Geräte erhalten, wenn sie gewünscht werden, indem Compiler-Flags eingestellt werden, um genaue Abteilungen und genaue Quadratwurzeln zu deaktivieren und die Denormalzahlen auf Null zu ermöglichen.[23]
- nicht wie OpenCL, Cuda-fähige GPUs sind nur bei NVIDIA erhältlich.[24] Zu den Versuchen, CUDA auf andere GPUs zu implementieren, gehören:
- Project Coriander: Konvertiert CUDA C ++ 11 Quelle in OpenCL 1.2 C. Eine Gabel von CUDA-ON-CL, die zu laufen ist Tensorflow.[25][26][27]
- CU2CL: CUDA 3,2 C ++ in OpenCL C. konvertieren C.[28]
- Gpuopen HIP: Eine dünne Abstraktionsschicht auf CUDA und ROCM für AMD- und NVIDIA -GPUs. Hat ein Conversion -Tool zum Importieren von CUDA C ++ - Quelle. Unterstützt CUDA 4.0 plus C ++ 11 und Float16.
GPUs unterstützt
Unterstütztes CUDA -Niveau von GPU und Karte.
- CUDA SDK 1.0 Unterstützung für die Berechnungsfähigkeit 1.0 - 1.1 (Tesla)[29]
- CUDA SDK 1.1 Unterstützung für die Berechnungsfähigkeit 1.0 - 1,1+x (Tesla)
- CUDA SDK 2.0 -Unterstützung für die Berechnung der Fähigkeit 1.0 - 1,1+x (Tesla)
- CUDA SDK 2.1 - 2.3.1 Unterstützung für die Berechnungsfähigkeit 1.0 - 1,3 (Tesla)[30][31][32][33]
- CUDA SDK 3.0 - 3.1 Unterstützung für die Berechnungsfähigkeit 1.0 - 2.0 (Tesla, Fermi)[34][35]
- CUDA SDK 3.2 Unterstützung für die Berechnungsfähigkeit 1.0 - 2.1 (Tesla, Fermi)[36]
- CUDA SDK 4,0 - 4.2 Unterstützung für die Berechnung der Fähigkeit 1,0 - 2,1+x (Tesla, Fermi, More?).
- CUDA SDK 5.0 - 5,5 Unterstützung für die Berechnung von 1,0 - 3,5 (Tesla, Fermi, Kepler).
- CUDA SDK 6.0 Unterstützung für die Berechnungsfähigkeit 1.0 - 3,5 (Tesla, Fermi, Kepler).
- CUDA SDK 6.5 Unterstützung für die Berechnungsfähigkeit 1.1 - 5.x (Tesla, Fermi, Kepler, Maxwell). Letzte Version mit Unterstützung für Rechenfunktion 1.x (Tesla).
- CUDA SDK 7.0 - 7,5 Unterstützung für die Berechnung von Fähigkeiten 2.0 - 5.x (Fermi, Kepler, Maxwell).
- CUDA SDK 8.0 Unterstützung für die Berechnungsfähigkeit 2.0 - 6.x (Fermi, Kepler, Maxwell, Pascal). Letzte Version mit Unterstützung für Rechenfunktion 2.x (Fermi) (Pascal GTX 1070ti nicht unterstützt).
- CUDA SDK 9.0 - 9.2 Unterstützung für die Berechnung von Funktionsfähigkeit 3.0 - 7,2 (Kepler, Maxwell, Pascal, Volta) (Pascal GTX 1070ti nicht unterstützt. CUDA SDK 9.0 und Unterstützung CUDA SDK 9,2).
- CUDA SDK 10.0 - 10,2 Unterstützung für die Berechnung der Fähigkeit 3.0 - 7,5 (Kepler, Maxwell, Pascal, Volta, Turing). Letzte Version mit Unterstützung für Rechenfunktion 3.x (Kepler). 10.2 ist die letzte offizielle Veröffentlichung für macOS, da die Unterstützung für macOS in neueren Veröffentlichungen nicht verfügbar ist.
- CUDA SDK 11.0 Unterstützung für die Berechnungsfähigkeit 3.5 - 8.0 (Kepler (teilweise), Maxwell, Pascal, Volta, Turing, Ampere (teilweise)).[37]
- CUDA SDK 11.1 - 11.7 Unterstützung für die Berechnungsfähigkeit 3,5 - 8,6 (Kepler (teilweise), Maxwell, Pascal, Volta, Turing, Ampere).[38]
Berechnen Fähigkeit (Ausführung) | Mikro- die Architektur | GPUS | Geforce | Quadro, NVS | Tesla/Datacenter | Tegra, Jetson, FAHRT |
---|---|---|---|---|---|---|
1.0 | Tesla | G80 | GeForce 8800 Ultra, Geforce 8800 GTX, GeForce 8800 GTS (G80) | Quadro FX 5600, Quadro FX 4600, Quadro Plex 2100 S4 | Tesla C870, Tesla D870, Tesla S870 | |
1.1 | G92, G94, G96, G98, G84, G86 | GeForce GTS 250, GeForce 9800 GX2, GeForce 9800 GTX, GeForce 9800 GT, GeForce 8800 GTS(G92), GeForce 8800 GT, GeForce 9600 GT, GeForce 9500 GT, GeForce 9400 GT, GeForce 8600 GTS, GeForce 8600 GT, GeForce 8500 GT Anwesend GeForce G110m, Geforce 9300m GS, Geforce 9200m GS, Geforce 9100m G, Geforce 8400m GT, Geforce G105m | Quadro FX 4700 X2, Quadro FX 3700, Quadro FX 1800, Quadro FX 1700, Quadro FX 580, Quadro FX 570, Quadro FX 470, Quadro FX 380, Quadro FX 370, Quadro FX 370 Low -Profil, Quadro NVS 450, Quadro NVS 420 , Quadro NVS 290, Quadro NVS 295, Quadro Plex 2100 D4, Quadro FX 3800M, Quadro FX 3700M, Quadro FX 3600M, Quadro FX 2800M, Quadro FX 2700M, Quadro FX 1700M, Quadro FX 1600M, Quadro FX 770M, Quadro FX 570M, Quadro FX 370M, Quadro FX 360M, Quadro NVS 320M, Quadro NVS 160 m, Quadro NVS 150 m, Quadro NVS 140m, Quadro NVS 135 m, Quadro NVS 130m, Quadro NVS 450, Quadro NVS 420,[39] Quadro NVS 295 | |||
1.2 | GT218, GT216, GT215 | Geforce GT 340*, Geforce GT 330*, Geforce GT 320*, Geforce 315*, Geforce 310*, Geforce GT 240, Geforce GT 220, Geforce 210, Geforce GTS 360m, Geforce GTS 350m, Geforce GT 335M, Geforce GT 330m, Geforce GT 325m, Geforce GT 240m, Geforce G210m, Geforce 310m, Geforce 305m | Quadro FX 380 Low Profile, Quadro FX 1800m, Quadro FX 880m, Quadro FX 380m, NVIDIA NVS 300, NVS 5100 m, NVS 3100m, NVS 2100 m, Ion | |||
1.3 | GT200, GT200B | GeForce GTX 295, GTX 285, GTX 280, GeForce GTX 275, GeForce GTX 260 | Quadro FX 5800, Quadro FX 4800, Quadro FX 4800 für MAC, Quadro FX 3800, Quadro CX, Quadro Plex 2200 D2 | Tesla C1060, Tesla S1070, Tesla M1060 | ||
2.0 | Fermi | GF100, GF110 | GeForce GTX 590, Geforce GTX 580, Geforce GTX 570, GeForce GTX 480, Geforce GTX 470, Geforce GTX 465, GeForce GTX 480 m | Quadro 6000, Quadro 5000, Quadro 4000, Quadro 4000 für MAC, Quadro Plex 7000, Quadro 5010m, Quadro 5000m | Tesla C2075, Tesla C2050/C2070, Tesla M2050/M2070/M2075/M2090 | |
2.1 | GF104, GF106 GF108, GF114, GF116, GF117, GF119 | GeForce GTX 560 Ti, GeForce GTX 550 Ti, GeForce GTX 460, GeForce GTS 450, GeForce GTS 450*, GeForce GT 640 (GDDR3), GeForce GT 630, GeForce GT 620, GeForce GT 610, GeForce GT 520, GeForce GT 440, GeForce GT 440*, Geforce GT 430, GeForce GT 430*, GeForce GT 420*, GeForce GTX 675M, GeForce GTX 670M, GeForce GT 635M, GeForce GT 630M, GeForce GT 625M, GeForce GT 720M, GeForce GT 620M, GeForce 710M, GeForce 610M, GeForce 820M, GeForce GTX 580M, GeForce GTX 570M, GeForce GTX 560M, GeForce GT 555M, GeForce GT 550M, GeForce GT 540M, GeForce GT 525M, GeForce GT 520MX, GeForce GT 520M, GeForce GTX 485M, GeForce GTX 470M, GeForce GTX 460M, GeForce GT 445M, GeForce GT 435M, GeForce GT 420M, GeForce GT 415M , GeForce 710m, Geforce 410m | Quadro 2000, Quadro 2000d, Quadro 600, Quadro 4000m, Quadro 3000m, Quadro 2000m, Quadro 1000m, NVS 310, NVS 315, NVS 5400m, NVS 5200 m, NVS 4200m | |||
3.0 | Kepler | GK104, GK106, GK107 | GeForce GTX 770, GeForce GTX 760, GeForce GT 740, GeForce GTX 690, GeForce GTX 680, GeForce GTX 670, GeForce GTX 660 Ti, GeForce GTX 660, GeForce GTX 650 Ti BOOST, GeForce GTX 650 Ti, GeForce GTX 650, GeForce GTX 880M, GeForce GTX 870M, GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 670MX, GeForce GTX 660M, GeForce GT 750M, GeForce GT 650 m, Geforce GT 745m, Geforce GT 645M, Geforce GT 740 m, Geforce GT 730m, Geforce GT 640m, Geforce GT 640m LE, Geforce GT 735M, Geforce GT 730 m | Quadro K5000, Quadro K4200, Quadro K4000, Quadro K2000, Quadro K2000D, Quadro K600, Quadro K420, Quadro K500M, Quadro K510M, Quadro K610M, Quadro K1000M, Quadro K2000M, Quadro K1100M, Quadro K2100M, Quadro K3000M, Quadro K3100M, Quadro K4000M, Quadro K5000M, Quadro K4100M, Quadro K5100M, NVS 510, Quadro 410 | Tesla K10, Grid K340, Grid K520, Grid K2 | |
3.2 | GK20A | Tegra K1, Jetson TK1 | ||||
3.5 | GK110, GK208 | GeForce GTX Titan Z, GeForce GTX Titan Black, GeForce GTX Titan, GeForce GTX 780 Ti, GeForce GTX 780, GeForce GT 640 (GDDR5), GeForce GT 630 v2, GeForce GT 730, GeForce GT 720, GeForce GT 710, GeForce GT 740M (64-Bit, DDR3), Geforce GT 920 m | Quadro K6000, Quadro K5200 | Tesla K40, Tesla K20X, Tesla K20 | ||
3.7 | GK210 | Tesla K80 | ||||
5.0 | Maxwell | GM107, GM108 | GeForce GTX 750 TI, Geforce GTX 750, Geforce GTX 960M, Geforce GTX 950M, Geforce 940m, Geforce 930m, Geforce GTX 860m, Geforce GTX 850M, Geforce 845M, Geforce 840m, Geforce 830m 830m, Geforce 830m, Geforce 830m, GEForce 830m | Quadro K1200, Quadro K2200, Quadro K620, Quadro M2000M, Quadro M1000M, Quadro M600M, Quadro K620M, NVS 810 | Tesla M10 | |
5.2 | GM200, GM204, GM206 | Geforce GTX Titan X, Geforce GTX 980 TI, Geforce GTX 980, Geforce GTX 970, Geforce GTX 960, Geforce GTX 950, Geforce GTX 750 SE, GeForce GTX 980m, Geforce GTX 970m, Geforce GTX 965M | Quadro M6000 24 GB, Quadro M6000, Quadro M5000, Quadro M4000, Quadro M2000, Quadro M5500, Quadro M5000m, Quadro M4000m, Quadro M3000m | Tesla M4, Tesla M40, Tesla M6, Tesla M60 | ||
5.3 | GM20B | Tegra x1, Jetson TX1, Jetson Nano, Antrieb CX, Fahren Sie PX | ||||
6.0 | Pascal | GP100 | Quadro GP100 | Tesla P100 | ||
6.1 | GP102, GP104, GP106, GP107, GP108 | Nvidia Titan XP, Titan X, GeForce GTX 1080 TI, GTX 1080, GTX 1070 TI, GTX 1070, GTX 1060, GTX 1050 TI, GTX 1050, GT 1030, GT 1010, MX350, MX330, MX250, MX230, MX150, MX130, MX110 | Quadro P6000, Quadro P5000, Quadro P4000, Quadro P2200, Quadro P2000, Quadro P1000, Quadro P400, Quadro P500, Quadro P520, Quadro P600, Quadro P5000 (Mobile), Quadro P4000 (Mobile), Quadro P3000 (Mobile) | Tesla P40, Tesla P6, Tesla P4 | ||
6.2 | Gp10b[40] | Tegra X2, Jetson TX2, Antrieb PX 2 | ||||
7.0 | Volta | GV100 | Nvidia Titan v | Quadro GV100 | Tesla V100, Tesla V100S | |
7.2 | GV10B[41] | Tegra Xavier, Jetson Xavier NX, Jetson Agx Xavier, Agx Xavier fahren, Agx pegasus fahren, Clara Agx | ||||
7.5 | Turing | TU102, TU104, TU106, TU116, TU117 | Nvidia Titan RTX, GeForce RTX 2080 TI, RTX 2080 Super, RTX 2080, RTX 2070 Super, RTX 2070, RTX 2060 Super, RTX 2060 12 GB, RTX 2060, GeForce GTX 1660 Ti, GTX 1660 Super, GTX 1660, GTX 1650 Super, GTX 1650, MX550, MX450 | Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Quadro RTX 4000, T1000, T600, T400 T1200 (Mobile), T600 (Mobile), T500 (Mobile), Quadro T2000 (Mobile), Quadro T1000 (Mobile) | Tesla T4 | |
8.0 | Ampere | GA100 | A100 80GB, A100 40 GB, A30 | |||
8.6 | GA102, GA103, GA104, GA106, GA107 | GeForce RTX 3090 TI, RTX 3090, RTX 3080 TI, RTX 3080 12 GB, RTX 3080, RTX 3070 TI, RTX 3070, RTX 3060 TI, RTX 3060, RTX 3050, RTX 3050 TI (Mobile), RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (Mobile), RTX 3050, RTX 3050 (mobile 2050 (Mobile), MX570 | RTX A6000, RTX A5500, RTX A5000, RTX A4500, RTX A4000, RTX A2000 RTX A5000 (Mobile), RTX A4000 (Mobile), RTX A3000 (Mobile), RTX A2000 (Mobile) | A40, A16, A10, A2 | ||
8.7 | GA10B | Jetson Orin NX, Jetson Agx Orin, Agx Orin fahren, Antrieb Agx Pegasus OA, Clara Holoscan | ||||
9.0 | Trichter | GH100 | H100 | |||
9.x | Lovelace | AD102, AD104, AD106, AD107 | ||||
9.x | Ad10b | |||||
Berechnen Fähigkeit (Ausführung) | Mikro- die Architektur | GPUS | Geforce | Quadro, NVS | Tesla/Datacenter | Tegra, Jetson, FAHRT |
'*' - OEM-Nur Produkte
Versionsfunktionen und Spezifikationen
Feature -Support (nicht aufgeführte Funktionen werden für alle Berechnungsfunktionen unterstützt) | Berechnung der Fähigkeit (Version) | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1.0 | 1.1 | 1.2 | 1.3 | 2.x | 3.0 | 3.2 | 3,5, 3,7, 5,0, 5,2 | 5.3 | 6.x | 7.x | 8.0 | 8.6 | 9.0 | 9.x | |
Ganzzahlatomische Funktionen, die auf 32-Bit-Wörtern im globalen Gedächtnis arbeiten | Nein | Ja | |||||||||||||
atomicexch (), der mit 32-Bit-Schwimmpunktwerten im globalen Speicher arbeitet | |||||||||||||||
Ganzzahlatomische Funktionen, die auf 32-Bit-Wörtern im gemeinsamen Speicher arbeiten | Nein | Ja | |||||||||||||
atomicexch (), der mit 32-Bit-Schwimmpunktwerten im gemeinsamen Speicher arbeitet | |||||||||||||||
Ganzzahlatomische Funktionen, die auf 64-Bit-Wörtern im globalen Gedächtnis arbeiten | |||||||||||||||
Warp -Abstimmungsfunktionen | |||||||||||||||
Doppelprezisions-Gleitkommaoperationen | Nein | Ja | |||||||||||||
Atomfunktionen, die mit 64-Bit-Ganzzahlwerten im gemeinsamen Speicher arbeiten | Nein | Ja | |||||||||||||
Floating-Point-Atomabnahme, die auf 32-Bit-Wörtern im globalen und gemeinsam genutzten Speicher arbeitet | |||||||||||||||
_Abstimmung() | |||||||||||||||
_Threadfence_System ()) | |||||||||||||||
_SyncThreads_Count (), _SyncThreads_and (), _SyncThreads_OR () | |||||||||||||||
Oberflächenfunktionen | |||||||||||||||
3D -Gitter des Fadenblocks | |||||||||||||||
Warp Shuffle -Funktionen, einheitlicher Speicher | Nein | Ja | |||||||||||||
Trichterverschiebung | Nein | Ja | |||||||||||||
Dynamische Parallelität | Nein | Ja | |||||||||||||
Halbprezisions-Gleitkomma-Operationen: Addition, Subtraktion, Multiplikation, Vergleich, Warp Shuffle -Funktionen, Konvertierung | Nein | Ja | |||||||||||||
Atomzusatz, die auf 64-Bit-schwimmenden Punktwerten im globalen Speicher und im gemeinsamen Speicher arbeitet | Nein | Ja | |||||||||||||
Tensorkern | Nein | Ja | |||||||||||||
Gemischte Präzision Warp-Matrix-Funktionen | Nein | Ja | |||||||||||||
Hardware-beschleunigte Async-Kopie | Nein | Ja | |||||||||||||
Hardware-Beschleunigung Split Ankunft/Wartenbarriere | Nein | Ja | |||||||||||||
L2 Cache Residency Management | Nein | Ja | |||||||||||||
Feature -Support (nicht aufgeführte Funktionen werden für alle Berechnungsfunktionen unterstützt) | 1.0 | 1.1 | 1.2 | 1.3 | 2.x | 3.0 | 3.2 | 3,5, 3,7, 5,0, 5,2 | 5.3 | 6.x | 7.x | 8.0 | 8.6 | 9.0 | 9.x |
Berechnung der Fähigkeit (Version) |
Datentyp | Betrieb | Seitdem unterstützt | Seitdem unterstützt für globales Gedächtnis | Seitdem unterstützt Für gemeinsames Speicher |
---|---|---|---|---|
16-Bit-Ganzzahl | Allgemeine Operationen | |||
32-Bit-Ganzzahl | Atomfunktionen | 1.1 | 1.2 | |
64-Bit-Ganzzahl | Atomfunktionen | 1.2 | 2.0 | |
16-Bit-Schwimmpunkt | Addition Subtraktion, Multiplikation, Vergleich, Warp Shuffle -Funktionen, Konvertierung | 5.3 | ||
32-Bit-Schwimmpunkt | atomicexch () | 1.1 | 1.2 | |
32-Bit-Schwimmpunkt | Atomabzug | 2.0 | 2.0 | |
64-Bit-Schwimmpunkt | Allgemeine Operationen | 1.3 | ||
64-Bit-Schwimmpunkt | Atomabzug | 6.0 | 6.0 | |
Tensorkern | 7.0 |
Hinweis: Fehlende Zeilen oder leere Einträge spiegeln einige mangelnde Informationen zu diesem genauen Element wider.
[45]
Datentyp | Seitdem unterstützt für dichte Matrizen | Seitdem unterstützt für spärliche Matrizen | Volta/Professional Turing FMA pro Zyklus pro Tensorkern (8 Tensorkerne/SM) | Verbraucher FMA pro Zyklus pro Tensorkern (8 Tensorkerne/SM) | Professionelle Ampere/Orin FMA pro Zyklus pro Tensorkern (4 Tensorkerne/SM) | Verbraucherverstärker FMA pro Zyklus pro Tensorkern (4 Tensorkerne/SM) | Trichter FMA pro Zyklus pro Tensorkern (4 Tensorkerne/SM) |
---|---|---|---|---|---|---|---|
1-Bit-Werte | 7.5 | - | 1024 | 1024 | 4096 | 2048 | - |
4-Bit-Ganzzahlen | 7.5 | 8.0 | 256 | 256 | 1024 | 512 | - |
8-Bit-Ganzzahlen | 7.2 | 8.0 | 128 | 128 | 512 | 256 | 1024 |
8-Bit-Floating Point FP8 (E4m3 und E5m2), wobei FP16 akkumulieren | 9.0 | 9.0 | - | - | - | - | 1024 |
8-Bit-Floating-Punkt FP8 (E4m3 und E5m2) mit FP32 akkumulieren | 9.0 | 9.0 | - | - | - | - | 1024 |
16-Bit-Gleitkomma FP16 mit FP16 akkumulieren | 7.0 | 8.0 | 64 | 64 | 256 | 128 | 512 |
16-Bit-Schwimmpunkt FP16 mit FP32 akkumulieren | 7.0 | 8.0 | 64 | 32 | 256 | 64 | 512 |
16-Bit-Gleitkomma BF16 mit FP32 akkumulieren | 8.0 | 8.0 | - | - | 256 | 64 | 512 |
32-Bit (19-Bit verwendet) Schwimmpunkt TF32 | 8.0 | 8.0 | - | - | 128 | 32 | 256 |
64-Bit-Schwimmpunkt | 8.0 | - | - | - | 16 | 32 |
Hinweis: Fehlende Zeilen oder leere Einträge spiegeln einige mangelnde Informationen zu diesem genauen Element wider.
Technische Spezifikationen | Berechnung der Fähigkeit (Version) | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1.0 | 1.1 | 1.2 | 1.3 | 2.x | 3.0 | 3.2 | 3.5 | 3.7 | 5.0 | 5.2 | 5.3 | 6.0 | 6.1 | 6.2 | 7.0 | 7.2 | 7.5 | 8.0 | 8.6 | 8.7 | 9.0 | 9.x | |
Maximale Anzahl an Resident Grids pro Gerät (gleichzeitige Kernelausführung) | T.B.D. | 16 | 4 | 32 | 16 | 128 | 32 | 16 | 128 | 16 | 128 | ||||||||||||
Maximale Dimensionalität des Gitters von Fadenblöcken | 2 | 3 | |||||||||||||||||||||
Maximales X-Dimension eines Gitters von Fadenblöcken | 65535 | 231 - 1 | |||||||||||||||||||||
Maximale Y- oder Z-Dimension eines Gitters von Fadenblöcken | 65535 | ||||||||||||||||||||||
Maximale Dimensionalität des Fadenblocks | 3 | ||||||||||||||||||||||
Maximale X- oder Y-Dimension eines Blocks | 512 | 1024 | |||||||||||||||||||||
Maximales Z-Dimension eines Blocks | 64 | ||||||||||||||||||||||
Maximale Anzahl von Threads pro Block | 512 | 1024 | 1024 | ||||||||||||||||||||
Kettgröße | 32 | 32 | |||||||||||||||||||||
Maximale Anzahl an Wohnblöcken pro Multiprozessor | 8 | 16 | 32 | 16 | 32 | 16 | 32 | ||||||||||||||||
Maximale Anzahl an Bewohner pro Multiprozessor | 24 | 32 | 48 | 64 | 32 | 64 | 48 | 64 | |||||||||||||||
Maximale Anzahl an Resident Threads pro Multiprozessor | 768 | 1024 | 1536 | 2048 | 1024 | 2048 | 1536 | 2048 | |||||||||||||||
Anzahl der 32-Bit-Register pro Multiprozessor | 8 Tausend | 16 k | 32 k | 64 k | 128 k | 64 k | 64 k | ||||||||||||||||
Maximale Anzahl von 32-Bit-Registern pro Fadenblock | - | 32 k | 64 k | 32 k | 64 k | 32 k | 64 k | 32 k | 64 k | 64 k | |||||||||||||
Maximale Anzahl von 32-Bit-Registern pro Thread | 124 | 63 | 255 | 255 | |||||||||||||||||||
Maximale Menge des gemeinsam genutzten Speichers pro Multiprozessor | 16 kb | 48 kb | 112 kb | 64 kb | 96 kb | 64 kb | 96 kb | 64 kb | 96 kb (von 128) | 64 kb (von 96) | 164 kb (von 192) | 100 kb (von 128) | 228 kb | ||||||||||
Maximale Menge des gemeinsam genutzten Speichers pro Threadblock | 48 kb | 96 kb | 48 kb | 64 kb | 163 kb | 99 kb | |||||||||||||||||
Anzahl der gemeinsam genutzten Speicherbanken | 16 | 32 | |||||||||||||||||||||
Menge des lokalen Speichers pro Thread | 16 kb | 512 kb | |||||||||||||||||||||
Konstante Speichergröße | 64 kb | ||||||||||||||||||||||
Cache -Arbeitssatz pro Multiprozessor für einen konstanten Speicher | 8 kb | 4 kb | 8 kb | ||||||||||||||||||||
Cache -Arbeitssatz pro Multiprozessor für Texturspeicher | 6 - 8 kb | 12 kb | 12 - 48 kb | 24 kb | 48 kb | - | 24 kb | 48 kb | 24 kb | 32 - 128 kb | 32 - 64 kb | 28 - 192 kb | 28 - 128 kb | ||||||||||
Maximale Breite für 1D -Texturreferenz, die an einen CUDA gebunden ist Array | 8192 | 65536 | 131072 | ||||||||||||||||||||
Maximale Breite für 1d Texturreferenz an linear gebunden Erinnerung | 227 | 228 | 227 | 228 | 227 | 228 | |||||||||||||||||
Maximale Breite und Anzahl der Schichten für eine 1D -Schicht Texturreferenz | 8192 × 512 | 16384 × 2048 | 32768 x 2048 | ||||||||||||||||||||
Maximale Breite und Höhe für die 2D -Texturreferenz gebunden zu einem Cuda -Array | 65536 × 32768 | 65536 × 65535 | 131072 x 65536 | ||||||||||||||||||||
Maximale Breite und Höhe für die 2D -Texturreferenz gebunden zu einem linearen Speicher | 65000 x 65000 | 65536 x 65536 | 131072 x 65000 | ||||||||||||||||||||
Maximale Breite und Höhe für die 2D -Texturreferenz gebunden zu einem Cuda -Array unterstützende Textur versammeln | - | 16384 x 16384 | 32768 x 32768 | ||||||||||||||||||||
Maximale Breite, Höhe und Anzahl der Schichten für einen 2D geschichtete Texturreferenz | 8192 × 8192 × 512 | 16384 × 16384 × 2048 | 32768 x 32768 x 2048 | ||||||||||||||||||||
Maximale Breite, Höhe und Tiefe für eine 3D -Textur Referenz an lineare Speicher oder ein CUDA -Array gebunden | 20483 | 40963 | 163843 | ||||||||||||||||||||
Maximale Breite (und Höhe) für eine Cubemap -Texturreferenz | - | 16384 | 32768 | ||||||||||||||||||||
Maximale Breite (und Höhe) und Anzahl der Schichten Für eine Cubemap -Layered Textur Referenz | - | 16384 × 2046 | 32768 × 2046 | ||||||||||||||||||||
Maximale Anzahl von Texturen, die an a gebunden werden können Kernel | 128 | 256 | |||||||||||||||||||||
Maximale Breite für eine 1D -Oberflächenreferenz, die an a gebunden ist Cuda Array | Nicht unterstützt | 65536 | 16384 | 32768 | |||||||||||||||||||
Maximale Breite und Anzahl der Schichten für eine 1D -Schicht Oberflächenreferenz | 65536 × 2048 | 16384 × 2048 | 32768 × 2048 | ||||||||||||||||||||
Maximale Breite und Höhe für eine 2D -Oberflächenreferenz an ein Cuda -Array gebunden | 65536 × 32768 | 16384 × 65536 | 131072 × 65536 | ||||||||||||||||||||
Maximale Breite, Höhe und Anzahl der Schichten für einen 2D geschichtete Oberflächenreferenz | 65536 × 32768 × 2048 | 16384 × 16384 × 2048 | 32768 × 32768 × 2048 | ||||||||||||||||||||
Maximale Breite, Höhe und Tiefe für eine 3D -Oberfläche Referenz an ein CUDA -Array gebunden | 65536 × 32768 × 2048 | 4096 × 4096 × 4096 | 16384 × 16384 × 16384 | ||||||||||||||||||||
Maximale Breite (und Höhe) für eine an ein CUDA -Array gebundene Cubemap -Oberflächenreferenz | 32768 | 16384 | 32768 | ||||||||||||||||||||
Maximale Breite und Anzahl der Schichten für einen Cubemap geschichtete Oberflächenreferenz | 32768 × 2046 | 16384 × 2046 | 32768 × 2046 | ||||||||||||||||||||
Maximale Anzahl von Oberflächen, die an a gebunden werden können Kernel | 8 | 16 | 32 | ||||||||||||||||||||
Maximale Anzahl von Anweisungen pro Kernel | 2 Millionen | 512 Millionen | |||||||||||||||||||||
Technische Spezifikationen | 1.0 | 1.1 | 1.2 | 1.3 | 2.x | 3.0 | 3.2 | 3.5 | 3.7 | 5.0 | 5.2 | 5.3 | 6.0 | 6.1 | 6.2 | 7.0 | 7.2 | 7.5 | 8.0 | 8.6 | 8.7 | 9.0 | 9.x |
Berechnung der Fähigkeit (Version) |
Architekturspezifikationen | Berechnung der Fähigkeit (Version) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1.0 | 1.1 | 1.2 | 1.3 | 2.0 | 2.1 | 3.0 | 3.5 | 3.7 | 5.0 | 5.2 | 6.0 | 6.1, 6.2 | 7.0, 7.2 | 7.5 | 8.0 | 8.6 | 9.0 | 9.x | |
Anzahl der Alu-Fahrspuren für Ganzzahl- und Einzelprezisions-Gleitkomma-arithmetische Operationen | 8[54] | 32 | 48 | 192 | 128 | 64 | 128 | 64 | |||||||||||
Anzahl der Spezialfunktionseinheiten für einzelne Precision-Gleitkomma-Transzendentalfunktionen | 2 | 4 | 8 | 32 | 16 | 32 | 16 | ||||||||||||
Anzahl der Texturfiltereinheiten für jede Texturadresseneinheit oder Ausgangseinheit rendern (ROP) | 2 | 4 | 8 | 16 | 8[55] | ||||||||||||||
Anzahl der Warpplaner | 1 | 2 | 4 | 2 | 4 | ||||||||||||||
Maximale Anzahl von Anweisungen, die sofort von einem einzigen Scheduler ausgegeben wurden | 1 | 2[56] | 1 | ||||||||||||||||
Anzahl der Tensorkerne | - | 8[55] | 4 | ||||||||||||||||
Größe in KB des einheitlichen Speichers für Datencache und gemeinsamer Speicher pro Multi -Prozessor | T.B.D. | 128 | 96[57] | 192 | 128 |
Weitere Informationen finden Sie im NVIDIA CUDA -Programmierhandbuch.[59]
Beispiel
Dieser Beispielcode in C ++ Lädt eine Textur von einem Bild in ein Array an der GPU:
Textur<schweben, 2, cudareadModeElementtype> Tex; Leere Foo() { CUDAARRAY* cu_array; // Array zuweisen Cudachannelformatdesc Bezeichnung = CUDACREATECHENNELDESC<schweben>(); Cudamallocarray(&cu_array, &Bezeichnung, Breite, Höhe); // Bilddaten in Array kopieren CudamemcpytoArray(cu_array, Bild, Breite*Höhe*Größe von(schweben), CUDAMEMCPYHOSTTODEVICE); // Texturparameter festlegen (Standard) Tex.addressmode[0] = CUDAADDRESSMODECLAMP; Tex.addressmode[1] = CUDAADDRESSMODECLAMP; Tex.Filterde = CUDAFILMODEPOINT; Tex.normalisiert = FALSCH; // Koordinaten nicht normalisieren // Binden Sie das Array an die Textur CUDABINDTEXTURETOARAY(Tex, cu_array); // Kernel laufen Dim3 Blockdim(16, 16, 1); Dim3 Griddim((Breite + Blockdim.x - 1)/ Blockdim.x, (Höhe + Blockdim.y - 1) / Blockdim.y, 1); Kernel<<< Griddim, Blockdim, 0 >>>(d_data, Höhe, Breite); // das Array von der Textur entbinden CUDAUNBINDTEXTURE(Tex); } // End foo () beenden __global__ Leere Kernel(schweben* Odata, int Höhe, int Breite) { ohne Vorzeichen int x = Blockidx.x*Blockdim.x + threadIdx.x; ohne Vorzeichen int y = Blockidx.y*Blockdim.y + threadIdx.y; wenn (x < Breite && y < Höhe) { schweben c = Tex2d(Tex, x, y); Odata[y*Breite+x] = c; } }
Unten finden Sie ein Beispiel in Python Das berechnet das Produkt von zwei Arrays an der GPU. Die inoffiziellen Python -Sprachbindungen können erhalten werden Pycuda.[60]
importieren pycuda.compiler wie Comp importieren pycuda.driver wie DRV importieren Numpy importieren pycuda.autoinit Mod = Comp.Sourcemodul( "" " __global__ void multiply_them (float *dest, float *a, float *b) { const int i = threadIdx.x; dest [i] = a [i] * b [i]; } "" " ) multiply_them = Mod.get_function("multiply_them") a = Numpy.zufällig.Randn(400).Asttyp(Numpy.float32) b = Numpy.zufällig.Randn(400).Asttyp(Numpy.float32) Ziel = Numpy.Zeros_ik(a) multiply_them(DRV.aus(Ziel), DRV.Im(a), DRV.Im(b), Block=(400, 1, 1)) drucken(Ziel - a * b)
Zusätzliche Python -Bindungen zur Vereinfachung der Matrix -Multiplikationsvorgänge finden Sie im Programm Pycublas.[61]
importieren Numpy aus Pycublas importieren Cublasmatrix A = Cublasmatrix(Numpy.Matte[[[[1, 2, 3], [4, 5, 6]], Numpy.float32)) B = Cublasmatrix(Numpy.Matte[[[[2, 3], [4, 5], [6, 7]], Numpy.float32)) C = A * B drucken(C.np_mat())
während Cupy ersetzt Numpy direkt:[62]
importieren Cupy a = Cupy.zufällig.Randn(400) b = Cupy.zufällig.Randn(400) Ziel = Cupy.Zeros_ik(a) drucken(Ziel - a * b)
Aktuelle und zukünftige Verwendungen der CUDA -Architektur
- Beschleunigter Rendering von 3D -Grafiken
- Beschleunigte Interkonversion von Videodateiformaten
- Beschleunigt Verschlüsselung, Entschlüsselung und Kompression
- Bioinformatik, z. Ngs DNA-Sequenzierung Barrakuda[63]
- Verteilte Berechnungen wie Vorhersage der nativen Konformation von Proteine
- Zum Beispiel medizinische Analysesimulationen virtuelle Realität bezogen auf Ct und MRT Bilder scannen
- Physikalische Simulationen,[64] insbesondere in Flüssigkeitsdynamik
- Neurales Netzwerk Training in maschinelles Lernen Probleme
- Gesichtserkennung
- Verteiltes Computer Projekte wie z. Seti@home Andere Projekte verwenden BOINC
- Molekulare Dynamik
- Bergbau Kryptowährungen
- Struktur aus Bewegung (SFM) Software
Siehe auch
- Sycl - ein offener Standard von Khronos Gruppe Für die Programmierung einer Vielzahl von Plattformen, einschließlich GPUs, mit einzige Quelle Modernes C ++, ähnlich wie bei höherer Ebene Cuda Laufzeit API (einzige Quelle)
- Brookgpu - Der Compiler der Stanford University Graphics Group
- Array -Programmierung
- Parallele Computing
- Stream -Verarbeitung
- rcuda - Eine API zum Berechnen von Remotecomputern
- Molekulare Modellierung an GPU
- Vulkan -Low-Level-, Hochleistungs-3D-Grafik- und Computer-API
- OptiX - Ray Tracing API von Nvidia
- Cuda binär (Cubin) - eine Art fett binärer Typ
Verweise
- ^ a b Abi-Chahla, Fedy (18. Juni 2008). "Nvidia's Cuda: Das Ende der CPU?". Toms Hardware. Abgerufen 17. Mai, 2015.
- ^ Zunitch, Peter (2018-01-24). "CUDA gegen OpenCL vs. OpenGL". Video Macher. Abgerufen 2018-09-16.
- ^ "Opencl". NVIDIA -Entwickler. 2013-04-24. Abgerufen 2019-11-04.
- ^ "Nvidia Cuda Homepage". 18. Juli 2017.
- ^ Shimpi, Anand Lal; Wilson, Derek (8. November 2006). "Nvidia's GeForce 8800 (G80): GPUs für DirectX 10 erneut anarchiert". Anandtech. Abgerufen 16. Mai, 2015.
- ^ "CUDA LLVM Compiler". 7. Mai 2012.
- ^ Erste OpenCL -Demo auf einer GPU an Youtube
- ^ Direct Compute Ocean Demo, die auf Nvidia Cuda-fähiger GPU läuft an Youtube
- ^ Vasiliadis, Giorgos; Antonatos, Spiros; Polychronakis, Michalis; Markatos, Evangelos P.; Ioannidis, Sotiris (September 2008). "GNORT: Hochleistungsnetzwerk -Intrusion -Erkennung unter Verwendung von Grafikprozessoren" (PDF). Verfahren des 11. Internationalen Symposiums über die jüngsten Fortschritte bei der Intrusion Detection (RAID). Vorlesungsnotizen in Informatik. 5230: 116–134. doi:10.1007/978-3-540-87403-4_7. ISBN 978-3-540-87402-7.
- ^ Schatz, Michael C.; Trapnell, Cole; Delcher, Arthur L.; Varsney, Amitabh (2007). "Hochdurchsatz-Sequenzausrichtung unter Verwendung von Grafikverarbeitungseinheiten". BMC Bioinformatics. 8: 474. doi:10.1186/1471-2105-8-474. PMC 2222658. PMID 18070356.
- ^ "Pyrit - Google Code".
- ^ "Verwenden Sie Ihre NVIDIA -GPU für wissenschaftliches Computing". BOINC. 2008-12-18. Archiviert von das Original am 2008-12-28. Abgerufen 2017-08-08.
- ^ "Nvidia CUDA Software Development Kit (CUDA SDK) - Versionshinweise Version 2.0 für Mac OS X". Archiviert von das Original am 2009-01-06.
- ^ "CUDA 1.1 - jetzt auf Mac OS X". 14. Februar 2008. archiviert von das Original am 22. November 2008.
- ^ "CUDA 11 Features enthüllt". 14. Mai 2020.
- ^ "CUDA Toolkit 11.1 führt Unterstützung für die GPUs von Geforce RTX 30 und Quadro RTX -Serie ein". 23. September 2020.
- ^ "Verbesserung der Speicherzuweisung mit neuen NVIDIA CUDA 11.2 -Funktionen". 16. Dezember 2020.
- ^ "Erforschen der neuen Funktionen von CUDA 11.3". 16. April 2021.
- ^ Silberstein, Mark; Schuster, Assaf; Geiger, Dan; Patney, Anjul; Owens, John D. (2008). "Effiziente Berechnung von Summenprodukten für GPUs durch software-verwaltete Cache" (PDF). Proceedings der 22. jährlichen Internationalen Konferenz über Supercomputing - ICS '08. Proceedings der 22. jährlichen Internationalen Konferenz über Supercomputing - ICS '08. S. 309–318. doi:10.1145/1375527.1375572. ISBN 978-1-60558-158-3.
- ^ "CUDA C -Programmierhandbuch V8.0" (PDF). NVIDIA -Entwicklerzone. Abschnitt 3.1.5. Januar 2017. p. 19. Abgerufen 22. März 2017.
{{}}
: CS1 Wartung: Standort (Link) - ^ "NVCC erzwingt die C ++ - Zusammenstellung von .cu -Dateien". 29. November 2011.
- ^ Whitehead, Nathan; Fit-Florea, Alex. "Präzision & Leistung: Floating Point und IEEE 754 Compliance für Nvidia gpus" (PDF). Nvidia. Abgerufen 18. November, 2014.
- ^ "Cuda-fähige Produkte". Cuda -Zone. Nvidia Corporation. Abgerufen 2008-11-03.
- ^ "Korianderprojekt: Kompilieren Sie CUDA -Codes zu openencl, überall laufen". Phoronix.
- ^ Perkins, Hugh (2017). "CUDA-ON-CL" (PDF). Iwocl. Abgerufen 8. August, 2017.
- ^ "Hughperkins/Koriander: Build Nvidia® CUDA ™ Code für OpenCL ™ 1.2 -Geräte". Github. 6. Mai 2019.
- ^ "Cu2cl -Dokumentation". chrec.cs.vt.edu.
- ^ "NVIDIA CUDA -Programmierhandbuch. Version 1.0" (PDF). 23. Juni 2007.
- ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.1" (PDF). 8. Dezember 2008.
- ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.2" (PDF). 2. April 2009.
- ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.2.1" (PDF). 26. Mai 2009.
- ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.3.1" (PDF). 26. August 2009.
- ^ "NVIDIA CUDA -Programmierhandbuch. Version 3.0" (PDF). 20. Februar 2010.
- ^ "NVIDIA CUDA C -Programmierhandbuch. Version 3.1.1" (PDF). 21. Juli 2010.
- ^ "NVIDIA CUDA C -Programmierhandbuch. Version 3.2" (PDF). 9. November 2010.
- ^ "CUDA 11.0 Versionsnotizen". NVIDIA -Entwickler.
- ^ "CUDA 11.1 Versionsnotizen". NVIDIA -Entwickler.
- ^ "Nvidia quadro NVS 420 Spezifikationen". TechPowerUp -GPU -Datenbank.
- ^ Larabel, Michael (29. März 2017). "Nvidia führt die Tegra X2 -GPU -Unterstützung in Nouveau aus". Phoronix. Abgerufen 8. August, 2017.
- ^ Nvidia Xavier -Spezifikationen auf TechPowerup (vorläufig)
- ^ "Willkommen - Jetson LinuxDeveloper Guide 34.1 Dokumentation".
- ^ "Nvidia, die Open-Source-Volta-GPU-Unterstützung für ihren Xavier SoC hervorruft".
- ^ "H.1. Funktionen und technische Spezifikationen - Tabelle 13. Feature -Unterstützung pro Rechenfähigkeit". docs.nvidia.com. Abgerufen 2020-09-23.
- ^ https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#features-technical-spezifikationen
- ^ https://developer.nvidia.com/cuda-11.3.0-download-archive (von include/crt/mma.hpp)
- ^ https://images.nvidia.com/aem-dam/en-zz/solutions/geforce/ampere/pdf/nvidia-ampere-ga102-gpu-architecture-whitepaper-v1.pdf[Bare URL PDF]
- ^ https://www.nvidia.com/content/dam/en-zz/solutions/gtcf21/jetson-orin/nvidia-jetson-agx-orin-technical-brief.pdf[Bare URL PDF]
- ^ https://images.nvidia.com/aem-dam/en-zz/solutions/design-visualization/technologies/turing-architecture/nvidia-turing-architecture-whitepaper.pdf[Bare URL PDF]
- ^ https://www.nvidia.com/content/dam/en-zz/solutions/data-center/a100/pdf/nvidia-a100-datasheet-us-nvidia-1758950-r4-web.pdf[Bare URL PDF]
- ^ "Nvidia Hopper Architektur ausführlich". 22. März 2022.
- ^ H.1. Merkmale und technische Spezifikationen - Tabelle 14. Technische Spezifikationen pro Berechnungsfähigkeit
- ^ Nvidia Hopper Architektur ausführlich
- ^ Alus führt nur eine einzelne Precision Floating-Punkt-Arithmetika durch. Es gibt 1 Doppelprezisions-Gleitkomma-Einheit.
- ^ a b Durant, Luke; Giroux, Olivier; Harris, Mark; Stam, Nick (10. Mai 2017). "Inside Volta: Die fortschrittlichste GPU der Welt der Welt". Nvidia Developer Blog.
- ^ Nicht mehr als ein Scheduler kann 2 Anweisungen gleichzeitig ausstellen. Der erste Scheduler ist verantwortlich für Warps mit ungeraden IDs. Der zweite Scheduler ist verantwortlich für Warps mit gleichmäßigen IDs.
- ^ "H.6.1. Architektur". docs.nvidia.com. Abgerufen 2019-05-13.
- ^ "I.7. Rechenfähigkeit 8.x". docs.nvidia.com. Abgerufen 2020-09-23.
- ^ "Anhang F. Funktionen und technische Spezifikationen" (PDF). (3.2 MIB), Seite 148 von 175 (Version 5.0 Oktober 2012).
- ^ "Pycuda".
- ^ "Pycublas". Archiviert von das Original am 2009-04-20. Abgerufen 2017-08-08.
- ^ "Cupy". Abgerufen 2020-01-08.
- ^ "Nvidia Cuda Bioinformatik: Barracuda". Biozentrisch. 2019-07-19. Abgerufen 2019-10-15.
- ^ "Teil V: Physiksimulation". NVIDIA -Entwickler. Abgerufen 2020-09-11.