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

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

지원 툴박스 및 함수

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

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

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

생성된 코드의 성능 최적화

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

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

통합에 앞서 생성된 코드에 대해 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++ 코드 생성

향상된 식별자 이름 지정, 더 많은 네임 스페이스 사용 및 더 자연스러운 파일 레이아웃

데이터형 지원

datetime형, duration형, table형, timetable형 및 categorical형 배열에 대해 확장된 코드 생성

고유값 및 고유벡터

eig 함수에 대해 확장된 코드 생성 지원

함수 인라인 확장을 위한 전역 설정

생성된 코드의 가독성 및 속도 미세 조정

지역 변수 선언

지역 변수 선언 순서의 더 명확한 패턴

사용자 지정 딥러닝 계층

Intel 및 ARM CPU용 사용자 지정 계층의 코드 생성

장단기 기억(LSTM) 신경망

Intel CPU용 LSTM, 상태 기반 LSTM 및 양방향 LSTM을 위한 코드 생성

Intel Mac용 딥러닝

macOS Intel CPU에서 실행되는 딥러닝 신경망에서 코드 생성

위 기능과 관련 함수에 대한 자세한 내용은 릴리스 정보를 참조하십시오.

Panel Navigation

MATLAB에서 C 코드를 생성하는 기쁨

MATLAB Coder 사용의 모범 사례와 팁에 대해 배워보고 Delphi, Baker Hughes, iSonea, dorsaVi 등의 기업에서 생성된 코드를 성공적으로 활용한 사례에 대해 알아봅니다.