GPU Coder

Génération de code CUDA pour des GPU NVIDIA

GPU Coder™ génère du code CUDA® optimisé à partir de code MATLAB® pour le Deep Learning, la vision embarquée et les systèmes autonomes. Le code généré fait appel aux bibliothèques CUDA de NVIDIA optimisées, notamment cuDNN, cuSolver et cuBLAS. Il peut être intégré dans votre projet sous forme de code source, de bibliothèques statiques ou dynamiques, et peut être utilisé pour le prototypage sur des GPU tels que NVIDIA Tesla® et NVIDIA Tegra®. Vous pouvez utiliser le code CUDA généré dans MATLAB afin d'accélérer les parties du code MATLAB qui exigent des calculs intensifs. GPU Coder vous permet d'incorporer du code CUDA existant dans vos algorithmes MATLAB et dans le code généré.

Lorsque vous l'utilisez avec Embedded Coder®, GPU Coder vous permet également de vérifier le comportement numérique du code généré en réalisant des tests SIL (Software-in-the-loop).

En savoir plus :

Génération de code CUDA rapide et flexible

Générez du code CUDA optimisé. Déployez du code libre de droits.

Déploiement d'algorithmes libres de droits

Compilez et exécutez votre code généré sur des GPU NVIDIA courants depuis un PC, sur des data centers ou du matériel embarqué. Le code généré est libre de droits, vous pouvez donc le déployer gratuitement dans des applications commerciales pour vos clients.

Voir la galerie (2 images)

Témoignages d'utilisateurs sur GPU Coder

Découvrez comment les ingénieurs et scientifiques de différentes industries utilisent GPU Coder pour générer du code CUDA pour leurs applications.

Airbus prototype la détection automatique de défauts sur NVIDIA Jetson TX2.

Génération de code à partir des toolboxes et fonctions supportées

GPU Coder génère du code à partir d'un large éventail de fonctionnalités du langage MATLAB que les ingénieurs de conception utilisent pour développer des algorithmes en tant que composants de systèmes plus importants. Ceci inclut plus de 390 opérateurs et fonctions MATLAB ainsi que des toolboxes connexes.

Support du langage et des toolboxes MATLAB pour la génération de code.

Incorporation de code existant

Utilisez les fonctionnalités d'intégration de code existant pour incorporer du code CUDA fiable ou hautement optimisé dans vos algorithmes MATLAB pour les tester, puis appelez ce même code CUDA à partir du code généré.

Incorporation du code CUDA existant dans le code généré.

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.

Génération de code CUDA à partir de réseaux de Deep Learning

Déployez des réseaux de Deep Learning entraînés à l'aide de Deep Learning Toolbox.

Déploiement d'algorithmes de Deep Learning de bout en bout

Déployez de nombreux réseaux de Deep Learning entraînés, tels que ResNet-50 et SegNet, à partir de Deep Learning Toolbox™ sur des GPU NVIDIA. Générez du code de prétraitement et de post-traitement en parallèle avec vos réseaux de Deep Learning afin de déployer des algorithmes complets.

Déployez SegNet ainsi que de nombreux autres réseaux de Deep Learning entraînés.

Génération de code optimisé pour l'inférence

GPU Coder génère du code avec une empreinte réduite par rapport aux autres solutions de Deep Learning car il ne génère que le code nécessaire pour exécuter l'inférence avec votre algorithme spécifique. Le code généré appelle des bibliothèques optimisées, notamment TensorRT™ et cuDNN.

Inférence d'une image unique avec VGG-16 sur un GPU Titan V à l'aide de cuDNN.

Optimisation poussée avec TensorRT

Générez du code s'intégrant à NVIDIA TensorRT, un outil haute performance pour l'optimisation et l'exécution d'inférences de Deep Learning. Utilisez des données de types INT8 ou FP16 pour obtenir de meilleures performances qu'avec le type de données FP32.

Amélioration de la vitesse d'exécution avec des données de types TensorRT et INT8.

Quantification du Deep Learning

Quantifiez votre réseau de Deep Learning en INT8 et analysez les compromis sur la précision de la quantification des poids et des biais des couches sélectionnées en utilisant le support package Model Quantization Library.

Prototypage sur hardware

Implémentez votre algorithme rapidement sur hardware grâce à la conversion automatique en code CUDA.

Prototypage sur les plateformes NVIDIA Jetson et DRIVE

Automatisez la compilation croisée et le déploiement du code généré sur les plateformes NVIDIA Jetson™ et DRIVE™ à l'aide du support package pour les GPU NVIDIA® de GPU Coder™.

Prototypage sur la plateforme NVIDIA Jetson.

Accès aux périphériques et aux capteurs depuis MATLAB et le code généré

Communiquez à distance avec la cible NVIDIA depuis MATLAB pour collecter les données de webcams et d'autres périphériques supportés pour un prototypage dès le début du cycle de développement. Créez et déployez votre algorithme en parallèle du code d'interface périphérique sur la carte pour une exécution autonome.

Accès aux périphériques et aux capteurs depuis MATLAB et le code généré.

Du prototypage à la production

Utilisez GPU Coder avec Embedded Coder® pour effectuer un suivi interactif de votre code MATLAB à côté du code CUDA généré. Vérifiez le comportement numérique du code généré exécuté sur le hardware à l'aide de tests SIL (Software-in-the-loop) et PIL (Processor-in-the-loop).

Rapport de traçabilité interactif à l'aide de GPU Coder et d'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.

Accélération des algorithmes

Générez du code CUDA et compilez-le pour l'utiliser dans MATLAB.

Accélération des algorithmes à l'aide de GPU

Appelez le code CUDA généré sous forme de fonction MEX depuis votre code MATLAB pour accélérer son exécution. Les performances observées dépendront de la nature de votre code MATLAB. Profilez les fonctions MEX générées pour identifier les goulots d'étranglement et ainsi cibler vos efforts d'optimisation.

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.

Nouveautés

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.