OO VR: 미래 NUMA 기반 다중 GPU 시스템을 위한 데이터 로케일을 고려한 객체 지향 VR 렌더링 프레임워크

읽는 시간: 6 분
...

📝 원문 정보

  • Title: OO-VR: NUMA Friendly Object-Oriented VR Rendering Framework For Future NUMA-Based Multi-GPU Systems
  • ArXiv ID: 2001.03537
  • 발행일: 2020-01-13
  • 저자: Chenhao Xie, Xin Fu, Mingsong Chen, Shuaiwen Leon Song

📝 초록 (Abstract)

강력한 계산 능력을 갖춘 NUMA 기반 다중 GPU 시스템은 가상현실(VR)에 지속적이고 확장 가능한 성능을 제공할 수 있는 유망한 후보입니다. 그러나 현재의 다중 GPU 시스템은 단일 GPU로 간주되며, 이는 VR 렌더링 중 데이터 위치성을 무시하고 각 GPU 모델 간의 원격 메모리 접근이 증가하게 합니다. 다양한 병렬 렌더링 프레임워크에 대한 포괄적인 특성 분석을 통해, 렌더링 오브젝트와 필요한 데이터를 함께 분산시키면 GPM 간의 메모리 접근 횟수가 줄어든다는 것을 관찰했습니다. 그러나 이 오브젝트 수준의 렌더링은 여전히 NUMA 기반 다중 GPU 시스템에서 두 가지 주요 도전 과제를 안고 있습니다: (1) 동일한 오브젝트의 좌우 뷰 간에 큰 데이터 위치성과 다른 오브젝트들 간의 데이터 공유, 그리고 (2) 소프트웨어 수준의 분산 및 합성 메커니즘으로 인해 발생하는 불균형 작업 부하. 이러한 도전 과제를 해결하기 위해, 우리는 VR 다중 뷰 렌더링에 NUMA 친화적인 솔루션을 제공하기 위한 오브젝트 지향형 VR 렌더링 프레임워크(OO-VR)을 제안합니다. 먼저, 동일한 오브젝트의 두 가지 뷰 간 데이터 공유를 활용하고 텍스처 공유 수준에 따라 오브젝트들을 배치로 그룹화하는 오브젝트 지향형 VR 프로그래밍 모델을 제안했습니다. 그런 다음, GPM들 사이에서 균형 잡힌 작업 부하를 달성하기 위해 오브젝트 인식 실행 배치 분산 엔진과 분산 하드웨어 합성을 설계했습니다. 마지막으로 우리의 VR 특화 시뮬레이터에서의 평가 결과, OO-VR은 최신 다중 GPU 시스템에 비해 1.58배의 전반적인 성능 향상 및 GPM 간 메모리 트래픽을 76% 줄이는 것을 보여주었습니다.

💡 논문 핵심 해설 (Deep Analysis)

**Key Summary**: This paper introduces the Object-Oriented Virtual Reality (OO-VR) rendering framework to enhance performance in NUMA-based multi-GPU systems for virtual reality. The framework aims to improve rendering efficiency through better workload distribution and reduced inter-GPM memory traffic.

Problem Statement: In VR, high performance is critical but existing methods of distributing objects without considering data locality can lead to increased remote memory accesses among GPU Processing Modules (GPMs), causing significant performance degradation. Additionally, uneven workload distribution and complex object data sharing pose additional challenges.

Solution Approach (Core Technology): OO-VR addresses these issues through:

  1. Object-Oriented Programming Model: This model leverages data sharing between two views of the same object and groups objects into batches based on texture sharing levels.
  2. Object-Aware Runtime Batch Distribution Engine: Designed to achieve balanced workloads among GPMs by distributing batches according to predicted rendering times.
  3. Distributed Hardware Composition: It maximizes the use of ROPs (Raster Operations) across all GPMs, thereby increasing pixel rate and overall performance.

Key Achievements: Evaluations show that OO-VR provides a 1.58x improvement in overall performance compared to state-of-the-art multi-GPU systems and reduces inter-GPM memory traffic by 76%. It also demonstrates scalability as the number of GPMs increases, making it particularly useful for future larger multi-GPU scenarios.

Significance & Utilization: The OO-VR framework improves upon existing parallel rendering methods, providing enhanced performance in VR applications. This can lead to more immersive experiences for users and is applicable across various domains including gaming, education, and entertainment.

📄 논문 본문 발췌 (Translation)

# 평가 우리는 AITTILA-sim을 확장하여 오브젝트 지향형 가상현실 렌더링 프레임워크(OO-VR)를 모델링했습니다. 실제 게임 벤치마크의 렌더링 추적 데이터에서 오브젝트 그래픽 속성(예: 뷰포트, 삼각형 수 및 텍스처 데이터 등)을 프로파일링하여 이를 얻었습니다([table:benchmarks] 참조). 그런 다음 AITTILA-sim의 GPUDriver에서 OOVR 프로그래밍 모델을 구현하고, 명령 처리기에서 오브젝트 분산 엔진을 구현하며, 컬러 기록 단계 동안 분산된 하드웨어 합성을 설계했습니다. 제안한 OO-VR 디자인의 효과를 평가하기 위해 여러 디자인 시나리오와 비교합니다: 1. **기본 버전** - 단일 프로그래밍 모델을 사용하는 기본 다중 GPU 시스템([sec:Background] 참조) 2. **1TB/s-BW** - 1 TB/s의 GPM 간 링크 대역폭을 가진 기본 시스템 3. **오브젝트 레벨** - 오브젝트를 GPM들에 분산시키는 Object-level SFR([sec:Character] 참조) 4. **프레임 레벨** - 각 GPM 내에서 전체 프레임을 렌더링하는 AFR 5. **OO_APP** - 제안된 오브젝트 지향형 프로그래밍 모델([sec:Methodology] 참조)

우리의 제안한 설계에 대한 성능, GPM 간 메모리 트래픽, GPM 간 링크 대역폭에 대한 민감도 연구 및 GPM 수 증가에 따른 성능 확장성을 포함한 결과와 상세 분석을 제공합니다.

성능 효과

[[IMG_PROTECT_1]]

그림 1은 다섯 가지 디자인 시나리오에서 단일 프레임 지연 시간에 대한 성능 결과를 보여줍니다. 각 프레임의 렌더링 사이클 전체를 측정하고 기본 사례에 대한 성능 향상을 정규화합니다. 단일 프레임에 대한 성능 향상은 VR에서 움직임 구토를 피하는 것이 중요하기 때문에 이를 제공합니다.

첫째, 하드웨어 수정 없이 OO_APP은 Baseline, Object-level SFR 및 1TB/s-BW와 평균적으로 각각 약 99%, 39% 및 28%의 성능 향상을 보입니다. 이 모델은 동일한 오브젝트의 두 가지 뷰를 결합하고, 다중 뷰 렌더링에서 텍스처 데이터를 공유할 수 있게 합니다. 또한 대형 배치로 오브젝트들을 그룹화하여 하나의 GPM 내에서 데이터 위치성을 더 증가시키고 GPM 간 메모리 트래픽을 줄입니다. 그러나 여전히 작업 부하 불균형 문제가 존재합니다.

둘째, OO-VR은 Baseline, Object-level SFR 및 OO_APP에 비해 각각 평균적으로 1.58x, 99% 및 59%의 성능 향상을 보입니다. 소프트웨어와 하드웨어의 공동 설계를 통해 OO-VR은 예측된 렌더링 시간에 따라 배치를 분산시키고 OO_APP보다 더 균형 잡힌 작업 부하를 제공합니다.

또한, OO-VR은 전체 렌더링 사이클에서 이상적인 성능을 제공하는 프레임 수준 병렬성과 유사한 성능을 달성할 수 있습니다. 그러나 단일 프레임 지연 시간에 대해 프레임 수준 병렬성은 40%의 느림을 겪지만 OO-VR은 성능을 크게 향상시킵니다.

GPM 간 메모리 트래픽 효과

GPM 간 메모리 트래픽 감소는 OO-VR의 효과성을 판단하는 또 다른 중요한 기준입니다. [[IMG_PROTECT_2]]

그림 1은 OO-VR이 GPM 간 메모리 트래픽에 미치는 영향을 보여줍니다. 기본 버전과 1TB/s-BW는 동일한 GPM 간 메모리 트래픽을 가지며, 프레임 수준 병렬성은 각 프레임을 한 GPM에서 처리하므로 거의 제로의 GPM 간 트래픽을 가집니다. 또한 메모리 트래픽 감소는 주로 소프트웨어 수준 설계에 의해 이루어지며, OO_APP과 OO-VR 모두 동일한 GPM 간 트래픽을 가집니다.

따라서 그림 1은 기본 버전, 오브젝트 레벨 및 OO-VR의 결과만 보여주며, 이 세 가지 기술에 대한 다음 하위 섹션에서 주로 조사합니다. 그림에서는 OO-VR이 기본 버전과 Object-level SFR에 비해 각각 76%와 36%의 GPM 간 메모리 접근 횟수를 줄이는 것을 관찰할 수 있습니다.

GPM 간 링크 대역폭 민감도

[[IMG_PROTECT_3]]

GPM 간 링크 대역폭은 다중 GPU 시스템에서 중요한 요소 중 하나입니다. 이전 연구는 프로세서 간 링크의 대역폭을 증가시키는 것이 어려우며 고비용의 페브릭 비용이 필요함을 보여주었습니다. GPM 간 링크 대역폭이 설계 선택에 미치는 영향을 이해하기 위해, 다양한 링크 대역폭 옵션에서 OO-VR의 성능 개선을 조사합니다.

그림 1은 기본 버전, Object-level SFR 및 제안된 OO-VR을 적용한 경우 다른 GPM 간 링크 대역폭에서의 속도 향상을 보여줍니다. 이 그림에서는 64GB/s GPM 간 링크를 가진 기본 버전에 대한 성능을 정규화합니다. 우리는 기초 버전과 Object-level SFR 설계 시나리오가 대역폭이 크게 영향을 받는다는 것을 관찰했습니다. 이 두 가지 디자인은 렌더링 중 GPM 내에서 데이터 위치성을 포착하지 못하고 GPM 간 메모리 접근 횟수를 최소화하지 않기 때문입니다.

반면, OO-VR은 렌더링 작업 부하를 다양한 GPM들에 공평하게 분산시키고 많은 원격 데이터를 로컬 데이터로 변환합니다. 이를 통해 고속의 로컬 메모리 대역폭을 최대한 활용하고 GPM 간 링크의 대역폭에 대해 민감하지 않습니다.

OO-VR의 확장성

그림 2는 GPM 수가 증가함에 따라 기초, 오브젝트 레벨 SFR 및 OO-VR의 평균 속도 향상을 보여줍니다. 결과는 단일 GPU 시스템으로 정규화됩니다.

그림에서, 기본 버전과 Object-level SFR은 NUMA 병목 현상 때문에 성능 확장성이 제한적임을 확인할 수 있습니다. GPM이 8개인 경우, 기본 버전과 Object-level SFR은 각각 단일 GPU 처리에 비해 평균적으로 2.08x와 3.47x의 전체 성능 향상을 보입니다. 반면, OO-VR은 독립적인 렌더링 작업을 각 GPM에 분산시키는 것으로 인해 확장 가능한 성능 개선을 제공합니다.

Reference

이 글은 ArXiv의 공개 자료를 바탕으로 AI가 자동 번역 및 요약한 내용입니다. 저작권은 원저자에게 있으며, 인류 지식 발전에 기여한 연구자분들께 감사드립니다.

검색 시작

검색어를 입력하세요

↑↓
ESC
⌘K 단축키