GPU Coder

 

GPU Coder

Generierung von CUDA-Code für NVIDIA-Grafikkarten

Jetzt beginnen:

Generierung von schnellem, flexiblem CUDA-Code

Generierung von optimiertem CUDA-Code. Lizenzgebührenfreie Bereitstellung von Code.

Lizenzgebührenfreie Bereitstellung von Algorithmen

Kompilieren Sie Ihren generierten Code und führen Sie ihn auf gängigen NVIDIA-GPUs aus – von Desktopsystemen über Rechenzentren bis hin zu Embedded Hardware. Der generierte Code ist lizenzgebührenfrei – stellen Sie ihn in kommerziellen Anwendungen Ihren Kunden kostenlos zur Verfügung.

Generierung von Code mit der GPU Coder-App.

Galerie erkunden (2 Bilder)

Codegenerierung für unterstützte Toolboxen und Funktionen

GPU Coder generiert Code aus einer großen Auswahl von MATLAB-Sprachfunktionen, die von Entwicklungsingenieuren zum Entwurf von Algorithmen als Komponenten größerer Systeme verwendet werden. Dies umfasst mehr als 390 Operatoren und Funktionen aus MATLAB und zugehörigen Toolboxen.

MATLAB-Sprach- und Toolbox-Unterstützung für die Codegenerierung.

MATLAB-Sprach- und Toolbox-Unterstützung für die Codegenerierung.

Einbinden von Legacy-Code

Mithilfe von Optionen zur Integration von vorhandenem Code können Sie bewährten oder stark optimierten CUDA-Code zum Testen in Ihre MATLAB-Algorithmen integrieren und denselben CUDA-Code anschliessend aus dem neu generierten Code heraus aufrufen.

Einbinden von vorhandenem CUDA-Code in neu erzeugten Code.

Einbinden von vorhandenem CUDA-Code in neu erzeugten Code.

CUDA-Codegenerierung aus Simulink-Modellen

Erstellen Sie Modelle in Simulink und erzeugen Sie optimierten CUDA-Code.

Ausführung von Simulationen und Generierung von optimiertem Code für NVIDIA GPUs

Bei Verwendung mit Simulink Coder beschleunigt GPU Coder berechnungsintensive Teile von MATLAB-Funktionsblöcken in Ihren Simulink-Modellen auf NVIDIA-GPUs. Aus dem Simulink-Modell lässt sich optimierter CUDA-Code generieren und in Ihrer Zielanwendung für den NVIDIA-Grafikprozessor bereitstellen.

Simulink-Modell einer in einer GPU ausgeführten Sobel-Kantenerkennung.

Simulink-Modell einer in einer GPU ausgeführten Sobel-Kantenerkennung.

Bereitstellung von End-to-End-Algorithmen für Deep Learning

Verwenden verschiedenster trainierter Deep Learning-Netze (einschließlich ResNet-50, SegNet und LSTM) aus der Deep Learning Toolbox in Ihrem Simulink-Modell und Bereitstellen in NVIDIA-GPUs. Code für die Vor- und Nachverarbeitung kann zusammen mit den trainierten Netzen erzeugt werden, um vollständige Algorithmen zu erhalten.

Signalprotokollierung, Parameterjustierung und numerische Verifizierung des Code-Verhaltens

Zusammen mit dem Simulink Coder kann der GPU Coder in Echtzeit mit Simulationen im externem Modus Signale protokollieren und Parameter justieren. Ausführen von SIL- und PIL-Tests (Software-in-the-Loop bzw. Processor-in-the-Loop) mit Embedded Coder und GPU Coder, zur numerischen Bestätigung, dass der generierte Code das Simulationsverhalten erfüllt.

CUDA-Codegenerierung aus Deep-Learning-Netzen

Bereitstellung trainierter Deep Learning-Netze mit der Deep Learning Toolbox.

Bereitstellung von End-to-End-Algorithmen für Deep Learning

Bereitstellung verschiedenster trainierter Deep Learning-Netze (einschließlich ResNet-50, SegNet und LSTM) aus der Deep Learning Toolbox in NVIDIA-GPUs. Verwenden vordefinierter Deep Learning-Schichten oder Festlegen eigener Schichten für Ihre spezifische Anwendung. Code für die Vor- und Nachverarbeitung kann zusammen mit den trainierten Netzen erzeugt werden, um vollständige Algorithmen zu erhalten.

Generierung von optimiertem Code für Inferenz

Verglichen mit anderen Deep Learning-Lösungen erzeugt GPU Coder Code mit kleinerem Speicherbedarf, da nur der für die Inferenz mit Ihrem konkreten Algorithmus benötigte Code generiert wird. Der generierte Code ruft optimierte Bibliotheken wie TensorRT und cuDNN auf.

Einzelbild-Inferenz mit VGG-16 in einer Titan V-GPU mittels cuDNN.

Einzelbild-Inferenz mit VGG-16 in einer Titan V-GPU mittels cuDNN.

Zusätzliche Optimierung mit TensorRT

Generieren von Code zur Integration mit NVIDIA TensorRT, einer hochleistungsfähigen Optimierungs- und Laufzeitumgebung für Deep Learning-Inferenz. Wenn Sie dabei INT8- oder FP16-Datentypen nutzen, erzielen Sie zusätzliche Leistungssteigerungen gegenüber dem standardmäßigen FP32-Datenyp.

Höhere Ausführungsgeschwindigkeit mit TensorRT und INT8-Datentypen.

Höhere Ausführungsgeschwindigkeit mit TensorRT und INT8-Datentypen.

Optimierung von generiertem Code

GPU Coder optimiert automatisch den generierten Code. Verwenden Sie Entwicklungsvorlagen zur weiteren Leistungssteigerung.

Minimierung der Datenübertragung zwischen CPU und GPU und Optimierung des Speicherbedarfs

GPU Coder analysiert, identifiziert und partitioniert automatisch Segmente des MATLAB-Codes, um ihn entweder in der CPU oder der GPU auszuführen. Dadurch verringert sich auch die Menge an Datenkopien zwischen CPU und GPU. Verwenden Sie Profiling-Tools, um andere potenzielle Engpässe zu ermitteln.

Profilberichte zur Ermittlung möglicher Engpässe.

Profilberichte zur Ermittlung möglicher Engpässe.

Aufruf optimierter Bibliotheken

Mit GPU Coder generierter Code ruft optimierte NVIDIA CUDA-Bibliotheken wie TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS und Thrust auf. Aus MATLAB Toolbox-Funktionen generierter Code wird nach Möglichkeit immer auf optimierte Bibliotheken abgebildet.

Generierter Code, der Funktionen in der optimierten CUDA-Bibliothek cuFFT aufruft.

Generierter Code, der Funktionen in der optimierten CUDA-Bibliothek cuFFT aufruft.

Verwendung von Entwicklungsvorlagen zur weiteren Beschleunigung

Entwicklungsvorlagen wie Stencil-Verarbeitung greifen auf gemeinsamen Speicher zu, um Bandbreite zu sparen. Sie werden automatisch bei Verwendung bestimmter Funktionen wie Faltung angewandt. Mit bestimmten Paradigmen lassen sie sich auch manuell aufrufen.

Die Entwicklungsvorlage für Stencil-Verarbeitung.

Die Entwicklungsvorlage für Stencil-Verarbeitung.

Erstellen von Prototypen auf Hardware

Mithilfe automatischer Konvertierung Ihres Algorithmus in CUDA-Code gelingt Ihnen die umgehende Hardware- Implementierung.

Prototyping auf den NVIDIA Jetson- und DRIVE-Plattformen

Automatisieren Sie die Kreuzkompilierung und Bereitstellung von generiertem Code auf NVIDIA Jetson- und DRIVE-Plattformen mit dem GPU Coder Support Package für NVIDIA-GPUs.

Prototypenerstellung auf der NVIDIA Jetson-Plattform.

Prototypenerstellung auf der NVIDIA Jetson-Plattform.

Zugriff auf Peripheriegeräte und Sensoren über MATLAB und generierten Code

Fernkommunikation mit dem NVIDIA-Zielsystem von MATLAB, um Daten von Webcams und anderen unterstützten Peripheriegeräten zur ersten Prototypenentwicklung abzurufen. Stellen Sie Ihren Algorithmus in Kombination mit Peripherieschnittstellen-Code auf einem Board zur eigenständigen Ausführung bereit.

Zugriff auf Peripheriegeräte und Sensoren über MATLAB und generierten Code.

Zugriff auf Peripheriegeräte und Sensoren über MATLAB und generierten Code.

Übergang vom Prototyp zur Produktion

Verwenden Sie GPU Coder mit Embedded Coder, um Ihren MATLAB-Code interaktiv und parallel mit generiertem CUDA-Code zu verfolgen. Überprüfen Sie das numerische Verhalten des generierten Codes bei der Ausführung auf Hardware durch SIL- (Software-in-the-Loop) und PIL-Tests (Processor-in-the-Loop).

Interaktiver Rückverfolgbarkeitsbericht mithilfe von GPU Coder mit Embedded Coder.

Interaktiver Rückverfolgbarkeitsbericht mithilfe von GPU Coder mit Embedded Coder.

Beschleunigen von Algorithmen

Erzeugen Sie CUDA-Code und kompilieren Sie ihn für die Nutzung in MATLAB und Simulink.

Beschleunigung von Algorithmen mit GPUs in MATLAB

Rufen Sie generierten CUDA-Code als MEX-Funktion aus Ihrem MATLAB-Code heraus auf, um die Ausführung zu beschleunigen. Die Laufzeitvorteile variieren dabei jedoch je nach Art Ihres MATLAB-Codes. Mittels Profiling von generierten MEX-Funktionen können Sie Engpässe identifizieren und gezielt optimieren.

Beschleunigung von Simulink-Simulationen mittels NVIDIA-GPUs

Bei Verwendung mit Simulink Coder beschleunigt GPU Coder berechnungsintensive Teile von MATLAB Function-Blöcken in Ihren Simulink-Modellen auf NVIDIA-GPUs.