GPU Coder

 

GPU Coder

NVIDIA GPU에서 사용할 수 있는 CUDA 코드를 생성할 수 있습니다

시작하기:

빠르고 유연한 CUDA 코드 생성

최적화된 CUDA 코드를 생성할 수 있습니다. 사용료 없이 코드를 배포하세요.

사용료 없이 알고리즘 배포

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

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

Airbus - NVIDIA Jetson TX2에서의 자동 결함 탐지 프로토타이핑 사례.

지원 툴박스 및 함수로부터 코드 생성하기

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

MATLAB 언어 및 툴박스의 코드 생성 지원.

레거시 코드 통합

레거시 코드 통합 기능을 활용하여 신뢰할 수 있는 또는 최적화 수준이 높은 CUDA 코드를 MATLAB 알고리즘에 통합하여 테스트할 수 있습니다. 그리고 생성된 코드로부터도 동일한 CUDA 코드를 호출할 수 있습니다.

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

Simulink 모델에서 CUDA 코드 생성

Simulink에서 모델을 만들고 최적화된 CUDA 코드를 생성할 수 있습니다.

시뮬레이션 실행 및 NVIDIA GPU용 최적화 코드 생성

GPU Coder와 Simulink Coder™를 함께 사용하면 NVIDIA GPU에서 Simulink 모델의 MATLAB Function 블록 중 계산 집약적인 부분의 속도가 빨라집니다. 이어서 Simulink 모델에서 최적화된 CUDA 코드를 생성하고 NVIDIA GPU 타겟에 배포할 수 있습니다.

GPU에서 실행되는 소벨 경계 검출기의 Simulink 모델

종단간 딥러닝 알고리즘 배포

Deep Learning Toolbox™로부터 ResNet-50, SegNet, LSTM 등 학습된 다양한 딥러닝 신경망을 Simulink 모델에 사용하고 NVIDIA GPU에 배포할 수 있습니다. 훈련된 딥러닝 신경망 이외에도, 전처리나 후처리에 사용되는 코드를 생성하여 전체 알고리즘을 배포할 수 있습니다.

신호 기록, 파라미터 조정 및 코드 동작의 수치적 검증

GPU Coder와 Simulink Coder를 함께 사용하면, 외부 모드 시뮬레이션을 이용하여 실시간으로 신호를 기록하고 파라미터를 조정할 수 있습니다. GPU Coder와 Embedded Coder를 함께 사용하여 생성된 코드가 시뮬레이션 동작과 일치하는지 수치적으로 검증하는 SIL 및 PIL 테스트를 실행할 수 있습니다.

딥러닝 신경망에서 CUDA 코드 생성

학습된 딥러닝 신경망을 Deep Learning Toolbox를 이용하여 배포할 수 있습니다.

종단간 딥러닝 알고리즘 배포

Deep Learning Toolbox로부터 ResNet-50, SegNet, LSTM 등 학습된 다양한 딥러닝 신경망을 NVIDIA GPU에 배포할 수 있습니다. 미리 정의된 딥러닝 계층을 사용하거나 특정 응용 분야에 맞는 사용자 지정 계층을 정의할 수 있습니다. 훈련된 딥러닝 신경망 이외에도, 전처리나 후처리에 사용되는 코드를 생성하여 전체 알고리즘을 배포할 수 있습니다.

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

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

cuDNN으로 Titan V GPU에서 VGG-16을 사용한 단일 이미지 추론.

TensorRT를 사용한 추가 최적화

NVIDIA TensorRT, 고성능 딥러닝 추론 최적화 함수, 런타임과 통합되는 코드를 생성할 수 있습니다. 표준 FP32 데이터형에 대해 추가적인 성능 향상을 원하면 INT8 또는 FP16 데이터형을 사용할 수 있습니다.

TensorRT 및 INT8 데이터형을 통한 실행 속도 개선.

딥러닝 양자화

딥러닝 신경망를 양자화하여 메모리 사용량을 줄이고 추론 성능을 향상시킬 수 있습니다. Deep Network Quantizer 앱을 사용하여 성능 향상과 추론 정확도 사이의 장단점을 분석하고 시각화할 수 있습니다.

생성된 코드 최적화

GPU Coder는 생성된 코드를 자동으로 최적화합니다. 설계 패턴을 활용하면 성능을 더욱 개선할 수 있습니다.

CPU-GPU 메모리 전달 최소화 및 메모리 사용량 최적화

GPU Coder는 MATLAB 코드 세그먼트를 자동으로 분석, 식별, 구분하여 CPU 또는 GPU에서 실행합니다. 또한, CPU와 GPU 사이의 데이터 복사 횟수도 최소화합니다. 프로파일링 툴을 사용하면 잠재적인 기타 병목 부분을 찾아낼 수 있습니다.

잠재적인 병목 현상을 식별하는 프로파일 리포트.

최적화된 라이브러리 호출

GPU Coder를 통해 생성된 코드는 TensorRT, cuDNN, cuSolver, cuFFT, cuBLAS, Thrust 등 최적화된 NVIDIA CUDA 라이브러리를 호출합니다. MATLAB 툴박스 함수에서 생성된 코드는 가능한 경우 최적화된 라이브러리에 매핑됩니다.

최적화된 cuFFT CUDA 라이브러리에서 함수를 호출하는 생성된 코드.

추가적인 속도 향상을 위한 설계 패턴 활용

스텐실 처리 등의 설계 패턴은 공유 메모리를 활용하여 메모리 대역폭을 개선할 수 있습니다. 이런 설계 패턴은 컨벌루션과 같은 특정 함수를 사용하면 자동으로 적용됩니다. 특정 프라그마를 사용하여 직접 호출할 수도 있습니다.

스텐실 처리 설계 패턴.

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

알고리즘을 자동으로 CUDA 코드로 변환하여 신속하게 하드웨어에 접근할 수 있습니다.

NVIDIA Jetson과 DRIVE 플랫폼에서의 프로토타이핑

GPU Coder Support Package for NVIDIA GPU를 사용하여 생성된 코드를 자동으로 NVIDIA Jetson과 DRIVE 플랫폼으로 교차 컴파일 및 배포할 수 있습니다.

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

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

MATLAB에서 NVIDIA 타겟과 원격 통신을 하여, 웹캠과 기타 지원 주변기기에서 데이터를 획득하여 조기 프로토타이핑이 가능합니다. 알고리즘과 주변기기 인터페이스 코드를 보드에 배포하여 단독 실행이 가능합니다.

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

프로토타이핑에서 프로덕션으로

GPU Coder와 Embedded Coder®를 사용하면 대화형 방식으로 생성된 CUDA 코드와 MATLAB 코드를 나란히 놓고 비교, 추적할 수 있습니다. SIL 및 PIL 테스트를 이용하여 하드웨어에서 실행되는 생성된 코드의 수치적 동작을 검증할 수 있습니다.

GPU Coder와 Embedded Coder를 사용하는 대화형 추적성 리포트.

알고리즘 가속화

CUDA 코드를 생성하고 컴파일하여 MATLAB 및 Simulink에서 사용할 수 있습니다.

MATLAB에서 GPU를 사용한 알고리즘 가속화

생성된 코드를 MATLAB 코드에서 MEX 함수로서 호출하여 실행 속도를 높일 수 있으나 성능은 MATLAB 코드의 특성에 따라 다를 수 있습니다. 생성된 MEX 함수를 프로파일링하여 병목 현상을 찾아내고 최적화에 집중할 부분이 어딘지 알 수 있습니다.

NVIDIA GPU를 사용한 Simulink 시뮬레이션 가속화

GPU Coder와 Simulink Coder를 함께 사용하면 NVIDIA GPU에서 여러분의 Simulink 모델에 있는 MATLAB 함수 블록 중에 계산 집약적인 부분의 속도가 빨라집니다.