Allzweck-Computing auf Grafikverarbeitungseinheiten
Allzweck-Computing auf Grafikverarbeitungseinheiten (Gpgpuoder seltener oft Gpgp) ist die Verwendung von a Grafikkarte (GPU), das typischerweise nur für die Berechnung umgeht Computergrafik, um Berechnungen in Anwendungen durchzuführen, die traditionell von der behandelt werden Zentrale Verarbeitungseinheit (ZENTRALPROZESSOR).[1][2][3][4] Die Verwendung von mehreren Grafikkarten In einem Computer oder einer großen Anzahl von Grafikchips parallele die bereits parallele Natur der Grafikverarbeitung.[5]
Im Wesentlichen eine GPGPU Pipeline ist eine Art von Parallelverarbeitung Zwischen einem oder mehreren GPUs und CPUs, die Daten so analysieren, als ob sie in Bild oder einer anderen grafischen Form wären. Während GPUs bei niedrigeren Frequenzen arbeiten, haben sie normalerweise viele Male so viele Kerne. Somit kann GPUs weit mehr Bilder und grafische Daten pro Sekunde verarbeiten als eine herkömmliche CPU. Migrieren Sie Daten in eine grafische Form und verwenden Sie dann die GPU zum Scannen und Analysieren von einer großen Erstellung beschleunigen.
GPGPU -Pipelines wurden zu Beginn des 21. Jahrhunderts für entwickelt Grafikverarbeitung (z. B. für besser Shader). Es wurde festgestellt, dass diese Pipelines passen Wissenschaftliches rechnen braucht gut und wurde seitdem in diese Richtung entwickelt.
Geschichte
Grundsätzlich alle willkürlichen Boolesche Funktion, einschließlich Addition, Multiplikation und anderen mathematischen Funktionen, können aus a aufgebaut werden funktionell vollständig Satz von Logikoperatoren. 1987,, Conways Leben des Lebens wurde eines der ersten Beispiele für das Allzweck-Computing mit einem frühen Stream -Prozessor genannt Blitz auf eine besondere Folge von aufzurufen logische Operationen auf Bitvektoren.[6]
Allzweck-Computing bei GPUs wurde nach ungefähr 2001 praktischer und populärer Shader und schwimmender Punkt Unterstützung bei Grafikprozessoren. Insbesondere Probleme mit der Beteiligung Matrizen und/oder Vektoren-Insbesondere zwei-, drei- oder vierdimensionale Vektoren-waren leicht zu einer GPU zu übersetzen, die mit nativen Geschwindigkeit und Unterstützung für diese Typen wirkt. Ein signifikanter Meilenstein für GPGPU war das Jahr 2003, als zwei Forschungsgruppen unabhängig voneinander GPU-basierte Ansätze für die Lösung allgemeiner linearer Algebra-Probleme bei GPUs entdeckten, die schneller als bei CPUs lief.[7][8] Diese frühen Bemühungen, GPUs als allgemeine Verfahren zu nutzen OpenGL und DirectX. Diese umständliche Übersetzung wurde durch das Aufkommen allgemeiner Programmiersprachen und APIs wie z. Sch/Rapidmind, Bach und Beschleuniger.[9][10]
Darauf folgten Nvidia's CUDA, die es den Programmierern ermöglichten, die zugrunde liegenden grafischen Konzepte zugunsten von gemeinsamer zu ignorieren High Performance Computing Konzepte.[11] Zu den neueren, hardware-dank-unabhängigen Angeboten gehören Microsoft's DirectCompute und Apple/Khronos Group's OpenCL.[11] Dies bedeutet, dass moderne GPGPU -Pipelines die Geschwindigkeit einer GPU nutzen können, ohne eine vollständige und explizite Konvertierung der Daten in eine grafische Form zu erfordern.
Mark Harris, der Gründer von gpgpu.org, geprägt den Begriff Gpgpu.
Implementierungen
Jede Sprache, die es dem auf der CPU ausgeführten Code ermöglicht, eine GPU zu befragen Shader Für Rückgabewerte können Sie ein GPGPU -Framework erstellen.
Programmierstandards für paralleles Computing umfassen OpenCL (Lieferantenunabhängig), OpenACC, OpenMP und OpenHMPP.
Ab 2016[aktualisieren]OpenCL ist die dominierende offene allgemeine GPU-Computersprache und ein offener Standard, der durch die definiert ist Khronos Gruppe. OpenCL bietet a plattformübergreifend Die GPGPU -Plattform, die zusätzlich Daten parallele Computer auf CPUs unterstützt. OpenCL wird aktiv auf Intel-, AMD-, NVIDIA- und ARM -Plattformen unterstützt. Die Khronos -Gruppe hat ebenfalls standardisiert und implementiert Syclein höheres Programmiermodell für OpenCL Als Single-Source-Domäne spezifische eingebettete Sprache basierend auf reinem C ++ 11.
Der dominierende proprietäre Rahmen ist Nvidia CUDA.[12] Nvidia startete Cuda im Jahr 2006, a Softwareentwicklungskit (SDK) und Programmierschnittstelle (API), die die Verwendung der Programmiersprache ermöglicht C Algorithmen für die Ausführung auf Code auf Geforce 8 Serie und später GPUs.
Rocm, startete 2016, ist die Open-Source-Antwort von AMD auf CUDA. Es ist ab 2022 in Bezug auf Merkmale mit CUDA gleich und fehlt immer noch die Unterstützung der Verbraucher.
Das Xcelerit SDK,[13] Erstellt von Xcelerit,[14] wurde entwickelt, um große vorhandene zu beschleunigen C ++ oder C# Code-Basen auf GPUS mit minimalem Aufwand. Es bietet ein vereinfachtes Programmiermodell, automatisiert die Parallelisierung, verwaltet Geräte und Speicher und kompiliert für CUDA -Binärdateien. Zusätzlich Multi-Core CPUs und andere Beschleuniger können aus demselben Quellcode ausgerichtet werden.
OpenVidia wurde bei entwickelt Universität von Toronto Zwischen 2003 bis 2005,,[15] in Zusammenarbeit mit Nvidia.
Altimesh Hybridizer von Altimesh Compiles erstellt Gemeinsame Zwischensprache Binärdateien zu Cuda.[16][17] Es unterstützt Generika und virtuelle Funktionen.[18] Debugging und Profilerstellung sind in integriert in Visual Studio und unabhängig.[19] Es ist als Visual Studio -Erweiterung auf dem Visual Studio Marketplace erhältlich.
Microsoft stellte die vor DirectCompute GPU Computing -API, veröffentlicht mit dem DirectX 11 API.
Alea GPU[20] von quantalea erstellt[21] Führen Sie native GPU -Computerfunktionen für die Microsoft .NET -Sprache ein F#[22] und C#. Alea GPU bietet außerdem ein vereinfachtes GPU-Programmiermodell an, das auf GPU parallel und parallele Aggregat unter Verwendung von Delegierten und automatischer Speicherverwaltung basiert.[23]
Matlab Unterstützt die GPGPU -Beschleunigung mit der Parallel Computing Toolbox und MATLAB Distributed Computing Server,[24] und Pakete von Drittanbietern wie Jacke.
Die GPGPU -Verarbeitung wird auch verwendet, um zu simulieren Newtonsche Physik durch Physikmotoren,[25] und kommerzielle Implementierungen umfassen Havok Physik, FX und PhysXbeide werden typischerweise für Computer verwendet und Videospiele.
C ++ beschleunigte massive Parallelität (C ++ Amp) ist eine Bibliothek, die die Ausführung von beschleunigt C ++ Code durch Nutzung der datenparallelen Hardware für GPUs.
Mobile Computer
Aufgrund des Trends der steigenden Leistung mobiler GPU Mobile Betriebssysteme.
Google Android 4.2 aktiviertes Ausführen Renderscript Code auf der GPU des Mobilgeräts.[26] Apfel stellte das Eigentümer vor Metall API für iOS Anwendungen, die in der Lage sind, beliebiger Code über Apples GPU -Shader von Apple auszuführen.
Hardwareunterstützung
Computer Grafikkarten werden von verschiedenen Anbietern hergestellt, wie z. Nvidia, AMD. Karten von solchen Anbietern unterscheiden sich bei der Implementierung der Datenformatunterstützung, wie z. ganze Zahl und Schwimmpunkt Formate (32-Bit und 64-Bit). Microsoft eingeführt a Shadermodell Standard, um die verschiedenen Funktionen von Grafikkarten zu einer einfachen Shader -Modellversionsnummer (1.0, 2.0, 3.0 usw.) zu bewerten.
Ganzzahlzahlen
Pre-Directx 9-Grafikkarten nur unterstützt Palett oder ganzzahlige Farbtypen. Verschiedene Formate sind verfügbar, jeweils ein rotes Element, ein grünes Element und ein blaues Element. Manchmal wird ein weiterer Alpha -Wert hinzugefügt, der für Transparenz verwendet werden kann. Gemeinsame Formate sind:
- 8 Bit pro Pixel - Manchmal Palettenmodus, wobei jeder Wert ein Index in einer Tabelle mit dem realen Farbwert ist, der in einem der anderen Formate angegeben ist. Manchmal drei Teile für Rot, drei Bit für Grün und zwei Bits für Blau.
- 16 Bit pro Pixel - Normalerweise werden die Bits als fünf Bit für Rot, sechs Bit für Grün und fünf Bit für Blau zugewiesen.
- 24 Bit pro Pixel - Es gibt acht Bits für jede Rot, Grün und Blau.
- 32 Bit pro Pixel - Es gibt acht Bit für jede Rot, Grün, Blau und Alpha.
Gleitkommazahlen
Für früh Funktionsfunktion oder begrenzte Programmierbarkeitsgrafiken (d. H. Bis und einschließlich DirectX 8.1-konforme GPUs) Dies war ausreichend, da dies auch die in Anzeigen verwendete Darstellung ist. Es ist wichtig zu beachten, dass diese Darstellung bestimmte Einschränkungen aufweist. Angesichts einer ausreichenden Grafikverarbeitungsleistung möchten sogar Grafikprogrammierer bessere Formate verwenden, wie z. schwimmender Punkt Datenformate, um Effekte wie z. Hochdynamische Bildgebung. Viele GPGPU -Anwendungen erfordern die Genauigkeit der Gleitkomma, die mit Grafikkarten entstanden ist, die der DirectX 9 -Spezifikation entsprechen.
DirectX 9 Shader Model 2.x schlug die Unterstützung von zwei Präzisionstypen vor: vollständige und teilweise Präzision. Die vollständige Präzisionsunterstützung kann entweder FP32 oder FP24 (schwimmender Punkt 32 oder 24-Bit pro Komponente) oder höher sein, während die teilweise Genauigkeit FP16 war. Ati Radeon R300 Die Serie von GPUs unterstützte die FP24 -Präzision nur in der programmierbaren Fragmentpipeline (obwohl FP32 in den Vertex -Prozessoren unterstützt wurde) Nvidia's NV30 Serie unterstützte sowohl FP16 als auch FP32; andere Anbieter wie z. S3 Grafik und Xgi Unterstützte eine Mischung aus Formaten bis FP24.
Die Implementierungen des schwimmenden Punktes zu Nvidia GPUs sind meistens IEEE konform; Dies gilt jedoch bei allen Anbietern nicht.[27] Dies hat Auswirkungen auf Korrektheit, die für einige wissenschaftliche Anwendungen als wichtig angesehen werden. Während 64-Bit-Gleitkommawerte (Double Precision Float) häufig auf CPUs verfügbar sind, werden diese bei GPUs nicht allgemein unterstützt. Einige GPU-Architekturen opfern die Einhaltung der IEEE-Konformität, andere fehlen doppelte Präzision. Es wurden Anstrengungen unternommen, um die schwimmenden Punktwerte der Doppelprezision auf GPUs zu emulieren. Der Speed -Kompromiss negiert jedoch den Vorteil, dass das Computer in erster Linie auf die GPU abgeladen wird.[28]
Vektorisation
Die meisten Operationen der GPU arbeiten vektorisiert: Ein Betrieb kann auf bis zu vier Werte gleichzeitig ausgeführt werden. Wenn beispielsweise eine Farbe ⟨r1, g1, b1⟩ durch eine andere Farbe ⟨r2, g2, b2⟩ moduliert werden soll Betrieb. Diese Funktionalität ist in Grafiken nützlich, da fast jeder grundlegende Datentyp ein Vektor ist (entweder 2-, 3- oder vierdimensional). Beispiele sind Scheitelpunkte, Farben, normale Vektoren und Texturkoordinaten. Viele andere Anwendungen können dies gut nutzen und aufgrund ihrer höheren Leistung, Vektoranweisungen, als einzelne Anweisung, mehrere Daten (mehrere Daten (Simd), sind seit langem auf CPUs verfügbar.
GPU gegen CPU
Ursprünglich wurden Daten einfach in einen Weg von a übergeben Zentrale Verarbeitungseinheit (CPU) zu a Grafikkarte (GPU), dann zu a Anzeigegerät. Im Laufe der Zeit wurde es jedoch für GPU Grafikkarte kann verstehen. Da die GPU Zugriff auf jeden Ziehbetrieb hat, kann sie Daten in diesen Formen schnell analysieren, während eine CPU jedes Pixel- oder Datenelement viel langsamer befragt hat Arbeitsspeicher (oder in einem noch schlimmeren Fall a Festplatte) ist langsamer als GPUs und Grafikkarten, die normalerweise kleinere Mengen teurerer Speicher enthalten, der viel schneller zugänglich ist. Die Übertragung des Teils des Datensatzes, der aktiv an diesen GPU -Speicher in Form von Texturen oder anderen leicht lesbaren GPU -Formularen analysiert werden soll, führt zu einer Geschwindigkeitssteigerung. Das Unterscheidungsmerkmal eines GPGPU -Designs ist die Fähigkeit, Informationen zu übertragen bidirektional zurück von der GPU zur CPU; Im Allgemeinen ist der Datendurchsatz in beide Richtungen ideal hoch, was zu a führt Multiplikator Einfluss auf die Geschwindigkeit einer bestimmten Hochnutzung Algorithmus. GPGPU -Pipelines können die Effizienz von besonders großen Datensätzen und/oder Daten mit 2D- oder 3D -Bildern verbessern. Es wird sowohl in komplexen Grafikpipelines als auch in Pipelines verwendet Wissenschaftliches rechnen; Mehr noch in Feldern mit großen Datensätzen wie Genomzuordnungoder wo zwei oder dreidimensionale Analysen nützlich sind- insbesondere derzeit Biomolekül Analyse, Protein Studium und andere Komplexe organische Chemie. Solche Pipelines können die Effizienz auch erheblich verbessern Bildverarbeitung und Computer Visionunter anderen Bereichen; ebenso gut wie Parallelverarbeitung allgemein. Einige sehr stark optimierte Pipelines haben eine Geschwindigkeitserhöhung von mehr hundertfachen der ursprünglichen CPU-basierten Pipeline für eine Hochnutzungsaufgabe ergeben.
Ein einfaches Beispiel wäre ein GPU -Programm, das Daten über den Durchschnitt sammelt Beleuchtung Werte, da es eine Ansicht von einer Kamera oder einem Computergrafikprogramm zum Hauptprogramm der CPU zurückreiche, sodass die CPU dann die Gesamtbildschirmansicht anpassen kann. Ein fortgeschritteneres Beispiel könnte verwendet werden Kantenerkennung sowohl numerische Informationen als auch ein verarbeitete Bild zurückzugeben, das Umrisse an a darstellt Computer Vision Programmsteuerung beispielsweise einen mobilen Roboter. Weil die GPU einen schnellen und lokalen Hardware -Zugriff auf jeden hat Pixel oder ein anderes Bildelement in einem Bild kann es analysieren und durchschnittlich (für das erste Beispiel) oder ein anwenden a anwenden Sobel Edge -Filter oder andere Faltung Filter (für die zweite) mit viel größerer Geschwindigkeit als eine CPU, die normalerweise langsamer zugreifen muss Arbeitsspeicher Kopien der fraglichen Grafik.
GPGPU ist im Grunde ein Softwarekonzept, kein Hardwarekonzept. Es ist eine Art von Art von Algorithmus, kein Gerät. Spezialisierte Gerätedesigns können jedoch noch weiter die Effizienz von GPGPU -Pipelines verbessern, die traditionell relativ wenige Algorithmen für sehr große Datenmengen durchführen. Massiv parallelisierte, gigantische Aufgaben auf dem Datendatenebene können somit durch spezielle Setups wie Rack Computing noch weiter parallelisiert werden (viele ähnliche, hochgeschnittene Maschinen, die in ein eingebaut sind Gestell), was eine dritte Schicht hinzufügt - viele Computereinheiten, die viele CPUs verwenden, um vielen GPUs zu entsprechen. Etwas Bitcoin "Bergleute" verwendeten solche Setups für die Hochquantitätsverarbeitung.
Caches
Historisch gesehen hat CPUs Hardware verwaltet Caches, aber der frühere GPUs lieferte nur software-verwaltete lokale Erinnerungen. Da GPUs jedoch zunehmend für allgemeine Anwendungen eingesetzt werden, werden hochmoderne GPUs mit hardware-verwalteten mehrstufigen Caches entwickelt, die dem GPUs geholfen haben, sich in Richtung Mainstream-Computer zu bewegen. Zum Beispiel, GeForce 200 -Serie GT200 Architecture GPUs verfügte nicht über einen L2 -Cache, der Fermi Die GPU hat 768 KIB Last-Level-Cache, die Kepler GPU hat 1,5 MIB-Cache Last-Level,[29] das Maxwell GPU hat 2 MIB-Cache im letzten Stufe und die Pascal Die GPU hat 4 MIB-Cache Last-Level.
Datei registrieren
GPUs haben sehr große Registrieren Sie Dateien, die es ihnen ermöglichen, die Latenz des Kontexts zu reduzieren. Die Größe der Registerdatei nimmt auch über verschiedene GPU -Generationen zu, z. B. die Größe der gesamten Registerdatei auf Maxwell (GM200), Pascal und Volta -GPUs sind 6 MIB, 14 MIB bzw. 20 MIB.[30][31] Im Vergleich dazu die Größe von a Registrieren Sie die Datei auf CPUs ist klein, typischerweise Zehn oder Hunderte von Kilobyten.
Energieeffizienz
Die hohe Leistung von GPUs ist auf Kosten des hohen Stromverbrauchs zurückzuführen, der unter Volllast in der Tat so viel Leistung ist wie der Rest des PC -Systems zusammen.[32] Der maximale Stromverbrauch der GPU der Pascal -Serie (Tesla P100) wurde mit 250 W angegeben.[33]
Stream -Verarbeitung
GPUs sind speziell für Grafiken konzipiert und sind somit sehr restriktiv in den Bereichen Operationen und Programmierung. Aufgrund ihres Designs sind GPUs nur für Probleme wirksam, die mit Verwendung gelöst werden können Stream -Verarbeitung und die Hardware kann nur auf bestimmte Weise verwendet werden.
Die folgende Diskussion, die sich auf Eckpunkte, Fragmente und Texturen beziehtOpenGL oder DirectX) wurden verwendet, um eine allgemeine Berechnung durchzuführen. Mit der Einführung der CUDA (Nvidia, 2007) und OpenCL (Vendor-unabhängig, 2008) Allzweck-Computer-APIs in neuen GPGPU-Codes ist nicht mehr erforderlich, um die Berechnung den Grafikprimitiven abzubilden. Die Stromverarbeitung von GPUs bleibt unabhängig von den verwendeten APIs gültig. (Siehe z. B.,,[34]))
GPUs können nur unabhängige Scheitelpunkte und Fragmente verarbeiten, aber viele davon parallel verarbeiten. Dies ist besonders effektiv, wenn der Programmierer viele Scheitelpunkte oder Fragmente auf die gleiche Weise verarbeiten möchte. In diesem Sinne sind GPUs Stream -Prozessoren - Prozessoren, die parallel funktionieren können, indem ein Kernel auf vielen Datensätzen in einem Stream gleichzeitig ausgeführt wird.
A Strom ist einfach eine Reihe von Datensätzen, die eine ähnliche Berechnung erfordern. Streams liefern Datenparallelität. Kerne sind die Funktionen, die auf jedes Element im Stream angewendet werden. Im gpus, Eckpunkte und Fragmente sind die Elemente in Streams und Scheitelpunkten und Fragment -Shadern sind die Kernel, die darauf betrieben werden.[zweifelhaft ] Für jedes Element können wir nur aus der Eingabe lesen, Operationen darauf ausführen und in die Ausgabe schreiben. Es ist zulässig, mehrere Eingänge und mehrere Ausgänge zu haben, aber niemals ein Gedächtnis, das sowohl lesbar als auch beschreibbar ist.[vage]
Die arithmetische Intensität ist definiert als die Anzahl der pro übertragenen Speicherwort. Es ist wichtig, dass GPGPU -Anwendungen eine hohe arithmetische Intensität haben.[35]
Ideale GPGPU -Anwendungen haben große Datensätze, eine hohe Parallelität und minimale Abhängigkeit zwischen Datenelementen.
GPU -Programmierkonzepte
Rechenressourcen
In der GPU stehen eine Vielzahl von Rechenressourcen zur Verfügung:
- Programmierbare Prozessoren - Vertex, Primitiv, Fragment und hauptsächlich berechnen Pipelines ermöglichen es dem Programmierer, Kernel in Datenströmen auszuführen
- Rasterizer-Erzeugt Fragmente und interpoliert provertex-Konstanten wie Texturkoordinaten und Farbe
- Textureinheit-schreibgeschützte Speicherschnittstelle
- FrameBuffer-Speicher-Speicherschnittstelle nur Schreiben
Tatsächlich kann ein Programm anstelle des Framebuffer eine Schreibstruktur für die Ausgabe ersetzen. Dies geschieht entweder durch Zu Textur rendern (RTT), Render-to-Backbuffer-Copy-to-Texture (RTBCTT) oder das neuere Stream-out.
Texturen als Stream
Die häufigste Form für einen Stream, um GPGPU aufzunehmen, ist ein 2D -Gitter, da dies auf natürliche Weise mit dem in GPU eingebauten Rendermodell passt. Viele Berechnungen zeichnen auf natürliche Weise in Netze ein: Matrixalgebra, Bildverarbeitung, physikalisch basierte Simulation usw.
Da Texturen als Speicher verwendet werden, werden Textur -Lookups dann als Speicherlesungen verwendet. Bestimmte Vorgänge können von der GPU automatisch durchgeführt werden.
Kerne
Kernel berechnen kann als den Körper von betrachtet werden Schleifen. Ein Programmierer, der in einem Raster auf der CPU arbeitet, hat beispielsweise einen Code, der so aussieht:
// Eingangs- und Ausgangsnetze haben 10000 x 10000 oder 100 Millionen Elemente. Leere Transform_10K_BY_10K_GRID(schweben in[10000][10000], schweben aus[10000][10000])) { zum (int x = 0; x < 10000; x++) { zum (int y = 0; y < 10000; y++) { // Die nächste Zeile wird 100 Millionen Mal ausgeführt aus[x][y] = do_some_hard_work(in[x][y]); } } }
Auf der GPU legt der Programmierer nur den Körper des Schleifens als Kernel und welche Daten durch Aufrufen der Geometrieverarbeitung anschließt.
Ablaufsteuerung
Im sequentiellen Code ist es möglich, den Fluss des Programms mit IF-Then-ELSE-Anweisungen und verschiedenen Formen von Schleifen zu steuern. Solche Durchflusskontrollstrukturen wurden erst kürzlich zu GPUs hinzugefügt.[36] Bedingte Schreibvorgänge konnten unter Verwendung einer ordnungsgemäß gefertigten Reihe von Arithmetik-/Bitoperationen durchgeführt werden, aber Schleifen und bedingte Verzweigungen waren nicht möglich.
Die jüngste GPUs erlauben Verzweigungen, aber normalerweise mit einer Leistungsstrafe. Die Verzweigung sollte im Allgemeinen in inneren Schleifen vermieden werden, sei es in CPU- oder GPU-Code und verschiedene Methoden, wie z.[37] und Z-Cull[38] Kann verwendet werden, um eine Verzweigung zu erreichen, wenn keine Hardwareunterstützung vorliegt.
GPU -Methoden
Karte
Die Kartenoperation wendet einfach die angegebene Funktion (den Kernel) auf jedes Element im Stream an. Ein einfaches Beispiel besteht darin, jeden Wert im Strom mit einer Konstante zu multiplizieren (erhöht die Helligkeit eines Bildes). Der Kartenvorgang ist einfach zu implementieren auf der GPU. Der Programmierer generiert ein Fragment für jedes Pixel auf dem Bildschirm und wendet ein Fragmentprogramm für jedes einzeln an. Der Ergebnisstrom derselben Größe wird im Ausgangspuffer gespeichert.
Reduzieren
Einige Berechnungen erfordern die Berechnung eines kleineren Streams (möglicherweise eines Stroms von nur einem Element) aus einem größeren Strom. Dies wird als Reduktion des Stroms bezeichnet. Im Allgemeinen kann eine Reduzierung in mehreren Schritten durchgeführt werden. Die Ergebnisse aus dem vorherigen Schritt werden als Eingabe für den aktuellen Schritt verwendet und der Bereich, über den der Betrieb angewendet wird, wird reduziert, bis nur ein Stream -Element verbleibt.
Stream -Filterung
Die Stream-Filterung ist im Wesentlichen eine ungleichmäßige Reduktion. Bei der Filterung werden Elemente aus dem Stream basierend auf einigen Kriterien entfernt.
Scan
Der Scan -Betrieb, ebenfalls bezeichnet Parallele Präfix -Summe, nimmt einen Vektor (Strom) von Datenelementen und eine (willkürliche) assoziative Binärfunktion '+' mit einem Identitätselement 'I' '. Wenn der Eingang [A0, A1, A2, A3, ...] ist, an Exklusiver Scan erzeugt die Ausgabe [i, a0, a0 + a1, a0 + a1 + a2, ...], während a Inklusiven Scan erzeugt die Ausgabe [A0, A0 + A1, A0 + A1 + A2, A0 + A1 + A2 + A3, ...] und erfordert keine Identität existieren. Während der Vorgang auf den ersten Blick inhärent seriell erscheinen mag, sind effiziente parallele Scan -Algorithmen möglich und in Grafikverarbeitungseinheiten implementiert. Der Scan-Betrieb verwendet in z. B. Quicksort- und Sparse Matrix-Vector-Multiplikation.[34][39][40][41]
Streuen
Das streuen Der Betrieb ist am natürlichsten auf dem Vertex -Prozessor definiert. Der Scheitelpunktprozessor kann die Position der anpassen Scheitel, was es dem Programmierer ermöglicht, zu steuern, wo Informationen am Raster abgelagert werden. Andere Erweiterungen sind ebenfalls möglich, z. B. die Kontrolle, wie groß ein Bereich, den der Scheitelpunkt beeinflusst.
Der Fragmentprozessor kann keinen direkten Streuvorgang durchführen, da die Position jedes Fragments im Raster zum Zeitpunkt der Erstellung des Fragments fixiert ist und vom Programmierer nicht verändert werden kann. Eine logische Streuoperation kann jedoch manchmal mit einem anderen Sammelschritt umgesetzt oder implementiert werden. Eine Streuimplementierung würde zuerst sowohl einen Ausgangswert als auch eine Ausgabeadresse ausgeben. Ein unmittelbar folgter Erfassungsvorgang verwendet Adressvergleiche, um festzustellen, ob der Ausgangswert dem aktuellen Ausgangssteck kartiert.
In engagierter Kernel berechnen, Streuung kann durch indexierte Schreibvorgänge durchgeführt werden.
Versammeln
Versammeln ist die Umkehrung der Streuung. Nachdem die Streuung Elemente gemäß einer Karte erstellt hat, kann sammeln die Reihenfolge der Elemente gemäß der verwendeten Kartenstreuung wiederherstellen. In dedizierten Berechnungskerneln kann das Sammeln von indexierten Lesevorgängen durchgeführt werden. In anderen Shaders wird es mit Textur-Lookups durchgeführt.
Sortieren
Die Sortieroperation verwandelt einen ungeordneten Satz von Elementen in eine geordnete Reihe von Elementen. Die häufigste Implementierung bei GPUs ist die Verwendung Radix -Sortierung für Ganzzahl- und schwimmende Punktdaten und grobkörnig Zusammenführen, sortieren und feinkörnig Sortiernetzwerke Für allgemeine vergleichbare Daten.[42][43]
Suche
Mit dem Suchvorgang kann der Programmierer ein bestimmtes Element innerhalb des Streams finden oder möglicherweise Nachbarn eines bestimmten Elements finden. Die GPU wird nicht verwendet, um die Suche nach einem individuellen Element zu beschleunigen, sondern auch, um mehrere Suchvorgänge parallel auszuführen. Meistens ist die verwendete Suchmethode binäre Suche auf sortierte Elemente.
Datenstrukturen
Eine Vielzahl von Datenstrukturen kann in der GPU dargestellt werden:
- Dicht Arrays
- Spärliche Matrizen (Spärmer Array) - statisch oder dynamisch
- Adaptive Strukturen (Gewerkschaftstyp)
Anwendungen
Im Folgenden finden Sie einige Bereiche, in denen GPUs zum Allzweck -Computer verwendet wurden:
- Automatische Parallelisierung[44][45][46]
- Physikalische Simulation und Physikmotoren[25] (normalerweise basierend auf Newtonsche Physik Modelle)
- Conways Leben des Lebens, Stoffsimulation, Fluid inkompressibler Fluss durch Lösung von Euler -Gleichungen (Fluiddynamik)[47] oder Navier -Stokes -Gleichungen[48]
- Statistische Physik
- Gittermesstheorie
- Segmentierung- 2d und 3d[50]
- Level -Set -Methoden
- Ct Wiederaufbau[51]
- Schnelle Fourier-Transformation[52]
- GPU -Lernen - maschinelles Lernen und Data Mining Berechnungen, z. B. mit Software Bidmach
- K-Nearest Nachbaralgorithmus[53]
- Fuzzy Logic[54]
- Tonzuordnung
- Audiosignalverarbeitung[55]
- Audio- und Soundeffektverarbeitung, um a zu verwenden GPU zum digitale Signalverarbeitung (DSP)
- Analoge Signalverarbeitung
- Sprachverarbeitung
- Digitale Bildverarbeitung
- Videoverarbeitung[56]
- Hardware beschleunigte Videodecodierung und Nachbearbeitung
- Bewegungskompensation (Mo Comp)
- Umgekehrt Diskrete Cosinus -Transformation (IDCT)
- Decodierung der variablen Länge (VLD), Huffman -Codierung
- Inverse Quantisierung (Iq (nicht durch Intelligenzquotienten verwechselt werden))))
- In-Loop-Entblocker
- Bitstream -Verarbeitung (Cavlc/CABAC) Verwenden von Spezialhardware für diese Aufgabe, da dies eine serielle Aufgabe ist, die nicht für die reguläre GPGPU -Berechnung geeignet ist
- Deinterlasieren
- Räumlich-zeitliche Deeinterlace
- Lärmminderung
- Kantenverbesserung
- Farbkorrektur
- Hardware beschleunigte Videocodierung und Vorverarbeitung
- Hardware beschleunigte Videodecodierung und Nachbearbeitung
- Globale Beleuchtung- - Strahlenverfolgung, Photon Mapping, Radiosität unter anderen, Untergrundstreuung
- Geometrisches Computer - Konstruktive feste Geometrie, Entfernungsfelder, Kollisionserkennung, Transparenzberechnung, Schattenerzeugung
- Wissenschaftliches rechnen
- Monte-Carlo-Simulation von Lichtausbreitung[57]
- Wettervorhersage
- Klimaforschung
- Molekulare Modellierung an GPU[58]
- Quantenmechanik Physik
- Astrophysik[59]
- Bioinformatik[60][61]
- Computerfinanzierung
- Medizinische Bildgebung
- Klinisches Entscheidungsunterstützungssystem (CDSS)[62]
- Computer Vision[63]
- Digitale Signalverarbeitung / Signalverarbeitung
- Steuerungstechnik
- Unternehmensforschung[64][65][66]
- Neuronale Netze
- Datenbank Operationen[69]
- Computerflüssigkeitsdynamik Besonders mit Verwendung Gitter -Boltzmann -Methoden
- Kryptographie[70] und Kryptanalyse
- Leistungsmodellierung: rechnerisch intensive Aufgaben bei GPU[58]
- Implementierungen von: MD6, fortgeschrittener Verschlüsselungsstandard (AES),[71][72] Datenverschlüsselungsstandard (Des),, RSA,[73] Kryptographie der elliptischen Kurve (ECC)
- Passwort knacken[74][75]
- Kryptowährung Transaktionsverarbeitung ("Mining") (Bitcoin -Bergbau)
- Elektronische Designautomatisierung[76][77]
- Antiviren Software[78][79]
- Intrusionserkennung[80][81]
- Erhöhen Sie die Rechenleistung für verteiltes Computer Projekte wie Seti@home, Einstein@home
Bioinformatik
GPGPU -Verwendung in Bioinformatik:[58][82]
Anwendung | Beschreibung | Unterstützte Funktionen | Erwartete Beschleunigung † | GPU ‡ | Multi-GPU-Unterstützung | Release -Status |
---|---|---|---|---|---|---|
Barrakuda | DNA, einschließlich Epigenetik, Sequenzzuordnungssoftware[83] | Ausrichtung der kurzen Sequenzierungen | 6–10x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 0.7.107f |
Cudasw ++ | Open Source-Software für Smith-Waterman Protein-Datenbanksuche an GPUs | Parallele Suche der Smith-Waterman-Datenbank | 10–50x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 2.0.8 |
Cushaw | Parallelisierter kurzer Read -Aligner | Parallele, genaue Long Read -Aligner - Gitter -Alignments zu großen Genomen | 10x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 1.0.40 |
GPU-Blast | Lokale Suche mit schnell k-tuple heuristic | Proteinausrichtung nach BLASTP, Multi -CPU -Fäden | 3–4x | T 2075, 2090, K10, K20, K20X | Nur single | Jetzt verfügbar, Version 2.2.26 |
GPU-HMMER | Parallelisierte lokale und globale Suche mit Profil versteckten Markov -Modellen | Parallele lokale und globale Suche nach versteckten Markov -Modellen | 60–100x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 2.3.2 |
McUda-Meme | Ultraast skalierbares Motiv -Entdeckungsalgorithmus basierend auf MEME | Skalierbares Motiv -Entdeckungsalgorithmus basierend auf Meme | 4–10x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 3.0.12 |
Seqnfind | Ein GPU -beschleunigter Sequenzanalyse -Toolset | Referenzversammlung, Blast, Smith -Waterman, Hmm, De -novo -Versammlung | 400x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar |
Ugen | OpenSource Smith -Waterman für SSE/CUDA, Suffix Array -Basis -Wiederholungsfinder und Dotplot | Schnelle kurze Leseausrichtung | 6–8x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 1.11 |
Witelm | Passt zahlreiche lineare Modelle zu einem festen Design und einer festen Reaktion | Parallele lineare Regression auf mehreren ähnlich geformten Modellen | 150x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 0.1-1 |
Molekulare Dynamik
Anwendung | Beschreibung | Unterstützte Funktionen | Erwartete Beschleunigung † | GPU ‡ | Multi-GPU-Unterstützung | Release -Status |
---|---|---|---|---|---|---|
Abalone | Modelle Molekulare Dynamik von Biopolymeren für Simulationen von Proteinen, DNA und Liganden | Explizit und implizites Lösungsmittel, Hybrid Monte Carlo | 4–120x | T 2075, 2090, K10, K20, K20X | Nur single | Jetzt verfügbar, Version 1.8.88 |
Acemd | GPU -Simulation von molekularen Mechanik -Kraftfeldern, implizit und explizit Lösungsmittel | Geschrieben für die Verwendung bei GPUs | Nur 160 NS/Day GPU -Version | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar |
BERNSTEIN | Programme zur Simulation der molekularen Dynamik auf Biomolekül | PMEMD: Explizites und implizites Lösungsmittel | 89.44 ns/Tag Jac nve | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 12 + Bugfix9 |
DL-Poly | Simulieren Sie Makromoleküle, Polymere, ionische Systeme usw. auf einem verteilten Speicher parallelen Computer | Zwei-Körper-Kräfte, Link-Zell-Paare, Ewald Spme-Streitkräfte, Shake VV | 4x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, nur Version 4.0 Quelle |
Charm | MD -Paket zur Simulation der molekularen Dynamik auf Biomolekül. | Implizit (5x), explizit (2x) Lösungsmittel über OpenMM | TBD | T 2075, 2090, K10, K20, K20X | Ja | In der Entwicklung Q4/12 |
Gromacs | Simulieren biochemische Moleküle mit komplexen Bindungswechselwirkungen | Implizit (5x), explizit (2x) Lösungsmittel | 165 ns/Tag DHFR | T 2075, 2090, K10, K20, K20X | Nur single | Jetzt verfügbar, Version 4.6 in Q4/12 |
Hoomd-blau | Partikeldynamikpaket geschriebene Gründe für GPUs | Geschrieben für GPUs | 2x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar |
Lammps | Klassischer Molekulardynamikpaket | Lennard-Jones, Morse, Buckingham, Charmm, tabellarisch, Kurs Grain SDK, Anisotropic Gay-Bern, Requaled, "Hybrid" -Kombinationen | 3–18x | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar |
Namd | Entwickelt für die Hochleistungssimulation großer molekularer Systeme | 100 m Atom fähig | 6.44 NS/Tage STMV 585x 2050s | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 2.9 |
Openmm | Bibliothek und Anwendung für molekulare Dynamik für HPC mit GPUs | Implizite und explizite Lösungsmittel, benutzerdefinierte Kräfte | Implizit: 127–213 ns/Tag; Explizit: 18–55 ns/Tag DHFR | T 2075, 2090, K10, K20, K20X | Ja | Jetzt verfügbar, Version 4.1.1 |
† Die erwarteten Beschleunigungen sind stark von der Systemkonfiguration abhängig. GPU-Leistung im Vergleich zu Multi-Core x86 CPU -Sockel. GPU -Leistungsverträglichkeit bei GPU unterstützten Funktionen und kann ein sein Kernel zum Kernel -Leistungsvergleich. Einzelheiten zur verwendeten Konfiguration finden Sie die Anwendungswebsite. Beschleunigungen gemäß NVIDIA-Inhouse-Tests oder Dokumentation von ISV.
‡ q =Quadro GPU, T =Tesla GPU. Nvidia empfahl GPUs für diese Anwendung. Wenden Sie sich an Developer oder ISV, um Zertifizierungsinformationen zu erhalten.
Siehe auch
- Fastra II
- Physik -Engine
- In der Nähe von Metall
- Audio -Verarbeitungseinheit
- Larrabee (Mikroarchitektur)
- KI -Beschleuniger
- Deep -Lernprozessor (DLP)
Verweise
- ^ Fung et al., "Mediated Reality unter Verwendung von Computergrafikhardware für Computer Vision" Archiviert 2. April 2012 bei der Wayback -Maschine, Proceedings of the International Symposium on Wearable Computing 2002 (ISWC2002), Seattle, Washington, USA, 7. -10. Oktober 2002, S. 83–89.
- ^ Eine auf dem Eyetap Video basierende featureless projektive Bewegungsschätzung, unterstützt durch gyroskopische Verfolgung für tragbarer Computer Mediated Reality, ACM Persönliches und allgegenwärtiges Computing, veröffentlicht von Springer Verlag, Vol.7, ISS. 3, 2003.
- ^ "Computer Vision Signalverarbeitung für Grafikverarbeitungseinheiten", Proceedings der IEEE International Conference über Akustik, Sprache und Signalverarbeitung (ICASSP 2004) Archiviert 19. August 2011 bei der Wayback -Maschine: Montreal, Quebec, Kanada, 17. bis 21. Mai 2004, S. V-93-V-96
- ^ Chitty, D. M. (2007, Juli). Ein Daten parallel zur genetischen Programmierung mit programmierbarer Grafikhardware zur genetischen Programmierung Archiviert 8. August 2017 bei der Wayback -Maschine. In Proceedings der 9. Jahreskonferenz über genetische und evolutionäre Berechnung (S. 1566-1573). ACM.
- ^ "Verwenden mehrerer Grafikkarten als allgemeiner Zweck paralleler Computer: Anwendungen für Computer Vision", Proceedings der 17. Internationalen Konferenz zur Mustererkennung (ICPR2004) Archiviert 18. Juli 2011 bei der Wayback -Maschine, Cambridge, Großbritannien, 23. -26. August 2004, Band 1, Seiten 805–808.
- ^ Hull, Gerald (Dezember 1987). "LEBEN". Erstaunliches Computer. 2 (12): 81–84.
- ^ Krüger, Jens; Westermann, Rüdiiger (Juli 2003). "Lineare Algebra -Operatoren für die GPU -Implementierung numerischer Algorithmen". ACM -Transaktionen auf Grafiken. 22 (3): 908–916. doi:10.1145/882262.882363. ISSN 0730-0301.
- ^ Bolz, Jeff; Bauer, Ian; Grinspun, Eitan; Schröder, Peter (Juli 2003). "Spärliche Matrixlöser auf der GPU: Konjugatgradienten und Multigrid". ACM -Transaktionen auf Grafiken. 22 (3): 917–924. doi:10.1145/882262.882364. ISSN 0730-0301.
- ^ Tarditi, David; Puri, Sidd; Oglesby, Jose (2006). "Accelerator: Verwenden Sie Daten parallelistisch zur Programmierung von GPUs für allgemeine Verwendungszwecke" (PDF). ACM Sigarch Computer Architecture News. 34 (5). doi:10.1145/1168919.1168898.
- ^ Che, Shuai; Boyer, Michael; Meng, Jiayuan; Tarjan, D.; Sheaffer, Jeremy W.; Skadron, Kevin (2008). "Eine Leistungsstudie von allgemeinen Anwendungen auf Grafikprozessoren mit CUDA". J. Parallel und verteiltes Computing. 68 (10): 1370–1380. Citeseerx 10.1.1.143.4849. doi:10.1016/j.jpdc.2008.05.014.
- ^ a b Du, peng; Weber, Rick; Luszczek, Piotr; Tomov, Stanimire; Peterson, Gregory; Dongarra, Jack (2012). "Von CUDA bis OpenCL: Auf dem Weg zu einer leistungsfähigen Lösung für die Multi-Plattform-GPU-Programmierung". Parallele Computing. 38 (8): 391–407. Citeseerx 10.1.1.193.7712. doi:10.1016/j.parco.2011.10.002.
- ^ "OpenCL gewinnt auf Cuda gemahlen". 28. Februar 2012. Archiviert Aus dem Original am 23. April 2012. Abgerufen 10. April 2012. "Als die beiden großen Programmierrahmen für GPU -Computing haben OpenCL und CUDA in den letzten Jahren in der Entwicklergemeinschaft um Mindshare konkurriert."
- ^ "Xcelerit SDK". Xceleritsdk. 26. Oktober 2015. Archiviert Aus dem Original am 8. März 2018.
- ^ "Startseite". Xcelerit. Archiviert Aus dem Original am 8. März 2018.
- ^ James Pilg, Steve Mann, Chris Aimone ","OpenVidia: Parallele GPU -Computer Vision", Proceedings of the ACM Multimedia 2005, Singapur, 6. bis 11. November 2005, Seiten 849–852
- ^ "Hybridizer". Hybridisator. Archiviert Aus dem Original am 17. Oktober 2017.
- ^ "Startseite". Altimesh. Archiviert Aus dem Original am 17. Oktober 2017.
- ^ "Hybridizer Generika und Vererbung". 27. Juli 2017. Archiviert Aus dem Original am 17. Oktober 2017.
- ^ "Debugging und Profiling mit Hybridizer". 5. Juni 2017. Archiviert Aus dem Original am 17. Oktober 2017.
- ^ "Einführung". Alea GPU. Archiviert Aus dem Original am 25. Dezember 2016. Abgerufen 15. Dezember 2016.
- ^ "Startseite". Quant Alea. Archiviert Aus dem Original am 12. Dezember 2016. Abgerufen 15. Dezember 2016.
- ^ "Verwenden Sie F# für die GPU -Programmierung". F# Software Foundation. Archiviert von das Original am 18. Dezember 2016. Abgerufen 15. Dezember 2016.
- ^ "Alea GPU Funktionen". Quant Alea. Archiviert Aus dem Original am 21. Dezember 2016. Abgerufen 15. Dezember 2016.
- ^ "MATLAB fügt GPGPU -Unterstützung hinzu". 20. September 2010. archiviert von das Original am 27. September 2010.
- ^ a b Joselli, Mark, et al. "Eine neue Physik-Engine mit automatischer Prozessverteilung zwischen CPU-GPU[Dead Link]. "Proceedings of the 2008 ACM Siggraph Symposium über Videospiele.
- ^ "Android 4.2 APIs - Android -Entwickler". Entwickler.android.com. Archiviert Aus dem Original am 26. August 2013.
- ^ Zuordnen von Rechenkonzepten zu GPUs: Mark Harris. Zuordnen von Rechenkonzepten zu GPUs. In ACM Siggraph 2005 Kurse (Los Angeles, Kalifornien, 31. Juli - 4. August 2005). J. Fujii, hrsg. Siggraph '05. ACM Press, New York, NY, 50.
- ^ Doppelte Präzision für GPUs (Proceedings of ASIM 2005) Archiviert 21. August 2014 bei der Wayback -Maschine: Dominik Goddeke, Robert Strzodka und Stefan Turek. Beschleunigung der Doppelpräzisionssimulationen (FEM -Simulationen) mit (GPUs). Proceedings of ASIM 2005 - 18. Symposium für Simulationstechnik, 2005.
- ^ "Nvidia-Kepler-GK110-Architektur-Whitepaper" (PDF). Archiviert (PDF) Aus dem Original am 21. Februar 2015.
- ^ "Innerhalb Pascal: Nvidia's neueste Computerplattform Archiviert 7. Mai 2017 bei der Wayback -Maschine"
- ^ "Inside Volta: Die weltweit fortschrittlichste GPU des Rechenzentrums Archiviert 1. Januar 2020 bei der Wayback -Maschine"
- ^ "https://www.tomshardware.com/reviews/geforce-radeon-bower,2122.html Wie viel Strom braucht Ihre Grafikkarte? "
- ^ "https://images.nvidia.com/content/tesla/pdf/nvidia-tesla-p100-pcie-datasheet.pdf Nvidia Tesla P100 GPU -Beschleuniger Archiviert 24. Juli 2018 bei der Wayback -Maschine"
- ^ a b "D. Göddeke, 2010. Schnelle und genaue Finite-Element-Multigrid-Solver für PDE-Simulationen auf GPU-Clustern. Ph.D. Dissertation, Technische Universität Dortmund". Archiviert Aus dem Original am 16. Dezember 2014.
- ^ Asanovic, K.; Bodik, R.; Demmel, J.; Keaveny, T.; Keutzer, K.; Kubiatowicz, J.; Morgan, N.; Patterson, D.; Sen, K.; Wawrzynek, J.; Wessel, D.; Yelick, K. (2009). "Ein Blick auf die parallele Computerlandschaft". Kommunieren. ACM. 52 (10): 56–67. doi:10.1145/1562764.1562783.
- ^ "GPU-Edelsteine-Kapitel 34, GPU Flow-Control Idiome".
- ^ Zukünftige Chips. "Tutorial zum Entfernen von Zweigen", 2011
- ^ GPGPU -Umfragepapier Archiviert 4. Januar 2007 bei der Wayback -Maschine: John D. Owens, David Luebke, Naga Govindaraju, Mark Harris, Jens Krüger, Aaron E. Lefohn und Tim Purcell. "Eine Umfrage zur allgemeinen Berechnung der Grafikhardware". Computergrafikforum, Band 26, Nummer 1, 2007, S. 80–113.
- ^ "S. Sengupta, M. Harris, Y. Zhang, J. D. Owens, 2007. Scan -Primitive für GPU Computing. In T. Aila und M. Segal (Hrsg.): Graphics Hardware (2007)". Archiviert von das Original am 5. Juni 2015. Abgerufen 16. Dezember 2014.
- ^ Blelloch, G. E. (1989). "Scans als primitive parallele Operationen" (PDF). IEEE -Transaktionen auf Computern. 38 (11): 1526–1538. doi:10.1109/12.42122. Archiviert von das Original (PDF) am 23. September 2015. Abgerufen 16. Dezember 2014.
- ^ "M. Harris, S. Sengupta, J. D. Owens. Parallele Präfix -Summe (Scan) mit Cuda. In Nvidia: GPU -Edelsteine 3, Kapitel 39".[Permanent Dead Link]
- ^ Merrill, Duane. Algorithmus-Design zu Allokation orientiert. Ph.D. Dissertation, Abteilung für Informatik, Universität von Virginia. Dezember 2011.
- ^ Sean Baxter. Moderne GPU Archiviert 7. Oktober 2016 bei der Wayback -Maschine, 2013.
- ^ Leung, Alan, Ondřej Lhoták und Ghulam Lashari. "Automatische Parallelisierung für Grafikverarbeitungseinheiten.
- ^ Henriksen, Troels, Martin Elsman und Cosmin E. Oancea. "Größenschneide: Ein hybrider Ansatz zur Größe Inferenz in Futhark. "Proceedings des 3. ACM-Sigplan-Workshops zum funktionellen Hochleistungs-Computing. ACM, 2014.
- ^ Baskaran, Muthu Manikandan et al. "Ein Compiler -Framework für die Optimierung von Affine -Schleifennestern für GPGPUs.
- ^ "K. Crane, I. Lamas, S. Tariq, 2008. Echtzeitsimulation und Rendering von 3D-Flüssigkeiten. In Nvidia: GPU-Edelsteine 3, Kapitel 30".[Permanent Dead Link]
- ^ "M. Harris, 2004. Simulation der schnellen Flüssigkeitsdynamik zur GPU. In Nvidia: GPU -Edelsteine, Kapitel 38". Archiviert Aus dem Original am 7. Oktober 2017.
- ^ Block, Benjamin, Peter Virnau und Tobias preis. "Multi-GPU-beschleunigte Multi-Spin-Monte-Carlo-Simulationen des 2D-Ising-Modells. "Computer Physics Communications 181.9 (2010): 1549-1556.
- ^ Sonne, Shanhui, Christian Bauer und Reinhard -Beichel. "Automatisierte 3-D-Segmentierung von Lungen mit Lungenkrebs in CT-Daten unter Verwendung eines neuen robusten aktiven Formmodellansatzes. "IEEE-Transaktionen zur medizinischen Bildgebung 31.2 (2011): 449-460.
- ^ Jimenez, Edward S. und Laurel J. Orr. "Überdenken der Vereinigung der Computertomographie -Rekonstruktion und des GPGPU -Computers. "Durchdringende Strahlungssysteme und Anwendungen XIV. Vol. 8854. Internationale Gesellschaft für Optik und Photonik, 2013.
- ^ Sørensen, Thomas Sangild, et al. "Beschleunigung der nicht ersettierten Fast Fourier -Transformation auf der Hardware für Warengrafiken. "IEEE-Transaktionen zur medizinischen Bildgebung 27.4 (2008): 538-547.
- ^ Schnell k-Nearste Nachbarsuche mit GPU. In Proceedings of the CVPR Workshop über Computer Vision zu GPU, Anchorage, Alaska, USA, Juni 2008. V. Garcia und E. Debreuve und M. Barlaud.
- ^ M. Cococcioni, R. Grasso, M. Rixen, Schnellprototyping von Hochleistungsfuzzy -Computing -Anwendungen unter Verwendung von GPU -Programmierung auf hoher Ebene für die Unterstützung des maritimen Operationen, in Proceedings of the 2011 IEEE Symposium on Computational Intelligence for Security and Defense Applications (CISDA), Paris, 11. -15. April 2011
- ^ Whalen, Sean. "Audio und die Grafikverarbeitungseinheit. "Autorenbericht, University of California Davis 47 (2005): 51.
- ^ Wilson, Ron (3. September 2009). "DSP bringt Ihnen einen hochauflösenden Mond Walk". Edn. Archiviert von das Original am 22. Januar 2013. Abgerufen 3. September 2009.
Berichten zufolge verwendet Lowry Nvidia Tesla GPUs (Grafikverarbeitungseinheiten), die in der CUDA des Unternehmens (Compute Unified Device Architecture) programmiert sind, um die Algorithmen zu implementieren. Nvidia behauptet, dass die GPUs ungefähr zwei Größenordnungen schneller sind als die CPU -Berechnungen, was die Verarbeitungszeit auf weniger als eine Minute pro Rahmen verkürzt.
- ^ ALERSTAM, E.; Svensson, T.; Andersson-Engels, S. (2008). "Parallele Computing mit Grafikverarbeitungseinheiten für die Hochgeschwindigkeits -Monte -Carlo -Simulation der Photonenmigration" (PDF). Journal of Biomedical Optics. 13 (6): 060504. Bibcode:2008JBO .... 13F0504A. doi:10.1117/1.3041496. PMID 19123645. Archiviert (PDF) Aus dem Original am 9. August 2011.
- ^ a b c Hasan, Khondker S.; Chatterjee, Amlan; Radhakrishnan, Sridhar; Antonio, John K. (2014). "Leistungsvorhersagemodell und Analyse für rechenintensive Aufgaben bei GPUs" (PDF). Advanced Information Systems Engineering (PDF). Vorlesungsnotizen in Informatik. Vol. 7908. S. 612–617. doi:10.1007/978-3-662-44917-2_65. ISBN 978-3-642-38708-1.
- ^ "Computerphysik mit GPUs: Lund Observatory". www.astro.lu.se. Archiviert Aus dem Original am 12. Juli 2010.
- ^ 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.
- ^ Olejnik, M; Steuwer, M; Gorlatch, s; Heider, D (15. November 2014). "GCUP: Rapid GPU-basierte HIV-1-Co-Rezeptor-Verwendungsprädiktion für die Sequenzierung der nächsten Generation". Bioinformatik. 30 (22): 3272–3. doi:10.1093/bioinformatics/btu535. PMID 25123901.
- ^ Wang, Guohui et al. "Beschleunigung von Computer Vision-Algorithmen mithilfe von OpenCL-Framework in der Mobile GPU-A-Fallstudie. "2013 IEEE International Conference über Akustik-, Sprach- und Signalverarbeitung. IEEE, 2013.
- ^ GPU Computing in oder Archiviert 13. Januar 2015 bei der Wayback -Maschine Vincent Boyer, Didier El Baz. "Jüngste Fortschritte zum GPU -Computing in der Operationsforschung". Parallel und verteiltes Verarbeitungssymposium Workshops & PhD Forum (IPDPSW), 2013 IEEE 27. International, auf Seiten: 1778–1787
- ^ Bukata, Libor; Sucha, Premysl; Hanzalek, Zdenek (2014). "Lösen des Problems zur Ressourcenbeschränkungsprojektplanung mithilfe der parallelen Tabu -Suche nach der CUDA -Plattform". Journal of Parallel und Distributed Computing. 77: 58–68. Arxiv:1711.04556. doi:10.1016/j.jpdc.2014.11.005. S2CID 206391585.
- ^ Bätelt, Zdeněk; Dvořák, Jan; Šůcha, přemysl; Hanzálek, Zdeněk (2016). "Ein neuartiger Ansatz für die Rerosterierung von Krankenschwestern auf der Grundlage eines parallelen Algorithmus". Europäisches Journal of Operational Research. 251 (2): 624–639. doi:10.1016/j.ejor.2015.11.022.
- ^ CTU-iig Archiviert 9. Januar 2016 bei der Wayback -Maschine Tschechische technische Universität in Prag, Industrial Informatics Group (2015).
- ^ NRRPGPU Archiviert 9. Januar 2016 bei der Wayback -Maschine Tschechische technische Universität in Prag, Industrial Informatics Group (2015).
- ^ Naju Mancheril. "GPU-basierte Sortierung in PostgreSQL" (PDF). School of Information - Carnegie Mellon University. Archiviert (PDF) Aus dem Original am 2. August 2011.
- ^ Manavski, Svetlin A. "CUDA -kompatible GPU als effizientes Hardware -Beschleuniger für die AES -Kryptographie. "2007 IEEE International Conference über Signalverarbeitung und Kommunikation. IEEE, 2007.
- ^ Harrison, Owen; Waldron, John (2007). "Implementierung und Analyse von AES -Verschlüsselung zu Rohstoffgrafikverarbeitungseinheiten". Kryptografische Hardware und eingebettete Systeme - Ches 2007. Vorlesungsnotizen in Informatik. Vol. 4727. p. 209. Citeseerx 10.1.1.149.7643. doi:10.1007/978-3-540-74735-2_15. ISBN 978-3-540-74734-5.
- ^ AES und Operationsmodi auf SM4.0 -konform GPUs. Archiviert 21. August 2010 bei der Wayback -Maschine Owen Harrison, John Waldron, Praktische symmetrische Schlüsselkryptographie über moderne Grafikhardware. In Proceedings of Uenix Security 2008.
- ^ Harrison, Owen; Waldron, John (2009). "Effiziente Beschleunigung der asymmetrischen Kryptographie auf Grafikhardware". Fortschritte in der Kryptologie - AfricaCrypt 2009. Vorlesungsnotizen in Informatik. Vol. 5580. p. 350. Citeseerx 10.1.1.155.5448. doi:10.1007/978-3-642-02384-2_22. ISBN 978-3-642-02383-5.
- ^ "Teraflop -Probleme: Die Leistung von Grafikverarbeitungseinheiten kann das weltweite Kennwortsicherheitssystem bedrohen". Georgia Tech Research Institute. Archiviert von das Original Am 30. Dezember 2010. Abgerufen 7. November 2010.
- ^ "Möchten Sie Hacker abhalten? Machen Sie Ihr Passwort länger". NBC News. 19. August 2010. Abgerufen 7. November 2010.
- ^ Lerner, Larry (9. April 2009). "Standpunkt: Mass GPUs, nicht CPUs für EDA -Simulationen". EE mal. Abgerufen 3. Mai 2009.
- ^ "W2500 ADS Transient Falthyte GT".
Beschleunigte Signalintegritätsimulationen zu Workstations mit NVIDIA-Rechenintegritätsarchitektur (CUDA) -basierte Grafikverarbeitungseinheiten (GPU)
- ^ Schwerkraft: ein massiv paralleler Antivirenmotor Archiviert 27. Juli 2010 bei der Wayback -Maschine. Giorgos Vasiliadis und Sotiris ioannidis, Schwerkraft: ein massiv paralleler Antivirenmotor. In Proceedings of Raid 2010.
- ^ "Kaspersky Lab nutzt Nvidia Technologies, um den Schutz zu verbessern". Kaspersky Lab. 14. Dezember 2009. Archiviert Aus dem Original am 19. Juni 2010.
Während der internen Tests zeigte der Tesla S1070 im Vergleich zum beliebten Intel Core 2-Duo-Zentralprozessor mit einer Taktgeschwindigkeit von 2,6 GHz eine 360-fache Erhöhung der Geschwindigkeit des Ähnlichkeitsdefinierungsalgorithmus.
- ^ GNORT: Hochleistungsnetzwerk -Intrusion -Erkennung unter Verwendung von Grafikprozessoren Archiviert 9. April 2011 bei der Wayback -Maschine. Giorgos Vasiliadis et al., GNORT: Hochleistungsnetzwerk -Intrusion -Erkennung unter Verwendung von Grafikprozessoren. In Proceedings of Raid 2008.
- ^ Regelmäßiger Ausdrucksanpassung auf Grafikhardware für die Intrusionserkennung Archiviert 27. Juli 2010 bei der Wayback -Maschine. Giorgos Vasiliadis et al., Regelmäßige Expression, die auf Grafikhardware für die Intrusion -Erkennung übereinstimmt. In Proceedings of Raid 2009.
- ^ "Archivierte Kopie" (PDF). Archiviert (PDF) Aus dem Original am 25. März 2013. Abgerufen 12. September 2013.
{{}}
: CS1 Wartung: Archiviertes Kopie als Titel (Link) - ^ Langdon, William B.; Lam, Brian Yee Hong; Petke, Justyna; Harman, Mark (2015). "Verbesserung der CUDA -DNA -Analyse -Software mit genetischer Programmierung". Proceedings of the 2015 über genetische und evolutionäre Berechnungskonferenz - GECCO '15. S. 1063–1070. doi:10.1145/2739480.2754652. ISBN 9781450334723. S2CID 8992769.