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 et de traitement du signal. Pour une performance élevée, le code généré appelle des bibliothèques NVIDIA® CUDA optimisées, notamment TensorRT™, cuDNN, cuFFT, cuSolver et cuBLAS. Le code peut être intégré dans votre projet sous forme de code source, de bibliothèques statiques ou dynamiques, et peut être compilé pour des desktops, des serveurs et des GPU embarqués sur des plateformes NVIDIA Jetson™, NVIDIA DRIVE™ ou autre. Vous pouvez utiliser le code CUDA généré dans MATLAB afin d'accélérer les réseaux de Deep Learning et d'autres parties de votre algorithme qui exigent des calculs intensifs. Avec GPU Coder, vous pouvez intégrer à vos algorithmes et au code généré du code CUDA écrit à la main.
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) et PIL (Processor-in-the-loop).
En savoir plus:
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 harware embarqué. Le code généré est libre de droits, vous pouvez donc le déployer gratuitement dans des applications commerciales pour vos clients.
Témoignages clients 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.
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 design utilisent pour développer des algorithmes en tant que composants de systèmes plus importants. Ceci inclut des centaines d'opérateurs et de fonctions MATLAB ainsi que leurs toolboxes associées.
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 dans MATLAB. Appelez ensuite ce même code CUDA à partir du code généré.
Exécuter des simulations et générer du code optimisé pour les GPU NVIDIA
Lorsqu'il est utilisé avec Simulink Coder, GPU Coder accélère les parties des blocs MATLAB Function qui exigent des calculs intensifs dans vos modèles Simulink sur des GPU NVIDIA. Vous pouvez ensuite générer du code CUDA optimisé à partir du modèle Simulink et le déployer sur votre GPU NVIDIA cible.
Déploiement d'algorithmes de Deep Learning de bout en bout
Utilisez de nombreux réseaux de Deep Learning entraînés (notamment ResNet-50, SegNet et LSTM) à partir de la Deep Learning Toolbox dans votre modèle Simulink et déployez-les sur des GPU NVIDIA. Générez du code pour le prétraitement et post-traitement en parallèle avec vos réseaux de Deep Learning entrainés afin de déployer des algorithmes complets.
Enregistrement de signaux, réglage de paramètres et vérification numérique du comportement du code
Utilisé avec Simulink Coder, GPU Coder vous permet d'enregistrer des signaux et de régler des paramètres en temps réel à l'aide de simulations en mode externe. Utilisez Embedded Coder avec GPU Coder pour exécuter des tests SIL (Software-in-the-loop) et PIL (Processor-in-the-loop) qui vérifient numériquement que le code généré correspond au comportement de la simulation.
Déployer des algorithmes de Deep Learning de bout en bout
Déployez de nombreux réseaux de Deep Learning entraînés (notamment ResNet-50, SegNet et LSTM) à partir de la Deep Learning Toolbox sur des GPU NVIDIA. Utilisez des couches de Deep Learning prédéfinies ou définissez des couches personnalisées pour votre application spécifique. 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.
Générer du 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 and 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.
Quantification du Deep Learning
Quantifiez votre réseau de Deep Learning pour réduire l'utilisation de la mémoire et améliorer les performances des inférences. Analysez et visualisez les compromis entre les performances optimisées et la précision des inférences avec l'application Deep Network Quantizer.
Réduction des transferts entre les mémoires du CPU et du GPU et optimisation de l'utilisation de la mémoire
GPU Coder analyse, identifie et partitionne automatiquement les segments de code MATLAB à exécuter sur le CPU ou le GPU. Il minimalise également le nombre de copies de données entre le CPU et le GPU. Utilisez des outils de profilage pour identifier les autres goulots d'étranglement possibles.
Invocation de bibliothèques optimisées
Le code généré avec GPU Coder fait appel aux bibliothèques CUDA de NVIDIA optimisées, notamment TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS, et Thrust. Le code généré à partir des fonctions issues de toolboxes MATLAB est mappé sur des librairies optimisées, dans la mesure du possible.
Utilisation de design patterns pour une accélération plus poussée
Les design patterns de type stencil utilisent une mémoire partagée pour améliorer la bande passante mémoire. Ils sont appliqués automatiquement lorsque vous utilisez certaines fonctions telles que la convolution. Vous pouvez également les invoquer manuellement au moyen de pragmas spécifiques.
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.
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. Déployez votre algorithme en parallèle du code d'interface périphérique sur la carte pour une exécution autonome.
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 avec des tests SIL (Software-in-the-loop) et PIL (Processor-in-the-loop).
Accélération d'algorithmes avec des GPU dans MATLAB
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.
Accélération de simulations Simulink avec les GPU NVIDIA
Lorsqu'il est utilisé avec Simulink Coder, GPU Coder accélère les parties des blocs MATLAB Function qui exigent des calculs intensifs dans vos modèles Simulink sur des GPU NVIDIA.