가상 프로세서(Virtual Processor)가 가져온 공짜 점심의 귀환
요약
수치 배열 프로그램을 위한 자기 최적화 가상 프로세서(VP)를 제안합니다. 중앙 집중식 스케줄링 대신 런타임 시 데이터 의존성에 기반한 분산 네트워크 방식을 사용하여 개발자의 개입 없이 자동으로 병렬화를 수행합니다.
핵심 포인트
- 중앙 스케줄러 없는 분산형 협력적 실행 세그먼트 방식 도입
- 데이터 의존성 기반의 비동기적 스케줄링 구현
- 개발자의 수동 병렬화 작업 없이 대규모 병렬성 자동 확보
- 이기종 하드웨어 환경에서 저지연 및 강력한 확장성 목표
본 연구는 수치 배열 프로그램(numerical array programs)을 위한 자기 최적화 가상 프로세서(Virtual Processor, VP)를 소개하며, 병렬화(parallelization)를 개발자의 수동 작업에서 협력적인 에이전트 방식의 런타임(runtime) 메커니즘으로 전환합니다. 중앙 집중식 태스크 그래프 스케줄링(task-graph scheduling), 정적 컴파일러 최적화(static compiler optimization), 또는 명시적으로 주석 처리된 병렬 구조(parallel constructs)에 의존하는 대신, VP는 런타임 시 수치 명령어 스트림과 데이터 의존성(data dependencies)으로부터 파생된 협력적 실행 세그먼트(execution segments)의 분산 네트워크를 사용합니다. 각 세그먼트는 태스크 배치(task placement), 커널 준비(kernel preparation), 데이터 이동(data movement)을 포함하여, 언제, 어디서, 어떻게 계산을 준비하고 실행할지에 대해 오직 로컬 결정(local decisions)만을 내립니다. 중앙 스케줄러나 매퍼(mapper) 인스턴스가 실행을 전역적으로 결정하지 않습니다. 대신 스케줄링 자체가 비동기적(asynchronously)이고 엄격하게 의존성 기반(dependency driven)으로 시간에 따라 병렬화되고 분산됩니다. 전체 실행 전략은 데이터 가용성(data availability), 비용 추정치(cost estimates), 시스템 상태(system state), 하드웨어 역량(hardware capabilities), 그리고 문제 크기(problem size)에 지속적으로 반응하며 동시에 실행되는 로컬 세그먼트들로부터 창발(emerge)합니다. 프로그램의 순차적 의미론(sequential semantics)을 보존하면서도, 우리의 VP는 개별 루프 본문(loop bodies), 모듈(modules), 또는 명시적으로 표시된 병렬 섹션에 국한되지 않고 대규모 프로그램 영역 전체에 걸쳐 병렬성을 자동으로 활용합니다. 개발자는 병렬화 전략을 설계하거나 인코딩할 필요가 없습니다. 현재의 VP는 소규모의 지연 시간에 민감한 배열 연산부터 대규모 데이터 병렬 계산(data-parallel computations)에 이르는 워크로드를 아우르며, 로컬 이기종 하드웨어(heterogeneous hardware)에서의 저지연 강한 확장성(low-latency strong scaling)을 주로 목표로 합니다. 현재 구현은 ILNumerics.ONAL 도메인 특화 언어(domain-specific language)의 사전 정의된 배열 명령어 세트를 대상으로 하지만, 근본적인 개념은 MATLAB 및 NumPy와 같은 일반적인 배열 기반 수치 프로그래밍 모델에도 적용 가능합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기