CUDA

CUDA
Nvidia CUDA Logo.jpg
Entwickler (en) Nvidia
Erstveröffentlichung 23. Juni 2007; vor 15 Jahren
Stabile Version
11.7.1 / 3. August 2022; Vor 1 Tag
Betriebssystem Fenster, Linux
Plattform Unterstützter GPUs
Typ Gpgpu
Lizenz Proprietär
Webseite Entwickler.nvidia.com/Cuda-Zone

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.:

Programmierfähigkeiten

Beispiel für den CUDA -Verarbeitungsfluss
  1. Kopieren Sie Daten vom Hauptspeicher zum GPU -Speicher
  2. CPU initiiert die GPU Kernel berechnen
  3. Cuda -Kerne der GPU führen den Kern parallel aus
  4. 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]

Gv11b[42][43]

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)

[44]

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.

[46] [47] [48] [49] [50] [51]

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)

[52]

[53]

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

[58]

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

Siehe auch

Verweise

  1. ^ a b Abi-Chahla, Fedy (18. Juni 2008). "Nvidia's Cuda: Das Ende der CPU?". Toms Hardware. Abgerufen 17. Mai, 2015.
  2. ^ Zunitch, Peter (2018-01-24). "CUDA gegen OpenCL vs. OpenGL". Video Macher. Abgerufen 2018-09-16.
  3. ^ "Opencl". NVIDIA -Entwickler. 2013-04-24. Abgerufen 2019-11-04.
  4. ^ "Nvidia Cuda Homepage". 18. Juli 2017.
  5. ^ 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.
  6. ^ "CUDA LLVM Compiler". 7. Mai 2012.
  7. ^ Erste OpenCL -Demo auf einer GPU an Youtube
  8. ^ Direct Compute Ocean Demo, die auf Nvidia Cuda-fähiger GPU läuft an Youtube
  9. ^ 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.
  10. ^ 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.
  11. ^ Manavski, Svetlin A.; Giorgio, Valle (2008). "CUDA-kompatible GPU-Karten als effiziente Hardware-Beschleuniger für die Smith-Waterman-Sequenzausrichtung". BMC Bioinformatics. 10: S10. doi:10.1186/1471-2105-9-S2-S10. PMC 2323659. PMID 18387198.
  12. ^ "Pyrit - Google Code".
  13. ^ "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.
  14. ^ "Nvidia CUDA Software Development Kit (CUDA SDK) - Versionshinweise Version 2.0 für Mac OS X". Archiviert von das Original am 2009-01-06.
  15. ^ "CUDA 1.1 - jetzt auf Mac OS X". 14. Februar 2008. archiviert von das Original am 22. November 2008.
  16. ^ "CUDA 11 Features enthüllt". 14. Mai 2020.
  17. ^ "CUDA Toolkit 11.1 führt Unterstützung für die GPUs von Geforce RTX 30 und Quadro RTX -Serie ein". 23. September 2020.
  18. ^ "Verbesserung der Speicherzuweisung mit neuen NVIDIA CUDA 11.2 -Funktionen". 16. Dezember 2020.
  19. ^ "Erforschen der neuen Funktionen von CUDA 11.3". 16. April 2021.
  20. ^ 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.
  21. ^ "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)
  22. ^ "NVCC erzwingt die C ++ - Zusammenstellung von .cu -Dateien". 29. November 2011.
  23. ^ Whitehead, Nathan; Fit-Florea, Alex. "Präzision & Leistung: Floating Point und IEEE 754 Compliance für Nvidia gpus" (PDF). Nvidia. Abgerufen 18. November, 2014.
  24. ^ "Cuda-fähige Produkte". Cuda -Zone. Nvidia Corporation. Abgerufen 2008-11-03.
  25. ^ "Korianderprojekt: Kompilieren Sie CUDA -Codes zu openencl, überall laufen". Phoronix.
  26. ^ Perkins, Hugh (2017). "CUDA-ON-CL" (PDF). Iwocl. Abgerufen 8. August, 2017.
  27. ^ "Hughperkins/Koriander: Build Nvidia® CUDA ™ Code für OpenCL ™ 1.2 -Geräte". Github. 6. Mai 2019.
  28. ^ "Cu2cl -Dokumentation". chrec.cs.vt.edu.
  29. ^ "NVIDIA CUDA -Programmierhandbuch. Version 1.0" (PDF). 23. Juni 2007.
  30. ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.1" (PDF). 8. Dezember 2008.
  31. ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.2" (PDF). 2. April 2009.
  32. ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.2.1" (PDF). 26. Mai 2009.
  33. ^ "NVIDIA CUDA -Programmierhandbuch. Version 2.3.1" (PDF). 26. August 2009.
  34. ^ "NVIDIA CUDA -Programmierhandbuch. Version 3.0" (PDF). 20. Februar 2010.
  35. ^ "NVIDIA CUDA C -Programmierhandbuch. Version 3.1.1" (PDF). 21. Juli 2010.
  36. ^ "NVIDIA CUDA C -Programmierhandbuch. Version 3.2" (PDF). 9. November 2010.
  37. ^ "CUDA 11.0 Versionsnotizen". NVIDIA -Entwickler.
  38. ^ "CUDA 11.1 Versionsnotizen". NVIDIA -Entwickler.
  39. ^ "Nvidia quadro NVS 420 Spezifikationen". TechPowerUp -GPU -Datenbank.
  40. ^ Larabel, Michael (29. März 2017). "Nvidia führt die Tegra X2 -GPU -Unterstützung in Nouveau aus". Phoronix. Abgerufen 8. August, 2017.
  41. ^ Nvidia Xavier -Spezifikationen auf TechPowerup (vorläufig)
  42. ^ "Willkommen - Jetson LinuxDeveloper Guide 34.1 Dokumentation".
  43. ^ "Nvidia, die Open-Source-Volta-GPU-Unterstützung für ihren Xavier SoC hervorruft".
  44. ^ "H.1. Funktionen und technische Spezifikationen - Tabelle 13. Feature -Unterstützung pro Rechenfähigkeit". docs.nvidia.com. Abgerufen 2020-09-23.
  45. ^ https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#features-technical-spezifikationen
  46. ^ https://developer.nvidia.com/cuda-11.3.0-download-archive (von include/crt/mma.hpp)
  47. ^ https://images.nvidia.com/aem-dam/en-zz/solutions/geforce/ampere/pdf/nvidia-ampere-ga102-gpu-architecture-whitepaper-v1.pdf[Bare URL PDF]
  48. ^ https://www.nvidia.com/content/dam/en-zz/solutions/gtcf21/jetson-orin/nvidia-jetson-agx-orin-technical-brief.pdf[Bare URL PDF]
  49. ^ https://images.nvidia.com/aem-dam/en-zz/solutions/design-visualization/technologies/turing-architecture/nvidia-turing-architecture-whitepaper.pdf[Bare URL PDF]
  50. ^ 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]
  51. ^ "Nvidia Hopper Architektur ausführlich". 22. März 2022.
  52. ^ H.1. Merkmale und technische Spezifikationen - Tabelle 14. Technische Spezifikationen pro Berechnungsfähigkeit
  53. ^ Nvidia Hopper Architektur ausführlich
  54. ^ Alus führt nur eine einzelne Precision Floating-Punkt-Arithmetika durch. Es gibt 1 Doppelprezisions-Gleitkomma-Einheit.
  55. ^ 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.
  56. ^ 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.
  57. ^ "H.6.1. Architektur". docs.nvidia.com. Abgerufen 2019-05-13.
  58. ^ "I.7. Rechenfähigkeit 8.x". docs.nvidia.com. Abgerufen 2020-09-23.
  59. ^ "Anhang F. Funktionen und technische Spezifikationen" (PDF). (3.2 MIB), Seite 148 von 175 (Version 5.0 Oktober 2012).
  60. ^ "Pycuda".
  61. ^ "Pycublas". Archiviert von das Original am 2009-04-20. Abgerufen 2017-08-08.
  62. ^ "Cupy". Abgerufen 2020-01-08.
  63. ^ "Nvidia Cuda Bioinformatik: Barracuda". Biozentrisch. 2019-07-19. Abgerufen 2019-10-15.
  64. ^ "Teil V: Physiksimulation". NVIDIA -Entwickler. Abgerufen 2020-09-11.

Externe Links