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™를 사용하십시오.
시작하기:
사용료 없이 알고리즘 배포
각종 C/C++ 컴파일러를 사용하여 컴파일하고, 데스크탑 시스템에서부터, 모바일 기기, 임베디드 하드웨어에 이르기까지 어떤 하드웨어에서도 생성된 코드를 실행할 수 있습니다. 생성된 코드는 사용료 없이 상용 응용 프로그램에서 고객에게 무료로 배포할 수 있습니다.
MATLAB Coder 성공 사례
다양한 업계의 엔지니어와 과학자가 MATLAB Coder를 사용하여 각종 응용 분야에 C/C++ 코드를 생성하는 사례를 살펴보십시오.
지원 툴박스 및 함수
MATLAB Coder는 다양하고 폭넓은 MATLAB 언어 기능에 대해 코드를 생성할 수 있으며 설계 디자이너는 이렇게 생성된 코드로 더 큰 시스템의 구성요소가 되는 알고리즘을 개발할 수 있습니다. MATLAB 및 툴박스의 2,500개가 넘는 연산자 및 함수가 코드 생성을 지원합니다.
네임스페이스를 사용한 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++ 예측 코드를 재생성하지 않고, 배포된 모델의 파라미터를 업데이트할 수 있습니다.
데스크탑 및 클라우드 플랫폼에서 프로토타이핑
MATLAB Coder 앱 또는 명령줄에서 함수를 사용하여 신호 처리, 컴퓨터 비전, 딥러닝, 제어 시스템 또는 기타 응용 분야에 대해 신속하게 코드를 생성한 후 하드웨어에 맞게 코드를 컴파일할 수 있습니다.
임베디드 및 모바일 플랫폼에서 프로토타이핑
직접 생성된 코드를 응용 프로그램에 통합하여 타겟 기기를 지정할 수 있습니다. MATLAB Support Package for Raspberry Pi 를 사용하면 Raspberry Pi에 대한 절차를 자동화할 수 있습니다.
프로토타이핑에서 프로덕션으로
MATLAB Coder를 Embedded Coder와 함께 사용하여 표준 ANSI/ISO C/C++ 코드보다 실행 속도가 빠른 프로세서 특정 내장 함수를 활용하는 코드를 생성할 수 있습니다.
통합이 손쉬운 간단한 인터페이스로 코드 생성
생성된 코드는 자연스럽게 C/C++ 형식을 사용하므로 외부 코드와의 통합이 간편합니다. 생성된 코드를 소스 코드 또는 라이브러리로 통합할 수 있습니다. 신뢰할 수 있는 C/C++ 라이브러리 또는 구성요소를 MATLAB에 가져와 더 충실한 테스트를 수행할 수 있으며, 이는 생성된 코드에서도 자동으로 호출됩니다.
생성된 코드의 성능 최적화
실행 속도, 메모리 사용량, 가독성, 이식성 간의 균형을 조정하도록 최적화를 적용할 수 있습니다. 병목 지점을 찾아내려면 프로파일링 툴을 사용할 수 있습니다. 성능을 더욱 높이기 위해 멀티코어 OpenMP 코드를 생성하고 사용 가능한 경우 LAPACK, BLAS 그리고 FFTW와 같은 최적화된 라이브러리를 호출할 수 있습니다.
통합에 앞서 생성된 코드에 대해 MATLAB 테스트 재사용
기존 MATLAB 테스트를 재사용하여 대화형 MATLAB 환경에서 생성된 코드의 동작을 검증할 수 있습니다. MATLAB 단위 테스트 프레임워크를 사용하여 생성된 C/C++ 코드를 검증하는 데 사용할 수 있는 다양한 회귀 테스트를 신속하게 개발할 수 있습니다.
CPU에서 알고리즘 속도 가속화
생성된 코드를 MATLAB 코드에서 MEX 함수로 호출하여 실행 속도를 높일 수 있으나 성능은 MATLAB 코드의 특성에 따라 다를 수 있습니다. 생성된 MEX 함수를 프로파일링하여 병목 지점을 찾아내어 최적화 작업을 이 지점에 집중할 수 있습니다.
GPU를 사용하여 알고리즘 속도 가속화
Parallel Computing Toolbox™를 사용하여 MATLAB에서 실행되는 알고리즘 속도를 가속화할 수 있습니다. GPU Coder를 사용하여 가속화 또는 배포를 목적으로 NVIDIA GPU에서 실행할 수 있는 CUDA 코드를 생성할 수 있습니다.