MATLAB Coder

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

 

MATLAB Coder™는 데스크탑 시스템부터 임베디드 하드웨어까지 다양한 하드웨어 플랫폼에서 사용할 수 있도록 MATLAB® 코드로부터 C 및 C++ 코드를 생성합니다. 대부분의 MATLAB 언어 및 다양한 툴박스를 지원합니다. 생성된 코드를 프로젝트에 소스 코드, 정적 라이브러리 또는 동적 라이브러리로 통합할 수 있습니다. 이렇게 생성된 코드는 가독성 및 이식성이 좋습니다. 이 코드를 기존 C 및 C++ 코드와 라이브러리의 주요 부분과 결합할 수 있습니다. 생성된 코드는 MATLAB에서 사용할 수 있도록 MEX 함수로 패키징할 수도 있습니다.

MATLAB Coder를 Embedded Coder®와 함께 사용하면 코드 사용자 맞춤 지정, 대상 특정 최적화, 코드 추적성, SIL(software-in-the-loop) 및 PIL(processor-in-the-loop) 검증이 가능합니다.

MATLAB 프로그램을 독립형 응용 프로그램으로 배포하려면 MATLAB Compiler™를 사용할 수 있습니다. 다른 프로그래밍 언어와 통합할 수 있도록 소프트웨어 구성요소를 생성하려면 MATLAB Compiler SDK™를 사용하십시오.

시작하기:

어디서든 실행

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

사용료 없이 알고리즘 배포

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

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

Delphi의 자동차 능동 안전 시스템용 레이더 센서 정렬 알고리즘 개발 사례

지원 툴박스 및 함수

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

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

MATLAB에서 C++ 코드 배포

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

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

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

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

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

MATLAB Coder는 MATLAB 코드의 클래스로부터 값 클래스, 핸들 클래스, 시스템 객체 등의 C++ 클래스를 생성합니다. 이렇게 생성된 코드는 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++로 자동 변환하여 신속하게 하드웨어에 적용할 수 있습니다.

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

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를 사용하는 대화형 추적 가능 보고서

생성된 코드의 성능 최적화

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

성능의 병목 지점을 찾기 위해 MEX 함수를 프로파일링합니다.

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

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

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

알고리즘 속도 가속화

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

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

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

성능의 병목 지점을 찾기 위해 MEX 함수를 프로파일링합니다.

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

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

최신 기능

C++ 코드

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

C++ 코드

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

Coder 형식 편집기

대화형 방식으로 입력 유형 만들고 편집

더 빠른 FFT

FFT(고속 푸리에 변환) 함수에 대한 생성 코드의 성능 개선

datetime형 및 타임테이블

datetime형 배열 및 timetable형에 대한 코드 생성

Optimization Toolbox 코드 생성

quadprog를 사용하여 선형 제약 조건 및 2차 목적 함수를 갖는 문제에 대한 C 코드 생성

장기 단기 메모리(LSTM) 네트워크

LSTM과 같은 순환 신경망에 대한 코드 생성

딥러닝 네트워크

DenseNet-201 및 Xception에 대한 코드 생성

이 기능과 그에 상응하는 함수의 자세한 내용은 릴리스 정보를 참조하십시오.

Panel Navigation

MATLAB에서 C 코드를 생성하는 즐거움

MATLAB Coder를 사용 팁 및 모범 사례에 대해 알아보고 Delphi, Baker Hughes, iSonea, dorsaVi 등의 회사에서 생성된 코드를 성공적으로 적용한 사례에 대해 읽어보세요.