GPU Coder

NVIDIA GPU에 활용할 수 있는 CUDA 코드 생성

GPU Coder를 사용하면 MATLAB 코드로부터 최적화된 CUDA 코드를 생성하여 딥러닝, 임베디드 비전, 자율 시스템에 활용할 수 있습니다. 생성된 코드는 최적화 NVIDIA CUDA 라이브러리를 호출하고, 프로젝트에 소스 코드, 정적 라이브러리 또는 동적 라이브러리로써 통합시킬 수 있으며, NVIDIA Tesla나 NVIDIA Tegra와 같은 GPU에 프로토타이핑하는 데 사용할 수 있습니다. MATLAB 내에서 생성된 CUDA를 사용하여 MATLAB 코드에서 계산 집약적인 부분을 가속화할 수 있습니다. GPU Coder를 이용하면 MATLAB 알고리즘과 생성된 코드에 기존의 CUDA 코드를 통합시킬 수 있습니다.

GPU Coder를 Embedded Coder®와 함께 사용하여 SIL(software-in-the-loop) 테스팅을 통해, 생성된 코드의 결과를 검증 할 수 있습니다.

시작하기:

빠르고 유연한 CUDA 코드 생성

최적화 CUDA 코드 생성. 로열티 없이 코드 배포.

로열티 없이 알고리즘 배포

코드를 생성하고 컴파일하여 데스크탑 시스템, 데이터 센터, 임베디드 하드웨어 등에 널리 사용되는 NVIDIA GPU에서 실행하십시오. 생성된 코드는 로열티가 없습니다. 상용 응용 프로그램에서 고객에게 무료로 배포할 수 있습니다.

갤러리 탐색(이미지 2개)

GPU Coder 성공 사례

다양한 업계에 종사하는 엔지니어와 과학자가 어떻게 GPU Coder를 이용하여 응용 프로그램용 CUDA 코드를 생성하는지 살펴보십시오.

NVIDIA Jetson TX2에서 자동 결함 점검을 프로토타이핑하고 있는 Airbus.

지원되는 툴박스 및 함수로부터 코드 생성

GPU Coder는 다양하고 폭넓은 MATLAB 언어 기능을 이용하여 코드를 생성합니다. 설계 엔지니어는 이 코드를 이용해서 더 큰 시스템의 구성요소인 알고리즘을 개발할 수 있습니다. MATLAB 및 툴박스에는 390개가 넘는 연산자 및 함수가 포함되어 있습니다.

코드 생성을 위한 MATLAB 언어 및 툴박스 지원.

레거시 코드 통합

레거시 코드 통합 기능을 활용하여 신뢰할 수 있는 또는 최적화 수준이 높은 CUDA 코드를 MATLAB 알고리즘에 통합하고 테스트한 다음에, 생성된 코드에서 해당 CUDA 코드를 호출해 보십시오.

생성된 코드에 기존 CUDA 코드를 통합.

Generate CUDA Code from Simulink Models

Create models in Simulink and generate optimized CUDA code.

Run Simulations and Generate Optimized Code for NVIDIA GPUs

When used with Simulink Coder™, GPU Coder accelerates compute-intensive portions of MATLAB Function blocks in your Simulink models on NVIDIA GPUs. You can then generate optimized CUDA code from the Simulink model and deploy it to your NVIDIA GPU target.

Simulink model of a Sobel edge detector running on a GPU.

Deploy End-to-End Deep Learning Algorithms

Use a variety of trained deep learning networks (including ResNet-50, SegNet, and LSTM) from Deep Learning Toolbox™ in your Simulink model and deploy to NVIDIA GPUs. Generate code for preprocessing and postprocessing along with your trained deep learning networks to deploy complete algorithms.

Using ResNet-50 to classify an input image in Simulink.

Log Signals, Tune Parameters, and Numerically Verify Code Behavior

When used with Simulink Coder, GPU Coder enables you to log signals and tune parameters in real time using external mode simulations. Use Embedded Coder with GPU Coder to run software-in-the-loop and processor-in-the-loop tests that numerically verify the generated code matches the behavior of the simulation.

Use External Mode to log signals and tune parameters in Simulink.

딥러닝 네트워크에서 CUDA 코드 생성

딥러닝 툴박스를 이용하여, 학습된 딥러닝 네트워크를 배포

엔드 투 엔드 딥러닝 알고리즘 배포

Deep Learning Toolbox™에 있는 ResNet-50, SegNet 등 학습된 다양한 딥러닝 네트워크를 NVIDIA GPU에 배포하십시오. 학습된 딥러닝 네트워크 이외에도, 전처리나 후처리에 사용되는 코드를 생성하여 전체 알고리즘을 배포하십시오.

SegNet을 비롯한 학습된 다양한 딥러닝 네트워크를 배포합니다.

추론을 위한 최적 코드를 생성

GPU Coder는 특정 알고리즘과 함께 추론을 실행하는 데 필요한 코드만 생성하기 때문에, 다른 딥러닝 솔루션에 비해 생성되는 코드가 작습니다. 생성된 코드는 TensorRT™, cuDNN을 비롯한 최적화된 라이브러리를 호출합니다.

CuDNN을 이용하여 Titan V GPU에서 VGG-16으로 단일 이미지 추론.

TensorRT를 이용한 최적화

고성능 딥러닝 추론 옵티마이저이며 런타임 라이브러리인 NVIDIA TensorRT와 통합하는 코드를 생성합니다. INT8 또는 FP16 데이터형을 이용하여, 표준 FP32 데이터형에 비해 성능을 한층 업그레이드합니다.

TensorRT와 INT8 데이터형을 이용한 실행 속도 개선

딥러닝 양자화

Model Quantization Library 지원 패키지를 사용하여 딥러닝 신경망을 INT8로 양자화하고 선택한 계층의 가중치와 편향을 양자화한 결과에 대한 정확도의 절충 관계를 분석할 수 있습니다.

하드웨어에서 프로토타이핑

알고리즘을 자동으로 CUDA 코드로 변환시켜서 하드웨어 속도를 높이십시오.

NVIDIA Jetson 및 DRIVE 플랫폼에 대한 프로토타이핑

GPU Coder™의 NVIDIA® GPU 지원 패키지를 활용하여, 생성된 코드를 자동으로 NVIDIA Jetson™ 및 DRIVE™ 플랫폼에 크로스 컴파일링하고 배포하십시오.

NVIDIA Jetson 플랫폼으로의 프로토타이핑.

MATLAB 및 생성된 코드로부터 주변기기와 센서에 액세스

MATLAB으로부터 NVIDIA 타겟과 원격 통신을 하여, 웹캠과 기타 지원 주변기기에서 데이터를 획득하여 빠르게 프로토타이핑을 하십시오. 단독 실행을 위해 보드에 제공하는 주변기기 인터페이스 코드와 함께 알고리즘을 구축하고 배포하십시오.

MATLAB 및 생성된 코드로부터 주변기기와 센서에 액세스.

프로토타이핑에서 시스템 양산으로 이동

GPU Coder와 Embedded Coder®를 이용하여, 생성된 CUDA 코드와 MATLAB 코드를 하나씩 비교해 가면서 대화형으로 추적하십시오. SIL(software-in-the-loop) 및 PIL(processor-in-the-loop) 테스팅을 이용하여, 하드웨어에서 실행 중인 생성된 코드의 결과를 확인하십시오.

GPU Coder와 Embedded Coder를 활용한 대화형 추적 가능성 보고서.

Optimize the Generated Code

GPU Coder automatically optimizes the generated code. Use design patterns to further increase performance.

Minimize CPU-GPU Memory Transfers and Optimize Memory Usage

GPU Coder automatically analyzes, identifies, and partitions segments of MATLAB code to run on either the CPU or GPU. It also minimizes the number of data copies between CPU and GPU. Use profiling tools to identify other potential bottlenecks.

Profile reports identifying potential bottlenecks.

Invoke Optimized Libraries

Code generated with GPU Coder calls optimized NVIDIA CUDA libraries, including TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS, and Thrust. Code generated from MATLAB toolbox functions are mapped to optimized libraries whenever possible.

Generated code calling functions in the optimized cuFFT CUDA library.

Use Design Patterns for Further Acceleration

Design patterns such as stencil processing use shared memory to improve memory bandwidth. They are applied automatically when using certain functions such as convolution. You can also manually invoke them using specific pragmas.

The stencil processing design pattern.

알고리즘 가속화

CUDA 코드를 생성하고 컴파일하여 MATLAB 내부에서 사용하십시오.

GPU를 이용한 알고리즘 가속화

생성된 CUDA 코드를 MATLAB 코드에서 MEX 함수로서 호출하여, 실행 속도를 높이십시오. 다만 성능은 MATLAB 코드의 내용에 따라 달라질 수 있습니다. 생성된 MEX 함수를 프로파일링하여 병목 현상을 찾아내고 최적화에 집중하십시오.

Accelerate Simulink Simulations Using NVIDIA GPUs

When used with Simulink Coder, GPU Coder accelerates compute-intensive portions of MATLAB Function blocks in your Simulink models on NVIDIA GPUs.

최신 기능

Simulink Support

Generate, build, and deploy Simulink models to NVIDIA GPUs

Deep Learning Simulink Support

Generate, build, and deploy deep learning networks in Simulink models to NVIDIA GPUs

Persistent Variables

Create persistent memory on the GPU

Wavelet Toolbox Code Generation

Generate code for FFT-based FIR filtering and Short-time Fourier transform using dwt, dwt2, modwt, and modwtmra

Deep Learning

Generate code for custom layers

Multi-Input Networks

Generate code for networks that have multiple inputs

Long Short-Term Memory (LSTM) Networks

Generate code for convolutional LSTM and network activations

IO Block Library for NVIDIA Hardware

Access NVIDIA hardware peripherals using GPU Coder Support Package for NVIDIA GPUs

See the release notes for details on any of these features and corresponding functions.