MATLAB Coder

 

MATLAB Coder

Generazione di codice C e C++ dal codice MATLAB

Inizia ora:

Guida rapida gratuita per MATLAB Coder

Scopri le best practice per la generazione di codice sorgente ANSI-C standalone e file MEX dal tuo algoritmo MATLAB utilizzando MATLAB Coder.

Per iniziare

Eseguibile ovunque

Genera codice sorgente ANSI C/C++ leggibile e portabile. Distribuisci codice senza royalty.

Distribuzione di algoritmi senza royalty

Utilizza qualsiasi compilatore C/C++ per compilare ed eseguire il codice che hai generato su qualsiasi hardware, dai sistemi desktop ai dispositivi mobili all’hardware embedded. Il codice generato è senza royalty: distribuiscilo gratuitamente ai tuoi clienti per applicazioni commerciali.

Codice generato per moltiplicazione tra matrici.

Codice generato per moltiplicazione tra matrici.

Toolbox e funzioni supportate

MATLAB Coder genera il codice da una vasta gamma di funzionalità del linguaggio MATLAB, che i progettisti utilizzano per sviluppare algoritmi come componenti di sistemi di dimensioni maggiori. Ciò include oltre 2500 operatori e funzioni da MATLAB e toolbox complementari.

Distribuzione di codice C++ da MATLAB

Integra il codice generato con codice sorgente C++ orientato agli oggetti.

Generazione di codice C++ con i namespace

MATLAB Coder è in grado di generare codice C++ in un namespace, così da semplificare l’integrazione con altri codici sorgente che potrebbero presentare nomi di tipi di dati o funzioni identiche. Il generatore di codice pacchettizza tutte le funzioni generate e le definizioni di tipo nel namespace.

Codice generato che integra variabili con nomi di tipi di dati identici usando dei namespace.

Codice generato che integra variabili con nomi di tipi di dati identici usando dei namespace.

Generazione di classi C++ dalle classi MATLAB

MATLAB Coder produce classi C++ dalle classi del proprio codice MATLAB, comprese le classi di valore, le classi di handle e i system object. È possibile compilare il codice generato in eseguibili o librerie C++ e quindi integrarlo nel proprio codice sorgente C++ esistente.

Utilizzo dinamico di array C++ allocati in interfacce di funzioni generate

Genera codice C++ per le funzioni MATLAB che accettano o restituiscono un array di dimensioni non note al momento della compilazione o con un confine che supera una soglia predefinita. Nel codice generato, la memoria per l’array viene allocata in modo dinamico e implementata come un template di classe che prende il nome di coder::array. Oltre alla deallocazione di memoria exception-safe, coder::array fornisce le API per accedere e gestire l’array dinamico.

Passaggio dinamico degli array allocati alle funzioni generate.

Passaggio dinamico degli array allocati alle funzioni generate.

Distribuzione di reti di Deep Learning e modelli di Machine Learning

Genera codice da reti di Deep Learning e modelli di Machine Learning addestrati.

Distribuzione di algoritmi di Deep Learning end-to-end

Distribuisci una serie di reti di Deep Learning addestrate come ResNet-50 e MobileNet-v2, oltre a LSTM e altri layer da Deep Learning Toolbox a CPU Intel® e ARM® Cortex®. Genera codice per la pre-elaborazione e la post-elaborazione insieme alle proprie reti di Deep Learning addestrate per distribuire algoritmi completi.

Generazione di codice ottimizzato per inferenza di Deep Learning

Poiché MATLAB Coder genera solo il codice necessario per eseguire l’inferenza con il proprio algoritmo specifico, il codice è più veloce e usa meno memoria rispetto alle altre soluzioni di Deep Learning. Il codice generato consente di richiamare le librerie ottimizzate, tra cui Intel MKL-DNN per i processori Intel e ARM Compute Library per i processori ARM Cortex. Utilizza GPU Coder per accelerare o distribuire gli algoritmi tramite la generazione di codice CUDA® eseguibile su qualsiasi NVIDIA® GPU moderno.

Distribuzione di modelli di Machine Learning end-to-end

Distribuisci modelli statistici e di Machine Learning generando codice C/C++ per l’intero algoritmo di Machine Learning, incluse le fasi di pre-elaborazione e post-elaborazione. Aggiorna i parametri dei modelli distribuiti senza dover generare nuovamente il codice C/C++ di previsione.

Workflow della generazione di codice per i modelli di Machine Learning.

Workflow della generazione di codice per i modelli di Machine Learning.

Prototipazione sull’hardware

Accedi velocemente all’hardware con la conversione automatica del tuo algoritmo in codice C/C++.

Prototipazione su desktop e piattaforme Cloud

Utilizza l'app MATLAB Coder o funzioni equivalenti da riga di comando per generare rapidamente codice per l'elaborazione dei segnali, la visione artificiale, il Deep Learning, i sistemi di controllo o altre applicazioni, quindi compila il codice per il tuo hardware.

Prototipazione su piattaforme embedded e mobile

Utilizzalo su qualsiasi dispositivo integrando manualmente il codice generato con la tua applicazione. Automatizza il processo per Raspberry Pi utilizzando il pacchetto di supporto MATLAB per Raspberry Pi.

Prototipazione rapida di algoritmi su piattaforme embedded e mobile.

Prototipazione rapida di algoritmi su piattaforme embedded e mobile.

Dalla prototipazione alla produzione

Utilizza MATLAB Coder con Embedded Coder per generare codice che sfrutta le funzioni intrinseche del processore eseguibili più velocemente rispetto ai codici standard C/C++ ANSI/ISO.

Profiling del tempo di esecuzione del codice standalone generato.

Profiling del tempo di esecuzione del codice standalone generato.

Integrazione con il software

Riutilizza gli algoritmi MATLAB come codice C/C++ all’interno del tuo ambiente software.

Generazione del codice con interfacce semplici e facili da integrare

Il codice generato utilizza i tipi C/C++ in modo naturale, semplificando l’integrazione con il codice esterno. È possibile integrare il codice generato come codice sorgente o librerie. Si è inoltre in grado di importare le librerie o i componenti C/C++ esistenti in MATLAB per eseguire test più attendibili e quindi in grado di essere automaticamente richiamati anche dal codice generato.

Report di tracciabilità interattiva utilizzando MATLAB Coder con Embedded Coder.

Report di tracciabilità interattiva utilizzando MATLAB Coder con Embedded Coder.

Ottimizzazione delle prestazioni del codice generato

Applica le ottimizzazioni disponibili per regolare il tradeoff tra velocità di esecuzione, utilizzo della memoria, leggibilità e portabilità. Utilizza gli strumenti di profiling per identificare i colli di bottiglia. Per aumentare ulteriormente le prestazioni, genera il codice OpenMP multicore e richiama librerie ottimizzate come LAPACK, BLAS e FFTW, quando disponibili.

Esempio di codice generato con chiamate a OpenMP.

Esempio di codice generato con chiamate a OpenMP.

Riutilizzo dei test MATLAB sul codice generato prima dell'integrazione

Riutilizza i test MATLAB esistenti per verificare il comportamento del codice generato nell'ambiente interattivo MATLAB. Utilizza Unit Testing Framework di MATLAB per sviluppare rapidamente un ricco set di test di regressione utilizzabili per verificare il codice C/C++ generato.

Verifica del comportamento del codice generato prima di integrarlo con la tua applicazione.

Verifica del comportamento del codice generato prima di integrarlo con la tua applicazione.

Accelerazione degli algoritmi

Genera codice C/C++ e compilalo per utilizzarlo in MATLAB.

Accelerazione degli algoritmi su CPU

È possibile richiamare il codice generato come funzioni MEX dal proprio codice MATLAB per velocizzare l'esecuzione, anche se le prestazioni varieranno a seconda della natura del proprio codice MATLAB. È possibile profilare le funzioni MEX generate per identificare i colli di bottiglia e concentrare i propri sforzi di ottimizzazione.

Profiling delle funzioni MEX per identificare i colli di bottiglia nelle prestazioni.

Profiling delle funzioni MEX per identificare i colli di bottiglia nelle prestazioni.

Accelerazione degli algoritmi utilizzando GPU

Utilizza Parallel Computing Toolbox per accelerare gli algoritmi in esecuzione su MATLAB. Utilizza GPU Coder per generare il codice CUDA per l’accelerazione o la distribuzione da eseguire su qualsiasi NVIDIA GPU moderno.