MATLAB(매트랩)

MATLAB 성능

MATLAB 코드의 성능을 최적화할 수 있습니다.

더 빨라진 MATLAB

R2015a에 도입된 MATLAB® 실행 엔진은 JIT 컴파일을 사용하여 모든 MATLAB 코드의 속도를 높여줍니다. JIT 컴파일을 통해 MATLAB 코드와 특정 하드웨어에 최적화된 기계어 수준의 네이티브 코드가 생성됩니다. 실행 엔진의 아키텍처는 릴리스를 거듭할 때마다 내장 함수 호출 속도 향상 및 인덱싱 작업의 가속화 등 추가적인 최적화가 이루어지고 있습니다. 또한, 다수의 핵심 MATLAB 함수는 더 나은 성능을 위해 암시적으로 멀티스레드 처리됩니다.

MATLAB 성능은 실제 사용자 워크플로를 나타내는 전체 응용 프로그램과 단위 작업을 모두 포괄하는 일련의 벤치마크를 이용하여 측정됩니다. MATLAB 릴리스 사이클을 거치는 동안 다양한 하드웨어와 운영 체제에서 이러한 벤치마크를 여러 차례 실행하여 새로운 최적화를 검증하고, 성능 저하를 검출하여 처리하고, 특정 운영 체제에서 발생하는 문제를 식별할 수 있습니다.

MATLAB 릴리스 정보에서 구체적인 성능 개선 사항을 알아볼 수 있습니다. MATLAB R2019b부터는 과거의 MATLAB 버전과 비교하여 개선된 실행 시간 측정 결과를 성능 릴리스 정보에 수록하고 있습니다.


고객 워크플로의 평균 속도 향상

MATLAB 성능 테스트 스위트의 평균 속도 향상

MATLAB 프로파일러

MATLAB 프로파일러를 사용하여 코드의 병목 지점을 찾을 수 있습니다.

MATLAB 코드의 성능 개선

코드의 성능을 개선하기 위한 첫 단계는 병목 지점을 찾아내는 것입니다. 예를 들어 다음과 같은 작업을 수행할 수 있습니다.

  • tic, toc, timeit 등의 함수로 코드 실행 시간 측정
  • MATLAB 프로파일러를 사용하여 프로그램에서 실행 시간이 가장 오래 걸리는 부분 확인
  • MATLAB 코드 분석기를 사용하여 성능 개선을 위한 추가적인 방안 파악

코드 내 병목 지점을 찾아낸 뒤에는 대개 알려진 프로그래밍 기법으로 코드의 속도를 높일 수 있습니다. 가장 널리 활용되는 기법은 배열 사전할당과 벡터화입니다. 사전할당을 통해 동적 메모리 할당을 회피하여 성능을 개선할 수 있습니다. 벡터화로는 명령 하나로 모든 벡터 요소에 대해 계산을 하여 루프 사용을 방지할 수 있습니다. 이 두 기법을 함께 활용하면 코드의 속도를 최대 수십 배까지 향상시킬 수 있습니다.

필요에 따라 응용 프로그램에서 계산 집약적인 부분을 컴파일 언어로 작성하여 성능을 향상시킬 수 있습니다. MATLAB에서 MEX 함수를 이용하면 MATLAB 내장 함수처럼 고성능 C, C++ 또는 Fortran 코드를 호출할 수 있습니다. MATLAB Coder™로 MATLAB 코드를 MEX 파일로 자동 변환하여 속도를 훨씬 높일 수도 있습니다.


하드웨어를 최대한 활용할 수 있도록 병렬 연산 사용

계산 집약적인 문제나 데이터 집약적인 문제를 병렬 연산으로 풀어 모든 하드웨어 리소스에 명시적으로 액세스할 수 있습니다. 사용하기 쉽고 익숙한 MATLAB의 기능을 그대로 사용하면서 여러 개의 프로세스, 스레드, GPU로 확장할 수 있습니다. 개발과 실행을 한 대의 컴퓨터에서 처리하고, 코드를 재작성하지 않고도 실행 범위를 연산 클러스터나 클라우드로 확장할 수 있습니다.


병렬 연산을 사용하여 하드웨어의 모든 리소스를 명시적으로 활용할 수 있습니다.