GPU Coder

Generazione di codice CUDA per GPU NVIDIA

GPU Coder™ genera codice CUDA® ottimizzato dal codice MATLAB® e dai modelli Simulink®. Il codice generato include kernel CUDA per le parti parallelizzabili degli algoritmi di elaborazione dei segnali, deep learning e visione embedded. Per ottenere delle prestazioni elevate, il codice generato richiama delle librerie CUDA NVIDIA® ottimizzate, tra cui TensorRT™, cuDNN, cuFFT, cuSolver e cuBLAS. Il codice può essere integrato nel proprio progetto in forma di codice sorgente, librerie statiche o librerie dinamiche e compilato per desktop, server e GPU integrate su piattaforme NVIDIA Jetson™, NVIDIA DRIVE™ e di altro tipo. Il CUDA generato può essere utilizzato in MATLAB per accelerare le reti di deep learning e altre porzioni computazionalmente onerose dell’algoritmo. GPU Coder consente di incorporare il codice CUDA scritto a mano negli algoritmi e nel codice generato.

Quando si utilizza con Embedded Coder®, GPU Coder consente di verificare il comportamento numerico del codice generato tramite test Software-In-the-Loop (SIL) e Processor-In-the-Loop (PIL).

Inizia ora:

Generazione di codice CUDA rapido e flessibile

Genera codice CUDA ottimizzato. Distribuisci codice senza royalty.

Distribuzione di algoritmi senza royalty

Compila ed esegui il codice generato su GPU NVIDIA diffuse, dai sistemi desktop ai data center e all’hardware embedded. Il codice generato è senza royalty: distribuiscilo gratuitamente ai tuoi clienti per applicazioni commerciali.

Esplora la gallery (2 immagini)

Storie di successo con GPU Coder

Scopri come ingegneri e scienziati, operanti in settori diversi, utilizzano GPU Coder per generare codice CUDA per le loro applicazioni.

Airbus prototipa il rilevamento automatico di difetti su NVIDIA Jetson TX2.

Generazione di codice da toolbox e funzioni supportate

GPU 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 centinaia di operatori e funzioni da MATLAB e toolbox complementari.

Supporto per linguaggio e toolbox MATLAB per la generazione di codice.

Integrazione del codice preesistente

Utilizza le funzionalità di integrazione del codice preesistente per incorporare codice CUDA altamente ottimizzato o affidabile nei tuoi algoritmi MATLAB per eseguire i test in MATLAB. Poi, richiama lo stesso codice CUDA dal codice generato.

Integrazione di codice CUDA esistente nel codice generato.

Generazione di codice CUDA dai modelli Simulink

Crea modelli in Simulink e genera codice CUDA ottimizzato.

Esecuzione di simulazioni e generazione di codice ottimizzato per GPU NVIDIA

Quando usato con Simulink Coder™, GPU Coder accelera le porzioni computazionalmente onerose dei blocchi MATLAB Function nei modelli Simulink sulle GPU NVIDIA. È possibile generare codice CUDA ottimizzato a partire dal modello Simulink e distribuirlo sulla propria GPU NVIDIA target.

Modello Simulink di un rilevatore di contorni Sobel in esecuzione su una GPU.

Distribuzione di algoritmi di deep learning end-to-end

Usa diverse tipologie di reti di deep learning addestrate (tra cui ResNet-50, SegNet e LSTM) contenute in Deep Learning Toolbox™ nel tuo modello Simulink e distribuiscilo sulle GPU NVIDIA. Genera codice per la pre-elaborazione e la post-elaborazione insieme alle proprie reti di deep learning addestrate per distribuire algoritmi completi.

Registrazione di segnali, regolazione di parametri e verifica numerica del comportamento del codice

Quando usato con Simulink Coder, GPU Coder consente di registrare segnali e regolare parametri in tempo reale, usando le simulazioni in modalità esterna. Usa Embedded Coder con GPU Coder per eseguire test Software-In-the-Loop e Processor-In-the-Loop che verificano, da un punto di vista numerico, se il comportamento del codice generato corrisponde a quello della simulazione.

Uso della modalità esterna per registrare i segnali e regolare i parametri in Simulink.

Generazione di codice CUDA da reti di deep learning

Distribuisci reti di deep learning addestrate con Deep Learning Toolbox.

Distribuzione di algoritmi di deep learning end-to-end

Distribuisci una serie di reti di deep learning addestrate (tra cui ResNet-50, SegNet e LSTM) da Deep Learning Toolbox™ su GPU NVIDIA. Usa layer di deep learning predefiniti oppure definisci layer personalizzati per un’applicazione specifica. 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 l’inferenza

GPU Coder genera codice con un footprint ridotto rispetto ad altre soluzioni di deep learning, poiché genera soltanto il codice necessario per eseguire l’inferenza con l’algoritmo specifico. Il codice generato richiama delle librerie ottimizzate, tra cui TensorRT e cuDNN.

Inferenza di immagini singole con VGG-16 su una GPU Titan V tramite cuDNN.

Ulteriore ottimizzazione con TensorRT

Genera codice che si integra con NVIDIA TensorRT, un runtime e ottimizzatore di inferenze di deep learning ad alte prestazioni. Utilizza dati di tipo INT8 o FP16 per incrementare ulteriormente le prestazioni rispetto al tipo di dati standard FP32.

Miglioramento della velocità di esecuzione con dati di tipo INT8 e TensorRT.

Quantizzazione del deep learning

Esegui la quantizzazione della tua rete di deep learning per ridurre l’uso della memoria e aumentare le prestazioni di inferenza. Analizza e visualizza il tradeoff tra prestazioni aumentate e precisione di inferenza usando l’app Deep Network Quantizer.

Ottimizzazione del codice generato

GPU Coder ottimizza automaticamente il codice generato. Uso di schemi di progettazione per aumentare ulteriormente le prestazioni.

Minimizzazione dei trasferimenti di memoria CPU-GPU e ottimizzazione dell’uso della memoria

GPU Coder analizza, individua e suddivide automaticamente i segmenti di codice MATLAB per l’esecuzione su CPU o GPU. Inoltre, minimizza il numero di copie di dati tra la CPU e la GPU. Usa gli strumenti di profilazione per individuare altri potenziali colli di bottiglia.

Report di profilazione in cui sono indicati i potenziali colli di bottiglia.

Richiamo di librerie ottimizzate

Il codice generato con GPU Coder richiama librerie ottimizzate CUDA NVIDIA, tra cui TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS e Thrust. Quando possibile, il codice generato tramite le funzioni dei toolbox MATLAB viene mappato su librerie ottimizzate.

Funzioni di chiamata del codice generato nella libreria ottimizzata CUDA cuFFT.

Uso di schemi di progettazione per un’ulteriore accelerazione

Gli schemi di progettazione, come gli “stencil”, usano una memoria condivisa per migliorare la larghezza di banda della memoria. Vengono applicati in automatico quando si usano determinate funzioni come la convoluzione. È anche possibile richiamarli manualmente usando pragma specifici.

Schema di progettazione per le operazioni di tipo “stencil”.

Prototipazione sull’hardware

Accedi velocemente all’hardware con la conversione automatica del tuo algoritmo in codice CUDA.

Prototipazione su piattaforme NVIDIA Jetson e DRIVE

Automatizza la cross-compilazione e la distribuzione del codice generato sulle piattaforme NVIDIA Jetson e DRIVE utilizzando il pacchetto di supporto GPU Coder per GPU NVIDIA.

Prototipazione sulla piattaforma NVIDIA Jetson.

Accesso a periferiche e sensori da MATLAB e dal codice generato

Comunica da remoto con il target NVIDIA da MATLAB per acquisire dati da webcam e altre periferiche supportate per la prototipazione iniziale. Distribuisci il tuo algoritmo alla scheda insieme al codice di interfaccia con la periferica per l’esecuzione autonoma.

Accesso a periferiche e sensori da MATLAB e dal codice generato.

Dalla prototipazione alla produzione

Utilizza GPU Coder con Embedded Coder per tracciare in modo interattivo il tuo codice MATLAB parallelamente al codice CUDA generato. Verifica il comportamento numerico del codice generato in esecuzione sull’hardware tramite i test Software-In-the-Loop (SIL) e Processor-In-the-Loop (PIL).

Report di tracciabilità interattivo utilizzando GPU Coder con Embedded Coder.

Accelerazione degli algoritmi

Genera codice CUDA e compilalo per utilizzarlo in MATLAB e in Simulink.

Accelerazione degli algoritmi utilizzando GPU in MATLAB

Richiama il codice CUDA generato come una funzione MEX dal tuo codice MATLAB per velocizzare l’esecuzione, anche se le prestazioni varieranno a seconda della natura del codice MATLAB. Esegui la profilazione delle funzioni MEX generate per individuare i colli di bottiglia e concentrare gli sforzi di ottimizzazione.

Accelerazione delle simulazioni Simulink con GPU NVIDIA

Quando usato con Simulink Coder, GPU Coder accelera le porzioni computazionalmente onerose dei blocchi MATLAB Function nei modelli Simulink sulle GPU NVIDIA.