MATLAB Coder

 

MATLAB Coder

Générer du code C et C++ à partir de code MATLAB

En savoir plus:

Guide de démarrage rapide gratuit pour MATLAB Coder

Découvrez les bonnes pratiques pour générer du code source ANSI-C autonome et des fichiers MEX à partir de vos algorithmes MATLAB avec MATLAB Coder.

Commencer

Exécuter sur n'importe quelle cible

Générez du code source C/C++ ANSI lisible et portable. Déployez du code libre de droits.

Déployer des algorithmes libres de droits

Utilisez n'importe quel compilateur C/C++ pour compiler et exécuter votre code généré sur n'importe quelle cible, depuis les PC, smartphones et tablettes, jusqu'au hardware embarqué. Le code généré est libre de droits, vous pouvez donc le déployer gratuitement dans des applications commerciales pour vos clients.

Code généré pour la multiplication matricielle.

Code généré pour la multiplication matricielle.

Toolboxes et fonctions supportées

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

Déployer du code C++ depuis MATLAB

Intégrez le code généré à du code source C++ orienté objet.

Générer du code C++ avec des namespaces

MATLAB Coder peut générer du code C++ dans un namespace, ce qui facilite l'intégration avec d'autres codes sources contenant des noms de fonctions ou types de données identiques. Le générateur de code regroupe toutes les fonctions générées et les définitions de types dans le namespace.

Code généré intégrant des variables avec des noms de types de données identiques en utilisant des namespaces.

Code généré intégrant des variables avec des noms de types de données identiques en utilisant des namespaces.

Générer des classes C++ à partir de classes MATLAB

MATLAB Coder génère des classes C++ à partir des classes de votre code MATLAB, notamment des classes de type value, de type handle et des system objects. Le code généré peut être compilé dans des bibliothèques C++ ou des exécutables et intégré dans votre code source C++ existant.

Utiliser des structures C++ allouées dynamiquement dans les interfaces de fonctions générées

Générez du code C++ pour les fonctions MATLAB qui acceptent ou renvoient une structure dont la taille est inconnue au moment de la compilation, ou dont la limite dépasse un seuil prédéfini. Dans le code généré, l'allocation de mémoire pour la structure se fait de manière dynamique et sous la forme d'un modèle de classe nommé coder::array. En complément de la désallocation de mémoire avec traitement des exceptions, coder::array propose des API permettant d'accéder à la structure dynamique et de la gérer.

Passer des structures allouées dynamiquement aux fonctions générées.

Passer des structures allouées dynamiquement aux fonctions générées.

Déployer des modèles de Machine Learning et des réseaux de Deep Learning

Générez du code à partir de réseaux de Deep Learning entraînés et de modèles de Machine Learning.

Déployer des algorithmes de Deep Learning de bout en bout

Déployez de nombreux réseaux de Deep Learning entraînés (ResNet-50, MobileNet-v2, LSTM et autres couches) à partir de Deep Learning Toolbox sur des processeurs Intel® et ARM® Cortex®. Générez le code du pré- et post-traitement et de vos réseaux de Deep Learning afin de déployer des algorithmes complets.

Générer du code optimisé pour l'inférence du Deep Learning

L'exécution du code généré est plus rapide et utilise moins de mémoire que les autres solutions de Deep Learning, car MATLAB Coder 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 Intel MKL-DNN pour les processeurs Intel et ARM Compute Library pour les processeurs ARM Cortex. Utilisez GPU Coder pour générer du code CUDA® pour accélérer ou déployer les algorithmes, exécutable sur tout GPU NVIDIA® moderne.

Déployer des modèles de Machine Learning de bout en bout

Déployez des modèles de Machine Learning et de statistiques en générant du code C/C++ pour l'ensemble de votre algorithme de Machine Learning, y compris les prétraitements et les post-traitements. Mettez à jour les paramètres des modèles déployés sans regénérer le code C/C++ de la prédiction.

Workflow de génération de code pour les modèles de Machine Learning

Workflow de génération de code pour les modèles de Machine Learning

Prototyper sur du hardware

Implémentez votre algorithme rapidement sur du hardware grâce à la conversion automatique en code C/C++.

Prototyper sur des plateformes PC et cloud

Utilisez l'application MATLAB Coder ou des fonctions en ligne de commande équivalentes pour générer rapidement du code et le compiler pour votre hardware, quel que soit le type d'application : traitement du signal, Computer Vision, Deep Learning, systèmes de contrôle, etc.

Prototyper sur des plateformes embarquées et mobiles

Ciblez n'importe quel dispositif en intégrant manuellement le code généré à votre application. Automatisez le processus pour Raspberry Pi à l'aide du Support Package MATLAB pour Raspberry Pi.

Prototypage rapide d'algorithmes sur plateformes embarquées et mobiles.

Prototypage rapide d'algorithmes sur plateformes embarquées et mobiles.

Du prototypage à la production

Utilisez MATLAB Coder avec Embedded Coder pour générer du code utilisant les intrinsèques propres au processeur et s'exécutant plus rapidement que du code C/C++ ANSI/ISO standard.

Profiler le temps d'exécution du code autonome généré.

Profiler le temps d'exécution du code autonome généré.

Intégration logicielle

Réutilisez les algorithmes MATLAB sous forme de code C/C++ dans votre environnement logiciel.

Générer du code avec des interfaces simples, faciles à intégrer

Le code généré utilise des types C/C++ de manière naturelle, facilitant l’intégration avec du code externe. Vous pouvez intégrer le code généré sous forme de code source ou de bibliothèques. Pour des tests plus complets, vous pouvez importer des bibliothèques ou des composants C/C+ fiables dans MATLAB qui seront automatiquement appelés à partir du code généré.

Rapport de traçabilité interactif avec MATLAB Coder et Embedded Coder.

Rapport de traçabilité interactif avec MATLAB Coder et Embedded Coder.

Optimiser les performances du code généré

Appliquez des optimisations pour trouver le meilleur compromis entre vitesse d'exécution, utilisation de la mémoire, lisibilité et portabilité. Utilisez des outils de profilage pour identifier les goulots d'étranglement. Pour doper encore les performances, générez du code OpenMP multicœurs et appelez des bibliothèques optimisées telles que LAPACK, BLAS ou encore FFTW le cas échéant.

Exemple de code généré contenant des appels à OpenMP.

Exemple de code généré contenant des appels à OpenMP.

Réutiliser les tests MATLAB sur le code généré avant l'intégration

Réutilisez vos tests MATLAB existants pour vérifier le comportement du code généré dans l'environnement MATLAB interactif. Mettez à profit l'environnement de tests unitaires MATLAB Unit Test Framework pour développer rapidement un vaste jeu de tests de régression utilisables pour vérifier le code C/C++ généré.

Vérifier le comportement du code généré avant l'intégration à votre application.

Vérifier le comportement du code généré avant l'intégration à votre application.

Accélérer les algorithmes

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

Accélérer les algorithmes sur CPU

Vous pouvez appeler le code généré sous forme de fonctions MEX à partir de votre code MATLAB pour accélérer son exécution. L'accélération observée dépendra de la nature de votre code MATLAB. Vous pouvez profiler les fonctions MEX générées pour identifier les goulots d'étranglement et ainsi cibler vos efforts d'optimisation.

Profiler des fonctions MEX pour identifier les goulots d'étranglement affectant les performances.

Profiler des fonctions MEX pour identifier les goulots d'étranglement affectant les performances.

Accélérer les algorithmes avec des GPU

Utilisez Parallel Computing Toolbox pour accélérer les algorithmes exécutés dans MATLAB. Utilisez GPU Coder pour générer du code CUDA pour l'accélération ou le déploiement, exécutable sur tout GPU NVIDIA moderne.