Splyce: 희소 코이터레이션의 SIMD 벡터화
요약
Splyce는 MLIR 기반 자동 벡터화 프레임워크로, 희소-희소 코이터레이션 루프의 병목 현상을 해결합니다. 이중 경로 실행 모델과 선택적 예측을 활용하여 데이터 의존성 브랜치를 제거하고 명령어 수준 병렬성을 극대화합니다. 테스트 결과, 다양한 희소 텐서 커널에서 높은 성능 향상(1.96X~2.86X)을 입증했습니다.
핵심 포인트
- 희소-희소 코이터레이션의 병목 현상을 해결하는 MLIR 기반 프레임워크입니다.
- 이중 경로 실행 모델과 선택적 예측으로 데이터 의존성 브랜치를 제거합니다.
- 명령어 수준 병렬성을 극대화하여 기능 단위 활용률을 높였습니다.
- 다양한 희소 텐서 커널에서 1.96X~2.86X의 성능 향상을 보였습니다.
희소 텐서 컨트랙션(Sparse tensor contractions)은 표준 루프 벡터화에 저항하는 희소-희소 코이터레이션(sparse-sparse coiteration) 루프에 의해 병목 현상을 겪습니다. 우리는 Splyce를 제시합니다. 이는 MLIR의 자동 벡터화 프레임워크로, 이중 경로 실행 모델을 통해 이를 극복합니다. 선택적 예측(selective predication)을 통해 좌표 교차(coordinate intersection)와 포인터 관리(pointer management)를 분리함으로써, Splyce는 부수적인 효과로서 데이터 의존성 브랜치(data-dependent branches)를 본질적으로 제거하며, 현대의 슈퍼스칼라 엔진이 명령어 수준 병렬성(instruction-level parallelism)을 극대화하고 메모리 지연 시간(memory latency)을 숨기도록 허용합니다. 단순한 브랜치 제거를 넘어, 우리의 변환은 동시에 실행될 수 있는 독립적인 계산을 노출하여, 그렇지 않으면 순차적 의존성에 의해 제약되었을 기능 단위 활용률(functional-unit utilization)을 증가시킵니다. 기초 희소 텐서 커널 전반에 걸친 평가는 합성 입력에서 1.96X부터 2.86X까지의 성능 향상을 입증했으며, SuiteSparse 컬렉션의 방대한 대부분의 불규칙한 실제 데이터셋에서도 일관된 속도 향상을 유지했습니다. 궁극적으로 Splyce는 예측할 수 없는 제어 흐름(control-flow)을 예측 가능한 데이터 스트림으로 변환함으로써, 컴파일러 기반 추측(compiler-driven speculation)이 압축 저장소의 메모리 효율성과 현대 슈퍼스칼라 아키텍처의 실행 단위 처리량(execution-unit throughput)을 효과적으로 조화시킬 수 있음을 보여줍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기