GPU Coder

 

GPU Coder

Générer du code CUDA pour des GPU NVIDIA

Rapport de génération de code montrant le code CUDA généré.

Générer du code CUDA à partir de MATLAB

Compilez et exécutez du code CUDA généré à partir de vos algorithmes MATLAB sur les GPU NVIDIA les plus répandus, des cartes RTX desktop aux data centers en passant par les plateformes Jetson et DRIVE embarquées. Déployez le code généré gratuitement et libre de droits pour vos clients.

Modèle Simulink d'un détecteur de voies de circulation et de véhicules.

Générer du code CUDA à partir de Simulink

Utilisez Simulink Coder avec GPU Coder pour générer du code CUDA à partir de vos modèles Simulink et le déployer sur les GPU NVIDIA. Accélérez les parties des simulations Simulink nécessitant des calculs intensifs sur les GPU NVIDIA.

Photo de la plateforme NVIDIA Jetson.

Déployer sur NVIDIA Jetson et DRIVE

GPU Coder automatise le déploiement du code généré sur les plateformes NVIDIA Jetson et DRIVE. Accédez aux périphériques, faites l'acquisition de données de capteurs et déployez votre algorithme accompagné du code d'interface aux périphériques, sur la carte pour une exécution autonome.

Deux vues de caméras de la circulation routière dans le cadre d'une application de détection de véhicules et de voies de circulation dans Simulink.

Générer du code pour le Deep Learning

Déployez une variété de réseaux de Deep Learning prédéfinis ou personnalisés sur les GPU NVIDIA. Générez du code pour le prétraitement et le post-traitement avec vos réseaux de Deep Learning entraînés afin de déployer des algorithmes complets.

Graphique à barres intitulé « Inference with ResNet-50 » montrant l'augmentation du nombre d'images/seconde avec l'utilisation des types de données FP32 et INT8.

Optimiser le code généré 

GPU Coder applique automatiquement des optimisations telles que la gestion de la mémoire, la fusion de kernels et l'auto-tuning. Réduisez l'empreinte mémoire en générant du code INT8 ou bfloat16. Améliorez encore les performances en intégrant TensorRT.

Un rapport de l'outil GPU Performance Analyzer montrant des informations de profilage sur le code généré.

Profiler et analyser le code généré

Utilisez GPU Performance Analyzer pour profiler le code CUDA généré et identifier les possibilités d'amélioration de la vitesse d'exécution et de l'empreinte mémoire.

Diagramme illustrant le fonctionnement conceptuel du design pattern de type stencil.

Utiliser des design patterns pour améliorer les performances

Les design patterns, notamment les traitements des stencils et les réductions, sont appliqués automatiquement lorsqu'ils sont disponibles afin d'augmenter les performances du code généré. Vous pouvez également les invoquer manuellement au moyen de pragmas spécifiques.

Rapport de génération de code montrant la traçabilité bidirectionnelle interactive entre le code MATLAB et le code CUDA généré.

Enregistrer des signaux, ajuster des paramètres et vérifier le comportement du code 

Utilisez GPU Coder avec Simulink Coder pour enregistrer les signaux et ajuster les paramètres en temps réel. Ajoutez Embedded Coder pour établir une trace interactive entre MATLAB et le code CUDA généré afin de vérifier numériquement le comportement du code CUDA généré par le biais de tests SIL. 

Modèle Simulink d'un algorithme de prédiction ECG avec GPU Coder et des GPU NVIDIA utilisés pour l'accélération.

Accélérer les simulations Simulink et MATLAB

Appelez le code CUDA généré sous forme de fonction MEX depuis votre code MATLAB pour accélérer son exécution. Utilisez Simulink Coder avec GPU Coder pour accélérer les parties des blocs MATLAB Function qui exigent des calculs intensifs dans vos modèles Simulink sur des GPU NVIDIA.

« De l'annotation des données au choix de notre modèle de Deep Learning suivi de l’apprentissage, des tests et de l'ajustement du modèle, MATLAB disposait de tous les outils dont nous avions besoin, et GPU Coder nous a permis un déploiement rapide sur nos GPU NVIDIA, malgré notre expérience limitée. »

Vous souhaitez en savoir plus sur le produit  GPU Coder ?