MATLAB 멀티스레딩이란?
테크니컬 컴퓨팅에서 멀티스레딩이란 계산 효율성과 리소스 사용률을 개선하기 위해 단일 프로세스 내에서 여러 스레드를 동시에 실행하는 것을 말합니다. 멀티스레딩을 사용하면 작업을 여러 CPU 코어에 나눠 동시에 실행할 수 있으므로 연산 집약적 애플리케이션의 성능을 개선할 수 있습니다. 이 접근법을 통해 특히 행렬 계산, 푸리에 변환, 영상 처리 등 병렬화가 가능한 작업의 실행 시간을 단축할 수 있습니다. 하지만 경쟁 상태, 교착 상태 및 기타 문제를 방지할 수 있도록 공유 리소스의 신중한 관리가 필요하기도 합니다.
MATLAB 멀티스레딩은 사용하기 쉽습니다. MATLAB® 및 Simulink®를 사용하면 내장 MATLAB 멀티스레딩 및 Parallel Computing Toolbox™의 함수를 사용하는 명시적 병렬성의 두 가지 주요 방법으로 멀티코어 및 멀티프로세서 컴퓨터를 활용할 수 있습니다. 컴퓨터의 연산 능력을 최대치로 사용하여 MATLAB 애플리케이션 및 Simulink 모델을 더 빠르고 효율적으로 실행할 수 있습니다.
암시적 및 명시적 MATLAB 멀티스레딩과 직렬 처리 비교.
내장 MATLAB 멀티스레딩
MATLAB의 내장 멀티스레딩 기능은 런타임에 기본 라이브러리를 사용해 계산을 자동으로 병렬화함으로써 선형대수 및 수치 함수(예: fft, eig, mldivide, svd, sort) 등 많은 함수의 성능을 대폭 개선할 수 있습니다. MATLAB에서는 이 작업을 암시적으로 수행하므로 이를 직접 활성화할 필요가 없습니다. 계산 스레드 개수를 제어하려면 maxNumCompThreads 함수를 사용할 수 있습니다.
마찬가지로, Simulink는 서브시스템, 연동 시뮬레이션, 데이터 흐름을 위한 내장 멀티스레딩 기능을 제공합니다. 필요한 경우 Simulink는 모든 실행 가능한 모델 및 블록을 여러 스레드에서 실행할 수 있도록 준비합니다. Simulink에서 성능 개선 가능성을 감지하면 여러 스레드를 사용해 적합한 모델을 자동으로 실행함으로써 실행 시간을 단축할 수 있습니다.
MATLAB 워커를 사용한 명시적 병렬성
Parallel Computing Toolbox는 병렬 풀을 만들고 사용하기 위한 함수를 제공하여 사용자는 스레드 및 프로세스를 통해 추가적인 하드웨어 리소스를 사용해 애플리케이션의 성능을 향상하고 결과 도출 시간을 단축할 수 있습니다. 병렬 for 루프(parfor), 병렬 대기열(parfeval), 여러 데이터로 단일 프로그램의 병렬 실행(spmd), 병렬 Simulink 시뮬레이션(parsim) 및 기타 병렬 프로그래밍 기능을 사용해 MATLAB 및 Simulink에서 병렬 풀을 활용할 수 있습니다.
점점 더 많은 MATLAB 및 Simulink의 함수와 기능이 추가적인 코딩을 수행하지 않고 병렬 연산 리소스를 활용할 수 있습니다. 예를 들어, Simulink에서 기본 설정 또는 플래그 설정을 통해 일부 인터페이스에서 손쉽게 병렬 지원을 활성화할 수 있습니다.
스레드 기반 병렬 풀
스레드 기반 병렬 풀을 사용하면 병렬성을 달성하고 단일 MATLAB 프로세스 내 여러 스레드로 연산을 분산할 수 있습니다. 이러한 풀은 통신 오버헤드가 낮고 공유 메모리 액세스를 제공하지만, 단일 컴퓨터의 연산에만 사용할 수 있습니다. MATLAB을 사용하면 backgroundPool로 단일 추가 스레드 워커를 활성화할 수 있고, Parallel Computing Toolbox를 사용하면 parpool("Threads")를 통해 여러 스레드 워커를 사용할 수 있습니다.
프로세스 기반 병렬 풀
Parallel Computing Toolbox를 사용하면 로컬 컴퓨터나 원격 클러스터에서 여러 워커 프로세스(계산 엔진)를 사용해 MATLAB 애플리케이션을 병렬로 실행할 수도 있습니다. 기본적으로 이러한 프로세스 워커는 계산 측면에서 단일 스레드로 작동합니다.
멀티스레딩과 달리, 병렬 프로세스 기반 풀에서 제공되는 명시적 병렬성은 MATLAB Parallel Server™로 활성화된 연산 클러스터를 활용해 MATLAB 워커를 사용하는 병렬 애플리케이션을 단일 컴퓨터 너머로 확장할 수 있습니다.