Branch and Data Herding: GPU의 제어/메모리 분기 감소 기법

Source

  • Evernote/Papers/Branch and Data Herding Reducing Control and Memory Divergence for Error-Tolerant GPU Applications.md

Summary

이 논문은 GPU 애플리케이션의 성능 병목 현상인 제어 분기(control divergence)와 메모리 분기(memory divergence)를 해결하기 위해 ‘Branch and Data Herding’ 기법을 제안합니다. 많은 GPU 애플리케이션이 오류 허용(error-tolerant) 특성을 가진다는 점을 활용하여, 워프(warp) 내 모든 스레드가 동일한 제어 경로를 따르도록 강제하는 Branch Herding과 동일한 메모리 블록에서 로드하도록 강제하는 Data Herding을 도입했습니다. 이를 위해 예외 방지를 위한 정적 분석 및 컴파일러 프레임워크, 성능과 출력 품질 균형을 위한 프로파일링 프레임워크, 그리고 하드웨어 최적화를 제안했습니다. 실험 결과, NVIDIA GeForce GTX 480에서 소프트웨어 구현 시 최대 34%(평균 13%), 하드웨어 구현 시 최대 55%(평균 30%)의 성능 향상을 보였으며, 시각 컴퓨팅 등 오류 허용 애플리케이션에서는 출력 품질 저하가 미미했습니다.

Key Points

  • 제어 분기 제거: Branch Herding을 통해 워프 내 모든 스레드가 동일한 제어 경로를 따르도록 강제
  • 메모리 분기 제거: Data Herding을 통해 워프 내 각 스레드가 동일한 메모리 블록에서 로드하도록 강제
  • 오류 허용 활용: GPU 애플리케이션의 오류 허용 특성을 기반으로 성능 최적화
  • 프레임워크 제안: 예외 방지용 정적 분석/컴파일러, 성능-품질 균형용 프로파일링, 하드웨어 최적화
  • 성능 향상: 소프트웨어 구현 시 최대 34%, 하드웨어 구현 시 최대 55% 성능 향상
  • 품질 영향: 시각 컴퓨팅 등 오류 허용 애플리케이션에서 출력 품질 저하가 미미