GPU Coder génère du code CUDA® optimisé à partir de code MATLAB et de modèles Simulink. Le code généré inclut des noyaux CUDA pour les sections parallélisables de vos algorithmes de Deep Learning, de vision embarquée, de radar et de traitement du signal. Pour des performances élevées, le code généré peut faire appel à NVIDIA® TensorRT™. Vous pouvez intégrer le CUDA généré dans votre projet sous forme de code source ou de bibliothèques statiques/dynamiques et le compiler pour les GPU NVIDIA modernes, notamment ceux embarqués sur les plateformes NVIDIA Jetson™ et NVIDIA DRIVE™. Vous pouvez accéder aux périphériques des plateformes Jetson et DRIVE et intégrer du CUDA écrit manuellement dans le code généré.
GPU Coder vous permet de profiler le CUDA généré pour identifier les goulots d'étranglement et les possibilités d'optimisation des performances (avec Embedded Coder). Des liens bidirectionnels vous permettent d'établir une trace entre le code MATLAB et le code CUDA généré. Vous pouvez vérifier le comportement numérique du code généré sur le hardware avec des tests SIL (Software-in-the-Loop) et PIL (Processor-in-the-Loop).
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.
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.
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.
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.
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.
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.
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.
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.
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.
Ressources produits :
« 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. »
Valerio Imbriolo, Drass Group