Skip to main content
QUICK REVIEW

[논문 리뷰] Automatic Horizontal Fusion for GPU Kernels

Ao Li, Bojian Zheng|arXiv (Cornell University)|2020. 07. 02.
Advanced Neural Network Applications참고 문헌 28인용 수 5
한 줄 요약

이 논문은 스레드 수준 병행성을 증가시켜 명령어 지연을 숨기는 방식으로, 서로 다른 커널의 스레드를 하나의 융합 커널에 함께 배치하는 새로운 CUDA 컴파일러 최적화인 자동 수평 융합(auto horizontal fusion)을 소개한다. 제안된 소스 투 소스 컴파일러인 HFuse는 스레드 ID를 자동으로 분할하고 분기 조건을 삽입하여 실행 경로를 라우팅함으로써, 기존 커널 대비 최대 60.8%의 성능 향상을 달성한다. 특히 메모리 집약적 및 계산 집약적 커널과 같은 혼합 자원 요구 사양을 가진 커널에서 뛰어난 성능을 발휘한다.

ABSTRACT

We present automatic horizontal fusion, a novel optimization technique that complements the standard kernel fusion techniques for GPU programs. Unlike the standard fusion, whose goal is to eliminate intermediate data round trips, our horizontal fusion technique aims to increase the thread-level parallelism to hide instruction latencies. We also present HFuse, a new source to source CUDA compiler that implements automatic horizontal fusion. Our experimental results show that horizontal fusion can speed up the running time by 2.5%-60.8%. Our results reveal that the horizontal fusion is especially beneficial for fusing kernels with instructions that require different kinds of GPU resources (e.g., a memory-intensive kernel and a compute-intensive kernel).

연구 동기 및 목표

  • 표준 수직 융합이 효과가 없을 때 발생하는 지연으로 인한 GPU 커널 성능 저하 문제를 해결한다.
  • 메모리 라운드트립을 제거하는 데 집중하지만 스레드 수준 병행성을 향상시키지 못하는 수직 커널 융합의 한계를 극복한다.
  • 다양한 자원 요구 사양(예: 메모리 집약적 및 계산 집약적)을 가진 커널의 자동 융합을 통해 GPU 하드웨어 자원을 더 효과적으로 활용할 수 있도록 한다.
  • 수평 융합을 위한 스레드 공간 분할 및 동기화 장벽 처리를 자동으로 수행하는 소스 투 소스 컴파일러(HFuse)를 개발한다.
  • 다양한 커널 스레드를 함께 배치함으로써 워프 스케줄러의 인터리빙 기능을 활용하여 전체 커널 스루풋을 향상시킨다.

제안 방법

  • 융합 커널의 스레드 블록을 스레드 ID 기반으로 두 개의 구간으로 나누고, 각 구간을 원래의 커널 중 하나에 할당한다.
  • 각 스레드가 자신의 커널에 속한 명령어 시퀀스로 라우팅되도록 융합 커널에 조건부 분기문을 삽입한다.
  • 인-line PTX 어셈블리와 인스트루멘티드 분기 조건을 사용하여, 관련 없는 스레드를 정지시키지 않는 커널 전용 동기화 장벽을 구현한다.
  • 성능을 향상시키기 위해 최적의 스레드 공간 분할 전략을 탐색하고 식별하기 위해 자동 프로파일링 기법을 적용한다.
  • 수평 융합 기법을 소스 투 소스 CUDA 컴파일러(HFuse)에 통합하여, 동일한 기능을 가지되 최적화된 커널을 생성한다.
  • 융합 과정에서 레지스터 및 공유 메모리 사용량을 분석하여 스레드 수준 병행성과 블록 수준 병행성을 균형 있게 조절한다.

실험 결과

연구 질문

  • RQ1지연 숨기기와 스레드 수준 병행성 증가를 통해 수평 융합이 수직 융합을 초월해 성능을 향상시킬 수 있는가?
  • RQ2다른 스레드를 정지시키지 않고도 수평 융합 커널에서 한 원본 커널의 동기화 장벽을 안전하게 처리할 수 있는가?
  • RQ3성능을 최대화하기 위해 수평 융합 커널에 대한 최적의 스레드 공간 분할 전략은 무엇인가?
  • RQ4메모리 자원과 계산 자원 요구 사양이 다른 혼합 하드웨어 자원을 가진 커널에 대해 수평 융합이 측정 가능한 성능 향상을 제공하는가?
  • RQ5실제 워크로드인 딥러닝 및 암호화폐 채굴에서 수평 융합이 네이티브 커널과 수직 융합 커널을 모두 초월할 수 있는가?

주요 결과

  • HFuse는 1080Ti 및 V100 GPU에서 기존 커널 대비 최대 60.8%의 성능 향상을 달성했으며, 1080Ti에서는 16개 커널 쌍 중 7개, V100에서는 6개 커널 쌍에서 네이티브 커널과 수직 융합 커널을 모두 초월했다.
  • 수평 융합은 메모리 집약적 및 계산 집약적 커널 등 자원 집약도가 다른 커널을 융합하는 데 특히 효과적이었으며, GPU 실행 유닛의 효율적 활용 덕분이었다.
  • 성능 향상의 주요 원인은 워프 스케줄러가 서로 다른 커널의 명령어를 인터리빙하여 지연을 효과적으로 숨기기 때문이었다.
  • 프로파일링을 통한 자동 스레드 분할이 성능 향상에 크게 기여했으며, 비최적의 분할은 레지스터 및 공유 메모리 압박 증가로 인해 성능 저하를 초래할 수 있었다.
  • 수직 융합이 유의미한 이점을 제공하지 못하는 상황(예: 메모리 트래픽이 성능 저하의 주요 원인이 아닐 때)에서도 수평 융합이 수직 융합을 능가했으며, 이는 상호 보완적 성격을 지닌다는 것을 보여주었다.
  • 연구 결과 스레드 수준 병행성과 블록 수준 병행성 사이의 트레이드오프가 드러났다: 수평 융합은 스레드 수준 병행성을 증가시키지만, 레지스터와 공유 메모리 사용량도 증가시켜 신중한 최적화가 필요하다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.