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:
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.
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.
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.
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.
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.
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.
Minimierte CPU-GPU-Speicherübertragungen und optimierte Speicherauslastung
MATLAB-Codesegmente werden von GPU Coder automatisch analysiert, identifiziert und partitioniert und entweder der CPU oder der GPU zur Ausführung zugewiesen. Außerdem wird die Anzahl der Datenkopien zwischen CPU und GPU minimiert. Mithilfe von Profiling-Tools können Sie weitere potenzielle Engpässe identifizieren.
Aufruf optimierter Bibliotheken
Der vom GPU Coder generierte Code ruft optimierte CUDA-Bibliotheken von NVIDIA auf, darunter TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS und Thrust. Code, der mit Toolbox-Funktionen von MATLAB generiert wurde, wird nach Möglichkeit optimierten Bibliotheken zugeordnet.
Zusätzliche Beschleunigung durch Designmuster
Designmuster wie die Stencil-Verarbeitung nutzen gemeinsamen Speicher zur Verbesserung der nötigen Speicherbandbreite. Bei bestimmten Funktionen (z. B. Faltung) werden sie automatisch angewendet. Mithilfe spezifischer Pragmas können Sie sie auch manuell aufrufen.
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®.
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.
Ü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).
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.
LSTM-Netze (Long Short-Term Memory)
Generieren von Code für rekurrente Netze wie LSTM-Netze
Deep Learning auf Zielhardware
Bereitstellung von Deep-Learning-Netzen auf ARM Mali GPU-Prozessoren
Deep Learning-Netze
Generieren von Code für DeepLab v3+, MobileNet v2, Xception und DenseNet-201
YOLO V2-Objektdetektor
Generieren von Code aus YOLO V2-Objektdetektoren für cuDNN- und TensorRT-Ziele
Dynamische Parallelität
Starten von Kernels aus Threads, die auf dem GPU-Gerät ausgeführt werden
1-D-Reduktionsoperationen auf der GPU
PIL-Testing (Processor-in-the-Loop)
Verifizieren des numerische Verhaltens des erzeugten CUDA-Codes auf NVIDIA-GPUs
Unterstützung von NVIDIA-Hardware
Zugreifen auf integrierte Kameramodule und Generieren von CUDA-Code für die VideoReader
-Funktion
Details zu diesen Merkmalen und den zugehörigen Funktionen finden Sie in den Versionshinweisen.