GPU Coder

Erzeugung von CUDA-Code für NVIDIA-GPUs

GPU Coder™ erzeugt aus MATLAB®-Code optimierten CUDA®-Code für Deep Learning, Embedded Vision und autonome Systeme. Der generierte Code ruft optimierte CUDA-Bibliotheken von NVIDIA auf, darunter cuDNN, cuSolver und cuBLAS. Er lässt sich in Form von Quellcode und statischen oder dynamischen Bibliotheken in Ihr Projekt einbinden und kann zur Prototypenentwicklung auf GPUs wie NVIDIA Tesla® und NVIDIA Tegra® genutzt werden. Sie können den generierten CUDA-Code in MATLAB verwenden, um berechnungsintensive Anteile Ihres MATLAB-Codes zu beschleunigen. Mit GPU Coder lässt sich außerdem vorhandener CUDA-Code in Ihre MATLAB-Algorithmen und in den neu generierten Code integrieren.

Bei Verwendung von GPU Coder mit Embedded Coder® kann das numerische Verhalten des generierten Codes durch SIL-Tests (Software-in-the-Loop) geprüft werden.

Jetzt Loslegen:

Schneller, flexibler CUDA-Code

Erzeugen Sie optimierten CUDA-Code. Stellen Sie Code lizenzgebührenfrei bereit.

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 lizenzfrei und kann in kommerziellen Anwendungen für Sie kostenlos an Ihre Kunden weitergegeben werden.

Galerie erkunden (2 Bilder)

Anwenderberichte zu GPU Coder

Erfahren Sie, wie Ingenieure und Wissenschaftler in einer Vielzahl von Branchen GPU Coder zur Generierung von CUDA-Code für ihre Anwendungen nutzen.

Airbus entwickelt einen Prototypen für die automatische Fehlererkennung auf NVIDIA Jetson TX2

Codegenerierung für unterstützte Toolboxen und Funktionen

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

Unterstützung der MATLAB-Sprache und -Toolboxen 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 dann auch aus dem neu generierten Code heraus aufrufen.

Einbinden von vorhandenem CUDA-Code in neu erzeugten Code.

Generate CUDA Code from Simulink Models

Create models in Simulink and generate optimized CUDA code.

Run Simulations and Generate Optimized Code for NVIDIA GPUs

When used with Simulink Coder™, GPU Coder accelerates compute-intensive portions of MATLAB Function blocks in your Simulink models on NVIDIA GPUs. You can then generate optimized CUDA code from the Simulink model and deploy it to your NVIDIA GPU target.

Simulink model of a Sobel edge detector running on a GPU.

Deploy End-to-End Deep Learning Algorithms

Use a variety of trained deep learning networks (including ResNet-50, SegNet, and LSTM) from Deep Learning Toolbox™ in your Simulink model and deploy to NVIDIA GPUs. Generate code for preprocessing and postprocessing along with your trained deep learning networks to deploy complete algorithms.

Using ResNet-50 to classify an input image in Simulink.

Log Signals, Tune Parameters, and Numerically Verify Code Behavior

When used with Simulink Coder, GPU Coder enables you to log signals and tune parameters in real time using external mode simulations. Use Embedded Coder with GPU Coder to run software-in-the-loop and processor-in-the-loop tests that numerically verify the generated code matches the behavior of the simulation.

Use External Mode to log signals and tune parameters in Simulink.

CUDA-Codegenerierung aus Deep Learning-Netzwerken

Stellen Sie trainierte Deep Learning-Netzwerke mit der Deep Learning Toolbox bereit.

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

Mit der Deep Learning Toolbox™ können Sie eine Vielzahl an trainierten Deep Learning-Netzwerke wie ResNet-50 und SegNet für NVIDIA-GPUs bereitstellen. Code für die Vor- und Nachverarbeitung kann dabei zusammen mit den trainierten Netzen erzeugt werden, um vollständige Algorithmen zu erhalten.

Stellen Sie SegNet und andere trainierte Deep Learning-Netze bereit.

Generierung von optimiertem Code für die Vorhersage

Der vom GPU Coder generierte Code ist im Vergleich zu anderen Deep Learning-Lösungen weniger komplex, da nur Code erzeugt wird, der für die Inferenz mit Ihrem spezifischen Algorithmus nötig ist. Der generierte Code ruft optimierte Bibliotheken auf, darunter TensorRT™ und cuDNN.

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

Zusätzliche Optimierung mit TensorRT

Generieren Sie Code unter Verwendung von NVIDIA TensorRT, eine hochleistungsfähige 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.

Quantisierung von Deep Learning

Quantisieren Sie Ihr Deep Learning-Netzwerk nach INT8 und analysieren Sie den Kompromiss hinsichtlich der Genauigkeit der Quantisierung der Gewichte und Verzerrungen ausgewählter Schichten mit Hilfe des Unterstützungspakets der Modellquantisierungsbibliothek.

Erstellung von Prototypen auf der Hardware

Dank automatischer Konvertierung Ihres Algorithmus in CUDA-Code gelangen Sie schnell zur Implementierung auf der Hardware.

Prototyping auf den NVIDIA Jetson und DRIVE Plattformen

Automatisieren Sie die Kreuzkompilierung und Bereitstellung von erzeugtem Code auf NVIDIA Jetson™ und NVIDIA DRIVE™ mit dem GPU Coder™ Support Package für GPUs von NVIDIA®.

Prototyping auf NVIDIA Jetson.

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

Kommunizieren Sie aus MATLAB heraus mit dem NVIDIA-Zielsystem, um Daten von Webcams und anderen unterstützten Peripheriegeräten zur ersten Prototypenentwicklung abzurufen. Formulieren Sie Ihren Algorithmus und stellen Sie ihn zusammen mit Code für die Peripherieschnittstelle auf dem board zur eigenständigen Ausführung bereit.

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 mit dem generierten CUDA-Code daneben zurückzuverfolgen. Ü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, generiert vom GPU Coder unter Verwendung des Embedded Coder.

Optimize the Generated Code

GPU Coder automatically optimizes the generated code. Use design patterns to further increase performance.

Minimize CPU-GPU Memory Transfers and Optimize Memory Usage

GPU Coder automatically analyzes, identifies, and partitions segments of MATLAB code to run on either the CPU or GPU. It also minimizes the number of data copies between CPU and GPU. Use profiling tools to identify other potential bottlenecks.

Profile reports identifying potential bottlenecks.

Invoke Optimized Libraries

Code generated with GPU Coder calls optimized NVIDIA CUDA libraries, including TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS, and Thrust. Code generated from MATLAB toolbox functions are mapped to optimized libraries whenever possible.

Generated code calling functions in the optimized cuFFT CUDA library.

Use Design Patterns for Further Acceleration

Design patterns such as stencil processing use shared memory to improve memory bandwidth. They are applied automatically when using certain functions such as convolution. You can also manually invoke them using specific pragmas.

The stencil processing design pattern.

Beschleunigen von Algorithmen

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

Beschleunigung der Laufzeit von Algorithmen mit GPUs

Rufen Sie erzeugten 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 adressieren.

Accelerate Simulink Simulations Using NVIDIA GPUs

When used with Simulink Coder, GPU Coder accelerates compute-intensive portions of MATLAB Function blocks in your Simulink models on NVIDIA GPUs.

Neue Funktionen

Simulink Support

Generate, build, and deploy Simulink models to NVIDIA GPUs

Deep Learning Simulink Support

Generate, build, and deploy deep learning networks in Simulink models to NVIDIA GPUs

Persistent Variables

Create persistent memory on the GPU

Wavelet Toolbox Code Generation

Generate code for FFT-based FIR filtering and Short-time Fourier transform using dwt, dwt2, modwt, and modwtmra

Deep Learning

Generate code for custom layers

Multi-Input Networks

Generate code for networks that have multiple inputs

Long Short-Term Memory (LSTM) Networks

Generate code for convolutional LSTM and network activations

IO Block Library for NVIDIA Hardware

Access NVIDIA hardware peripherals using GPU Coder Support Package for NVIDIA GPUs

See the release notes for details on any of these features and corresponding functions.