주요 특징

MATLAB Coder™를 사용하면 생성된 코드를 프로젝트에 소스 코드, 정적 라이브러리 또는 동적 라이브러리로 통합할 수 있습니다. 생성된 코드를 응용 프로그램에 통합하도록 지원하는 템플릿으로 예제 메인 함수가 제공됩니다. 또한, 코드를 생성하기 위해 외부 코드를 MATLAB 코드에 통합할 수 있습니다. 그러한 외부 코드는 외부 라이브러리, 오브젝트 파일 또는 C/C++ 소스 코드가 될 수 있습니다.

MATLAB ® Coder™로 생성한 코드를 부모 Microsoft ® Visual Studio ® 프로젝트에 통합

Embedded Coder®와 함께 MATLAB Coder를 사용하면 코드 효율을 최적화하고 맞춤형 코드를 생성할 수 있습니다. SIL(software-in-the-loop) 및 PIL(processor-in-the-loop) 실행을 사용하여 생성된 코드의 수치적 동작을 검증할 수도 있습니다.

MATLAB Coder를 Simulink Coder™와 함께 사용하면 MATLAB 코드가 포함된 Simulink® 모델로부터 C 코드를 생성할 수 있습니다.

또한, MATLAB 프로그램(그래픽 요소 포함)을 C/C++, .NET, Java® 및 Python®으로 작성된 사용자 지정 응용 프로그램으로 통합한 후 MATLAB Compiler SDK™를 사용하여 바탕화면, 데스크톱, 웹 또는 엔터프라이즈 시스템에 배포할 수 있습니다. MATLAB Central은 이러한 방식을 사용하는 경우에 대한 자세한 비교를 제공합니다.

MATLAB Coder 앱(좌)과 생성된 C 코드를 보여주는 코드 생성 보고서(우)

코드 생성을 위한 MATLAB 언어 및 툴박스 지원

MATLAB Coder는 대규모 시스템의 구성요소로서 알고리즘을 개발하는 설계 엔지니어들이 흔히 사용하는 매우 다양한 MATLAB 언어 기능으로부터 코드를 생성합니다. 여기에는 다음과 같이 MATLAB 및 함께 제공되는 툴박스에서 이용할 수 있는 1200개 이상의 연산 및 함수가 포함됩니다.


MATLAB Coder의 사례 이용

MATLAB Coder를 사용하면 MATLAB에서 알고리즘을 개발 중인 설계 엔지니어가 해석과 이식이 가능한 C/C++ 코드를 생성할 수 있습니다. 이렇게 생성된 코드로 다음을 수행할 수 있습니다.

  • MATLAB 알고리즘을 컴파일된 라이브러리 구성요소로서 맞춤형 시뮬레이터와 같은 다른 소프트웨어에 통합합니다.
  • 컴파일된 C/C++ 코드를 호출하는 MATLAB 실행 파일(MEX 함수)을 생성하여 계산 집약적인 MATLAB 코드 부분을 가속화합니다
  • MATLAB 알고리즘을 PC에서 독립 실행 파일로 프로토타이핑하고 소프트웨어 엔지니어에게 생성된 코드를 설계 사양으로 전달합니다.
  • 임베디드 프로세서에서 MATLAB 알고리즘을 구현하고 검증합니다.
MATLAB ® Coder™로 생성한 코드를 부모 Microsoft ® Visual Studio ® 프로젝트에 통합
Generate a MEX-file to accelerate simulation of a DCT-based image compression or decompression algorithm.
Generate a MEX-file to accelerate simulation of a DCT-based image compression or decompression algorithm.
코드 생성 및 실행 파일을 작성하여 데스크톱 PC에 프로토타이핑
MATLAB Coder™로 생성한 코드를 Apple의 Xcode IDE를 사용하여 iPhone 또는 iPad 앱에 통합
MATLAB Coder에서 사례 활용

MATLAB에서 코드 생성

MATLAB 알고리즘을 C 코드로 변환하려면 구현 요구 사항을 지정해야 합니다. MATLAB Coder 앱 및 이에 해당하는 명령줄 기능은 계속해서 MATLAB 언어를 사용하면서 이러한 반복 프로세스를 진행할 수 있도록 안내합니다.

MATLAB Coder를 사용하면 MATLAB 코드를 분석하여 입력 데이터 타입과 크기를 제안함으로써 코드를 생성하기 위한 MATLAB 알고리즘을 준비할 수 있습니다. MATLAB 내에서 실행할 수 있도록 컴파일된 코드를 래핑하는 MEX 함수를 생성함으로써 설계한 알고리즘에 대한 코드 생성 호환성이 보장됩니다. MATLAB Coder는 MATLAB 알고리즘이 코드 생성에 호환되기 위해 수정해야 하는 모든 오류를 식별해주는 보고서를 생성합니다. MATLAB 알고리즘이 코드 생성에 적합할 때까지 오류 수정과 MEX 함수 재생성을 반복합니다.

이제 MATALB 알고리즘으로부터 성능 목적으로 튜닝을 거친 C 또는 C++ 소스 코드 또는 MEX 함수를 만들 수 있습니다.

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


코드 검증 및 가속화를 위한 MEX 함수 생성

MEX 함수는 원본 MATLAB 코드 대신 호출 가능하며, 다음을 수행할 수 있습니다.

  • 컴파일된 코드를 다시 MATLAB에서 테스트 및 검증
  • 실행 가속화

3단계 반복 워크플로의 일환으로 MEX 함수를 생성 및 테스트하여 원본 MATLAB 코드와 동일한 기능을 제공하는지의 여부를 검증합니다.

코드를 생성하기 전에 MEX 함수를 테스트함으로써 생성된 코드에서 발견하기 어려운 런타임 오류를 발견 및 수정할 수 있습니다. MATLAB에서 MEX 함수를 실행하면 배열 경계 확인, 차원 확인 및 MATLAB 함수으로터 생성된 코드에서 메모리 무결성 위반 감지를 수행하는 메모리 무결성 확인을 수행할 수 있습니다. 위반 사항이 감지되면 MATLAB은 실행을 중단하고 진단 메시지를 제공합니다.

MATLAB Coder 앱은 원본 MATLAB 코드를 실행하기 위해 사용되는 동일한 입력 값을 사용하고 MEX 함수의 결과와 원본 MATLAB 코드의 결과를 비교하여 테스트를 수행합니다.

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


MATLAB 알고리즘 실행 가속화

MATLAB 알고리즘을 가속화하기 위한 전반적인 전략의 일환으로 원본 MATLAB 코드를 대체하기 위한 MEX 함수를 생성하면 실행 속도를 높일 수 있습니다.

Generate a MEX-file to accelerate simulation of a DCT-based image compression or decompression algorithm.

속도 개선 정도는 알고리즘의 특성에 따라 다릅니다. 속도 개선 정도를 결정하기 위한 가장 좋은 방법은 모범 사례를 따르고 MATLAB Coder를 사용하여 MEX 함수를 생성한 후 속도 개선을 우선 테스트하는 것입니다. 알고리즘에 다음이 포함된 경우 속도가 향상될 가능성이 높습니다.

  • 단정밀도 데이터 유형
  • 고정 소수점 데이터 유형
  • 상태가 있는 루프
  • 벡터화될 수 없는 코드

반면에 알고리즘에 다음과 같은 명시적인 MATLAB 멀티스레드 계산이 포함된 경우 속도가 향상되지 않을 가능성이 높습니다. fftsvd, IPP 또는 BLAS 라이브러리를 호출하는 함수, FFT 등과 같이 PC에서 MATLAB을 최적화하여 실행하는 함수 또는 코드를 벡터화할 수 있는 알고리즘.

일부 응용 프로그램의 경우 벡터화 및 선할당 사용, System objects™ 및 MEX 함수 생성 기능이 있는 Parallel Computing Toolbox™ 등의 서로 다른 기법을 조합하여 멀티코어 프로세서를 활용하고 MATLAB 알고리즘을 가속화할 수 있습니다.

In this webinar you will learn how to use to various techniques to accelerate your communications system simulations in MATLAB and Simulink.

OpenMP를 사용한 멀티코어 지원 코드 생성

MATLAB Coder는 parfor-loops에서 멀티코어 지원 코드를 생성할 수 있습니다. A parfor-loop, 표준 MATLAB과 같이 for-loop, 다양한 값으로 일련의 명령문 실행 다중 코어에서 parfor-loop 반복이 병렬로 실행되기 때문에 루프 반복은 기타 반복에 종속되지 않아야 합니다. MATLAB Coder에서 이 요구 사항이 충족되지 않았다고 판단된 경우 parfor-loops를 표준 for-loops에서 멀티코어 지원 코드를 생성할 수 있습니다.

MATLAB Coder는 OpenMP(Open Multiprocessing) 응용 프로그램 인터페이스를 사용하여 parfor-loops으로 작성된 MATLAB 코드에서 공유 메모리 멀티코어 코드 생성을 지원합니다. 생성된 코드에는 OpenMP 응용 프로그램 인터페이스를 지원하는 컴파일러가 필요합니다. MATLAB Coder는 가용 코어를 최대한 사용하지만 사용자는 사용할 스레드 수를 지정할 수 있습니다. 병렬 배포를 원하는 경우 Parallel Computing Toolbox를 사용합니다.

OpenMP를 호출하는 생성 코드의 예시

Simulink CoderEmbedded Coder를 사용하여 MATLAB Coder의 기능을 확장할 수 있습니다.


Simulink Coder와 MATLAB Coder

시뮬레이션 및 코드 생성을 위한 MATLAB 함수 블록을 사용하면 MATLAB 코드를 Simulink 모델로 통합하기 위해 MATLAB 서브세트에서 작성된 MATLAB 알고리즘을 통합할 수 있습니다. Simulink Coder는 이처럼 MATLAB 코드가 포함된 Simulink 모델로부터 코드를 생성할 수 있습니다.

Simulink의 레이더 추적 모델. 이 모델은 MATLAB에서 작성하고 MATLAB 함수 블록을 사용하여 호출한 Kalman 필터링 알고리즘을 구현합니다.

Embedded Coder와 MATLAB Coder

Embedded Coder와 함께 MATLAB Coder를 사용하면 코드 효율을 최적화하고 맞춤형 코드를 생성할 수 있습니다. Embedded Coder에서는 지원되는 임베디드 프로세서, 대상 신속 프로토타입화 보드 및 대량 생산에 사용되는 마이크로프로세서를 위한 코드를 생성합니다. 또한 생성된 코드의 함수, 파일 및 데이터에 대한 세밀한 제어를 위한 구성 옵션 및 고급 최적화를 제공하여 MATLAB Coder 및 Simulink Coder를 확장합니다. Embedded Coder는 코드 효율을 높이고 양산에 사용되는 레거시 코드, 데이터 유형, 보정 매개변수와의 통합을 용이하게 합니다. SIL(software-in-the-loop) 및 PIL(processor-in-the-loop) 실행을 사용하여 생성된 코드의 수치적 동작을 검증할 수도 있습니다.

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