MATLAB Coder

 

MATLAB Coder

MATLAB 코드로부터 C 및 C++ 코드 생성

시작하기:

MATLAB Coder 무료 시작 가이드

MATLAB Coder를 사용하여 MATLAB 알고리즘에서 독립 실행형 ANSI-C 소스 코드 및 MEX 파일을 생성하는 모범 사례를 알아볼 수 있습니다.

시작하기

어디서든 실행

가독성과 이식성이 좋은 ANSI C/C++ 소스 코드를 생성할 수 있습니다. 사용료 없이 코드를 배포하세요.

사용료 없이 알고리즘 배포

각종 C/C++ 컴파일러를 사용하여 컴파일하고, 데스크탑 시스템에서부터, 모바일 기기, 임베디드 하드웨어에 이르기까지 어떤 하드웨어에서도 생성된 코드를 실행할 수 있습니다. 생성된 코드는 사용료 없이 상용 응용 프로그램에서 고객에게 무료로 배포할 수 있습니다.

행렬 곱셈을 위해 생성된 코드.

행렬 곱셈을 위해 생성된 코드.

지원 툴박스 및 함수

MATLAB Coder는 다양하고 폭넓은 MATLAB 언어 기능에 대해 코드를 생성할 수 있으며 설계 디자이너는 이렇게 생성된 코드로 더 큰 시스템의 구성요소가 되는 알고리즘을 개발할 수 있습니다. MATLAB 및 툴박스의 2,500개가 넘는 연산자 및 함수가 코드 생성을 지원합니다.

MATLAB에서 C++ 코드 배포

생성된 코드를 객체 지향 C++ 소스 코드에 통합할 수 있습니다.

네임스페이스를 사용한 C++ 코드 생성

MATLAB Coder는 네임스페이스에서 C++ 코드를 생성할 수 있으므로 동일한 함수 또는 데이터형 이름을 갖는 다른 소스 코드와 쉽게 통합할 수 있습니다. 코드 생성기가 모든 생성된 함수와 유형 정의를 네임스페이스로 패키징합니다.

네임스페이스로 동일한 데이터형 이름을 갖는 변수를 통합하는 생성된 코드.

네임스페이스로 동일한 데이터형 이름을 갖는 변수를 통합하는 생성된 코드.

MATLAB 클래스에서 C++ 클래스 생성

MATLAB Coder는 MATLAB 코드의 클래스로부터 값 클래스, 핸들 클래스, 시스템 객체 등의 C++ 클래스를 생성할 수 있습니다. 이렇게 생성된 코드는 C++ 라이브러리 또는 실행 파일로 컴파일할 수 있고, 기존 C++ 소스 코드에 통합할 수 있습니다.

생성된 함수 인터페이스에서 동적으로 할당되는 C++ 배열 사용

컴파일 타임에 배열 크기를 알 수 없거나 한계가 미리 정의된 임계값을 벗어나는 배열을 받거나 반환하는 MATLAB 함수에 대한 C++ 코드를 생성할 수 있습니다. 이렇게 생성된 코드에서는 배열 메모리가 동적으로 할당되고 coder::array라는 클래스 템플릿으로 구현됩니다. 예외에 안전한 메모리 할당 해제 기능 외에도 coder::array는 동적 배열을 액세스 및 관리하는 API를 제공합니다.

동적으로 할당된 배열을 생성된 함수에 전달.

동적으로 할당된 배열을 생성된 함수에 전달.

딥러닝 신경망 및 머신러닝 모델 배포

훈련된 딥러닝 신경망과 머신러닝 모델로부터 코드를 생성할 수 있습니다.

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

ResNet-50, MobileNet-v2를 비롯한 다양한 훈련된 딥러닝 신경망과 Deep Learning Toolbox의 LSTM 및 기타 계층을 Intel® 및 ARM® Cortex® CPU에 배포할 수 있습니다. 훈련된 딥러닝 신경망 이외에도, 전처리나 후처리에 사용되는 코드를 생성하여 전체 알고리즘을 배포할 수 있습니다.

딥러닝 추론을 위한 최적화된 코드 생성

MATLAB Coder는 알고리즘에 대해 추론을 실행하는 데 필요한 코드만을 생성하므로 여타 딥러닝 솔루션보다 코드의 속도가 빠르고 메모리를 적게 사용합니다. 생성된 코드는 Intel 프로세서에 대해서는 Intel MKL-DNN을, ARM Cortex 프로세서에 대해서는 ARM Compute Library를 비롯한 최적화된 라이브러리를 호출합니다. GPU Coder를 사용하면 최신 NVIDIA® GPU에서 실행되는 CUDA® 코드를 생성하여 알고리즘을 가속하거나 배포할 수 있습니다.

종단간 머신러닝 모델 배포

전처리, 후처리를 포함한 전체 머신러닝 알고리즘에 대한 C/C++ 코드를 생성하여 통계량과 머신러닝 모델을 배포할 수 있습니다. C/C++ 예측 코드를 재생성하지 않고, 배포된 모델의 파라미터를 업데이트할 수 있습니다.

머신러닝 모델의 코드 생성 워크플로.

머신러닝 모델의 코드 생성 워크플로.

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

알고리즘을 C/C++로 자동 변환하여 신속하게 하드웨어에 적용할 수 있습니다.

데스크탑 및 클라우드 플랫폼에서 프로토타이핑

MATLAB Coder 앱 또는 명령줄에서 함수를 사용하여 신호 처리, 컴퓨터 비전, 딥러닝, 제어 시스템 또는 기타 응용 분야에 대해 신속하게 코드를 생성한 후 하드웨어에 맞게 코드를 컴파일할 수 있습니다.

임베디드 및 모바일 플랫폼에서 프로토타이핑

직접 생성된 코드를 응용 프로그램에 통합하여 타겟 기기를 지정할 수 있습니다. MATLAB Support Package for Raspberry Pi 를 사용하면 Raspberry Pi에 대한 절차를 자동화할 수 있습니다.

임베디드 및 모바일 플랫폼에서의 신속한 알고리즘 프로토타이핑.

임베디드 및 모바일 플랫폼에서의 신속한 알고리즘 프로토타이핑.

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

MATLAB Coder를 Embedded Coder와 함께 사용하여 표준 ANSI/ISO C/C++ 코드보다 실행 속도가 빠른 프로세서 특정 내장 함수를 활용하는 코드를 생성할 수 있습니다.

생성된 독립 실행형 코드의 실행 시간 프로파일링.

생성된 독립 실행형 코드의 실행 시간 프로파일링.

소프트웨어와 통합

MATLAB 알고리즘을 사용 소프트웨어 환경에서 C/C++ 코드로 재사용할 수 있습니다.

통합이 손쉬운 간단한 인터페이스로 코드 생성

생성된 코드는 자연스럽게 C/C++ 형식을 사용하므로 외부 코드와의 통합이 간편합니다. 생성된 코드를 소스 코드 또는 라이브러리로 통합할 수 있습니다. 신뢰할 수 있는 C/C++ 라이브러리 또는 구성요소를 MATLAB에 가져와 더 충실한 테스트를 수행할 수 있으며, 이는 생성된 코드에서도 자동으로 호출됩니다.

MATLAB Coder와 Embedded Coder를 사용하는 대화형 추적성 보고서.

MATLAB Coder와 Embedded Coder를 사용하는 대화형 추적성 보고서.

생성된 코드의 성능 최적화

실행 속도, 메모리 사용량, 가독성, 이식성 간의 균형을 조정하도록 최적화를 적용할 수 있습니다. 병목 지점을 찾아내려면 프로파일링 툴을 사용할 수 있습니다. 성능을 더욱 높이기 위해 멀티코어 OpenMP 코드를 생성하고 사용 가능한 경우 LAPACK, BLAS 그리고 FFTW와 같은 최적화된 라이브러리를 호출할 수 있습니다.

OpenMP를 호출하여 생성된 코드의 예.

OpenMP를 호출하여 생성된 코드의 예.

통합에 앞서 생성된 코드에 대해 MATLAB 테스트 재사용

기존 MATLAB 테스트를 재사용하여 대화형 MATLAB 환경에서 생성된 코드의 동작을 검증할 수 있습니다. MATLAB 단위 테스트 프레임워크를 사용하여 생성된 C/C++ 코드를 검증하는 데 사용할 수 있는 다양한 회귀 테스트를 신속하게 개발할 수 있습니다.

통합에 앞서 생성된 코드의 동작 검증.

통합에 앞서 생성된 코드의 동작 검증.

알고리즘 속도 가속화

C/C++ 코드를 생성하고 MATLAB 내에서 사용할 수 있도록 컴파일할 수 있습니다.

CPU에서 알고리즘 속도 가속화

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

성능의 병목 지점을 찾기 위한 MEX 함수의 프로파일링.

성능의 병목 지점을 찾기 위한 MEX 함수의 프로파일링.

GPU를 사용하여 알고리즘 속도 가속화

Parallel Computing Toolbox를 사용하여 MATLAB에서 실행되는 알고리즘 속도를 가속화할 수 있습니다. GPU Coder를 사용하여 가속화 또는 배포를 목적으로 NVIDIA GPU에서 실행할 수 있는 CUDA 코드를 생성할 수 있습니다.