LLVM을 위한 제안된 멀티 스레드 병렬 컴파일 "MTPC"는 매우 반가운 소식입니다
LLVM
LLVM ThinLTO는 현재 모듈 수준의 병렬성 (module-level parallelism)을 제공하지만, 개별 LLVM 모듈 내의 코드 생성 (code generation) 및 최적화 (optimizations)가 대부분 직렬화 (serialized)되어 있다는 점을 고려하면, 매우 큰 모듈의 경우 오늘날의 프로세서 환경에서 컴파일 병목 현상 (compilation bottleneck)이 될 수 있습니다.
현재 제안되고 있는 것은 LLVM의 ThinLTO를 위한 멀티 스레드 병렬 컴파일 (Multi-Thread Parallel Compilation, MTPC)으로, 모듈 내부 병렬성 (intra-module parallelism)을 제공하는 것입니다. MTPC는 함수 수준 (function level)에서 모듈을 분할하여 병렬 코드 생성 (parallel code generation)을 수행함으로써, 대규모 모듈에서의 긴 컴파일 시간을 방지하고 오늘날 프로세서의 멀티 코어 잠재력 (multi-core potential)을 더 잘 활용할 수 있습니다.
이 멀티 스레드 병렬 컴파일 (Multi-Thread Parallel Compilation)을 사용한 실험 결과에 따르면, 전체 애플리케이션을 전체 빌드 (full build)할 때 총 시간이 최대 32%까지 단축되는 매우 좋은 결과를 보여주고 있습니다.
관심 있는 분들은 초기 제안이 담긴 이 LLVM Discourse 스레드를 확인할 수 있습니다. 이미 멀티 스레드 병렬 컴파일 (Multi-Thread Parallel Compilation)의 기반을 마련하기 위한 몇 개의 풀 리퀘스트 (pull requests)가 열려 있습니다.