GPU Coder™ genera código CUDA® optimizado a partir de código de MATLAB® y modelos de Simulink®. El código generado incluye kernels CUDA para las partes paralelizables de sus algoritmos de deep learning, visión embebida y procesamiento de señales. Para lograr un alto rendimiento, el código generado realiza llamadas a librerías NVIDIA® CUDA optimizadas, tales como TensorRT™, cuDNN, cuFFT, cuSolver y cuBLAS. Puede integrar el código en su proyecto como código fuente, librerías estáticas o librerías dinámicas, y lo puede compilar para equipos de escritorio, servidores y GPU embebidas en NVIDIA Jetson™, NVIDIA DRIVE™ y otras plataformas. El código CUDA generado se puede usar en MATLAB para acelerar redes de deep learning y otras partes de su algoritmo con una alta carga computacional. GPU Coder permite incorporar código CUDA escrito a mano en sus algoritmos y en el código generado.
Cuando se utiliza con Embedded Coder®, GPU Coder permite verificar el comportamiento numérico del código generado mediante pruebas software-in-the-loop (SIL) y processor-in-the-loop (PIL).
Más información:
Despliegue de algoritmos libres de royalties
Compile y ejecute el código generado en GPU NVIDIA de uso habitual, desde sistemas de escritorio a centros de datos o hardware embebido. El código generado está libre de royalties, de modo que puede desplegarlo en aplicaciones comerciales para sus clientes sin coste.
Casos de éxito de GPU Coder
Descubra cómo ingenieros y científicos de diversos sectores utilizan GPU Coder para generar código CUDA para sus aplicaciones.
Generación de código desde funciones y toolboxes soportadas
GPU Coder genera código a partir de una extensa gama de funcionalidades del lenguaje MATLAB que los ingenieros de diseño utilizan para desarrollar algoritmos como componentes de sistemas más amplios. Esto incluye cientos de operadores y funciones de MATLAB y de las toolboxes complementarias.
Incorporación de código heredado
Utilice las prestaciones de integración de código heredado para incorporar código CUDA de confianza o altamente optimizado en sus algoritmos de MATLAB para realizar pruebas en MATLAB. A continuación, realice una llamada al mismo código CUDA desde el código generado.
Ejecución de simulaciones y generación de código optimizado para GPU NVIDIA
Cuando se utiliza con Simulink Coder™, GPU Coder acelera partes de bloques MATLAB Function con una alta carga computacional en sus modelos de Simulink en GPU NVIDIA. A continuación, puede generar código CUDA optimizado desde el modelo de Simulink y desplegarlo en su plataforma GPU NVIDIA.
Despliegue de algoritmos de deep learning de extremo a extremo
Utilice diversas redes de deep learning entrenadas (incluidas ResNet-50, SegNet y LSTM) desde Deep Learning Toolbox™ en su modelo de Simulink y realice el despliegue en GPU NVIDIA. Genere código para preprocesamiento y posprocesamiento junto con sus redes de deep learning entrenadas para desplegar algoritmos completos.
Registro de señales, ajuste de parámetros y verificación numérica del comportamiento del código
Cuando se utiliza con Simulink Coder, GPU Coder permite registrar señales y ajustar parámetros en tiempo real usando simulaciones en modo externo. Utilice Embedded Coder con GPU Coder para ejecutar pruebas software-in-the-loop y processor-in-the-loop que verifican numéricamente que el código generado coincide con el comportamiento de la simulación.
Despliegue de algoritmos de deep learning de extremo a extremo
Despliegue diversas redes de deep learning entrenadas (incluidas ResNet-50, SegNet y LSTM) desde Deep Learning Toolbox en GPU NVIDIA. Utilice capas de deep learning predefinidas o defina capas personalizadas para su aplicación específica. Genere código para preprocesamiento y posprocesamiento junto con sus redes de deep learning entrenadas para desplegar algoritmos completos.
Generación de código optimizado para inferencia
GPU Coder genera código menos extenso en comparación con otras soluciones de deep learning, ya que solo genera el código necesario para ejecutar la inferencia con un algoritmo concreto. El código generado realiza llamadas a librerías optimizadas, incluidas TensorRT y cuDNN.
Mayor optimización mediante TensorRT
Genere código que se integra con NVIDIA TensorRT, un tiempo de ejecución y un optimizador de inferencia de deep learning de alto rendimiento. Utilice tipos de datos INT8 o FP16 para conseguir mejoras de rendimiento adicionales respecto del tipo de datos FP32 estándar.
Cuantización de deep learning
Cuantice su red de deep learning para reducir el uso de memoria y aumentar el rendimiento de inferencia. Analice y visualice el tradeoff entre un mayor rendimiento y la precisión de inferencia con la app Deep Network Quantizer.
Minimización de las transferencias de memoria CPU-GPU y optimización del uso de memoria
GPU Coder analiza, identifica y divide automáticamente los segmentos del código de MATLAB para su ejecución en la CPU o en la GPU. Además, minimiza el número de copias de datos entre la CPU y la GPU. Utilice herramientas de análisis de rendimiento para identificar otros posibles cuellos de botella.
Invocación de librerías optimizadas
El código generado con GPU Coder realiza llamadas a librerías NVIDIA CUDA optimizadas, tales como TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS y Thrust. El código generado desde las funciones de las toolboxes de MATLAB se asigna a librerías optimizadas siempre que es posible.
Uso de patrones de diseño para aumentar la aceleración
Los patrones de diseño, tales como el procesamiento de plantillas, utilizan la memoria compartida para aumentar el ancho de banda de memoria. Se aplican automáticamente cuando se emplean ciertas funciones, tales como la convolución. Además, puede invocarlos manualmente mediante pragmas específicas.
Prototipado en las plataformas NVIDIA Jetson y NVIDIA DRIVE
Automatice la compilación cruzada y el despliegue del código generado en las plataformas NVIDIA Jetson y NVIDIA DRIVE mediante el paquete de soporte de GPU Coder para GPU NVIDIA.
Acceso a periféricos y sensores desde MATLAB y el código generado
Comuníquese de manera remota con la plataforma NVIDIA desde MATLAB para adquirir datos procedentes de webcams y otros periféricos soportados y prototipar con más rapidez. Despliegue su algoritmo junto con el código de la interfaz del periférico en la placa para permitir la ejecución autónoma.
Del prototipado a la producción
Utilice GPU Coder con Embedded Coder para trazar de manera interactiva su código de MATLAB cotejándolo con el código CUDA generado. Verifique el comportamiento numérico del código generado que se ejecuta en el hardware mediante pruebas software-in-the-loop (SIL) y processor-in-the-loop (PIL).
Aceleración de algoritmos con GPU en MATLAB
Realice llamadas al código CUDA generado como una función MEX desde el código de MATLAB para acelerar la ejecución, aunque el rendimiento variará en función de la naturaleza del código de MATLAB. Analice el rendimiento de las funciones MEX generadas para identificar cuellos de botella y enfocar sus esfuerzos de optimización.
Aceleración de las simulaciones de Simulink con GPU NVIDIA
Cuando se utiliza con Simulink Coder, GPU Coder acelera partes de bloques MATLAB Function con una alta carga computacional en sus modelos de Simulink en las GPU NVIDIA.