MATLAB 병렬 컴퓨팅 연구 동향
초록
MATLAB은 사용 편의성과 고성능 연산 기능을 겸비한 대표적인 기술 컴퓨팅 환경이다. 본 논문은 MATLABMPI, bcMPI, pMatlab, Star‑P, Parallel Computing Toolbox(PCT) 등 과거와 현재의 주요 병렬화 시도를 정리하고, 각 접근법의 설계 원리와 한계를 비교한다. 마지막으로 향후 연구 방향을 제시한다.
상세 분석
MATLAB은 인터프리터 기반 언어 특성상 기본적으로 단일 스레드 실행에 최적화돼 있어, 대규모 데이터 처리나 복잡한 시뮬레이션에서는 병렬화가 필수적이다. 초기 단계에서는 순수 MATLAB 코드만으로는 멀티코어 활용이 어려웠기 때문에, 외부 라이브러리와 메시지 전달 인터페이스(MPI)를 결합한 접근법이 등장했다. 대표적인 것이 MATLABMPI이다. MATLABMPI는 순수 MATLAB 스크립트로 구현된 경량 MPI 구현체로, 파일 기반 통신을 이용해 프로세스 간 데이터를 교환한다. 구현이 간단하고 플랫폼 독립적이라는 장점이 있지만, 파일 I/O에 의존하므로 대용량 데이터 전송 시 지연이 크게 증가한다는 단점이 있다.
bcMPI는 MATLABMPI의 한계를 보완하기 위해 C 기반의 고성능 MPI 라이브러리를 래핑한 형태다. bcMPI는 실제 MPI 구현(예: OpenMPI, MPICH)과 연동해 네트워크 기반 직렬화와 비동기 전송을 지원한다. 따라서 통신 오버헤드가 크게 감소하고, 대규모 클러스터 환경에서도 확장성이 향상된다. 다만, bcMPI를 사용하려면 별도의 컴파일 및 환경 설정이 필요해 초기 진입 장벽이 존재한다.
pMatlab은 “partitioned global address space”(PGAS) 모델을 채택한 고수준 병렬 프레임워크다. 사용자는 배열을 “distribution” 객체로 선언하고, 연산 시 자동으로 데이터 분할과 통신을 처리한다. 이는 MATLAB 코드의 가독성을 크게 유지하면서도 병렬 효율성을 확보할 수 있게 해준다. 그러나 pMatlab은 내부적으로 MPI를 사용하므로, 기본 제공되는 통신 최적화가 제한적이며, 복잡한 비정형 데이터 구조에는 적용이 어려운 점이 있다.
Star‑P는 MATLAB과 고성능 컴파일러(예: Intel Fortran, C++)를 연결해, MATLAB 코드를 자동으로 C/C++ 코드로 변환하고, 이를 MPI 기반 클러스터에서 실행하도록 설계되었다. 이 방식은 MATLAB의 인터프리터 오버헤드를 제거해 실행 속도를 크게 높일 수 있다. 하지만 자동 변환 과정에서 지원되지 않는 MATLAB 함수가 존재하고, 디버깅이 복잡해지는 문제가 있다.
Parallel Computing Toolbox(PCT)는 MathWorks가 공식적으로 제공하는 병렬화 솔루션으로, “parfor”, “spmd”, “distributed” 배열 등 고수준 API를 제공한다. PCT는 로컬 멀티코어, GPU, 클라우드 등 다양한 하드웨어 백엔드를 투명하게 지원한다. 특히, 작업 스케줄러와 자동 데이터 이동 기능이 잘 통합돼 있어 사용 편의성이 뛰어나다. 그러나 라이선스 비용이 높고, 내부 구현이 블랙박스 형태이기 때문에 세밀한 성능 튜닝이 제한적이다.
전체적으로 보면, 초기 파일 기반 MPI 구현에서 시작해 C 기반 고성능 MPI, PGAS 모델, 자동 코드 변환, 그리고 상용 툴킷으로 진화해 왔다. 각 단계는 이전 기술의 한계를 보완하면서도 새로운 복잡성을 도입했으며, 현재는 사용 편의성과 성능 사이의 균형을 맞추는 것이 핵심 과제로 남아 있다. 향후 연구는 GPU와 TPU 같은 이종 컴퓨팅 자원의 효율적 통합, 자동 스케줄링 및 동적 로드 밸런싱, 그리고 클라우드 네이티브 환경에서의 무중단 확장성을 목표로 할 것으로 예상된다.