Dual vs Single PCIe Root Configuration: Difference between revisions

From HPCWIKI
Jump to navigation Jump to search
(새 문서: == Dual vs Single PCIe Root Configuration Options == === Single-Root Configuration === Minimize GPU to GPU latency for small scale deployments center | 500px ===...)
 
(Fix: remove --- horizontal lines (12 removed))
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Dual vs Single PCIe Root Configuration Options ==
{{Status
|status=Draft
|owner=Knowledge Agent
|last_update=2026-07-15
|review=Pending
}}
 
{{TOC}}
 
== Overview ==
 
Single-Root vs Dual-Root PCIe Configuration은 다중 CPU 시스템에서 GPU 및 PCIe 장치의 연결 아키텍처를 결정하는 핵심 설계 선택지입니다.
 
=== Summary ===
 
* 무엇인가? 다중 CPU 시스템에서 GPU/PCIe 장치 연결 방식 — Single-Root(단일 CPU) vs Dual-Root(양쪽 CPU 분산)
* 왜 필요한가? GPU 간 P2P 대역폭, 지연시간, QPI/UPI 대역폭 트레이드오프 결정
* 언제 사용하는가? 딥러닝 서버, AI/ML 클러스터, 다중 GPU 시스템 설계
 
 
== Purpose ==
 
이 문서가 존재하는 이유
 
* Goal: Single-Root와 Dual-Root PCIe 구성의 차이, 성능 영향, 선택 기준 설명
* Scope: P2P 대역폭, 지연시간, QPI/UPI 영향, PCIe 스위치 계층화
* Non-goals: PCIe 프로토콜 상세, 다른 버스 아키텍처
 
 
== Key Concepts ==
 
{| class="wikitable"
! Concept
! Description
! Related
|-
| Single-Root
| 모든 GPU가 단일 CPU에 연결 — PCIe 스위치 사용
| [[PCIe]]
|-
| Dual-Root
| GPU가 양쪽 CPU에 분산 — QPI/UPI 링크 사용
| [[PCIe]]
|-
| QPI/UPI
| CPU 간 인터커넥트 — Dual-Root에서 소켓-투-소켓 통신
| [[NUMA]]
|-
| P2P (Peer-to-Peer)
| GPU 간 직접 데이터 전송 — Single-Root에서 더 나은 성능
| [[GPU Direct]]
|-
| PCIe Switch
| 단일 CPU 내 다중 장치 연결 — 계층화 가능
| [[PCIe]]
|-
| Infinity Fabric
| AMD EPYC CPU 간 인터커넥트 아키텍처
| [[AMD EPYC]]
|}
 
 
== Architecture ==
 
Single-Root vs Dual-Root 아키텍처 비교:
 
<syntaxhighlight lang="mermaid">
graph TD
    subgraph "Dual-Root Configuration"
        A1[CPU 1] --> B1[PCIe Switch 1]
        B1 --> C1[GPU 0-3]
        A2[CPU 2] --> B2[PCIe Switch 2]
        B2 --> C2[GPU 4-7]
        A1 -.->|QPI/UPI| A2
        C1 -.->|SOC| C2
    end
    subgraph "Single-Root Configuration"
        D1[CPU 1] --> E1[PCIe Switch 1]
        E1 --> F1[GPU 0-4]
        E1 --> F2[GPU 5-6]
        E1 --> F3[GPU 7-9]
    end
</syntaxhighlight>
 
 
== Workflow ==
 
PCIe Root Configuration 선택 흐름:
 
# 시스템 요구사항 분석 — GPU 수, P2P 필요성, 대역폭 요구
# Single-Root 또는 Dual-Root 아키텍처 선택
# PCIe 스위치 구성 및 연결 설계
# P2P 설정 활성화/비활성화
# 성능 벤치마크 및 검증
 
{| class="wikitable"
! Stage
! Input
! Output
|-
| Requirement Analysis
| GPU 수, P2P 필요성
| Root Configuration 선택
|-
| Single-Root Design
| 단일 CPU 연결
| PCIe 스위치 계층화
|-
| Dual-Root Design
| 양쪽 CPU 분산
| QPI/UPI 링크 구성
|-
| P2P Configuration
| GPU 간 직접 통신
| P2P 활성화/비활성화
|-
| Performance Validation
| 벤치마크 결과
| 아키텍처 검증
|}
 
 
== Detailed Explanation ==


=== Single-Root Configuration ===
=== Single-Root Configuration ===
Minimize GPU to GPU latency for small scale deployments
 
[[file : xxxx  | center | 500px]]
모든 GPU가 동일한 CPU에 연결됩니다. 일반적으로 PCIe 스위치를 사용하여 이를 처리합니다.
 
* 장점: QPI/UPI 링크를 거치지 않아 P2P 대역폭 약 2배 향상, SOC(Switch-of-CPU) 엔트리 없음
* 단점: 단일 CPU의 PCIe 레인 수 제한, PCIe 스위치 추가 계층화로 인한 약간의 지연시간 증가
* 사용 사례: 딥러닝 서버, 대용량 AI/데이터 처리 시스템


=== Dual-Root Configuration ===
=== Dual-Root Configuration ===
Maximize efficiency for large scale deployments
 
[[file : xxxx  | center | 500px]]
GPU의 절반이 한 CPU에, 나머지 절반이 두 번째 CPU에 연결됩니다.
 
* 장점: 각 CPU의 PCIe 레인 수 분산, QPI/UPI 대역폭 요구 감소
* 단점: QPI/UPI 링크를 거쳐야 하는 SOC 통신 발생, P2P가 CPU 간으로 확장되면 성능 저하
* 사용 사례: Infiniband 카드가 각 CPU에 하나씩 배치된 딥러닝 클러스터
 
=== Single Root v. Dual Root Bandwidth ===
 
NVIDIA의 p2pBandwidthLatencyTool은 성능 분석을 위한 도구는 아니지만, 대략적인 성능 차이를 보여줍니다.
 
* '''단방향 대역폭''' — QPI 버스를 거치지 않아 Single-Root에서 GPU 간 속도 약 2배 향상
* '''양방향 대역폭''' — Single-Root에서 P2P 활성화 시 더 큰 성능 향상
 
=== Single Root v. Dual Root Latency ===
 
* '''P2P 비활성화''' — Dual-Root 시스템에서 GPU 간 지연시간 높음
* '''P2P 활성화''' — Dual-Root 시스템에서 동일 CPU/PCIe Root의 GPU 간 지연시간significant 감소
* '''Single-Root P2P 활성화''' — Dual-Root 대비 현저한 지연시간 감소 — Single-Root PCIe 시스템으로 이동하는 주요 동력
 
 
== Configuration ==
 
=== P2P 활성화 ===
 
<syntaxhighlight lang="bash">
# P2P 상태 확인
$ nvidia-smi topo -m
 
# P2P 활성화 (BIOS/UEFI에서 IOMMU/VT-d 비활성화 필요)
# NVIDIA 드라이버가 자동으로 P2P 감지 및 활성화
</syntaxhighlight>
 
=== PCIe Switch 계층화 ===
 
Single-Root 구성에서 PCIe 스위치를 계층적으로 연결하여 더 많은 GPU 연결:
 
<syntaxhighlight lang="text">
CPU → PCIe Switch Tier 1 → PCIe Switch Tier 2 → GPU 0-7
                        → GPU 8-15
</syntaxhighlight>
 
 
== Examples ==
 
=== Example 1: 8x GPU Dual-Root 시스템 ===
 
<syntaxhighlight lang="text">
CPU 1: GPU 0-3 (PCIe Switch 1)
CPU 2: GPU 4-7 (PCIe Switch 2)
QPI/UPI: CPU 간 연결
P2P: GPU 0-3 간, GPU 4-7 간만 가능
SOC: GPU 0-3 ↔ GPU 4-7 간 통신
</syntaxhighlight>
 
=== Example 2: 10x GPU Single-Root 시스템 ===
 
<syntaxhighlight lang="text">
CPU 1: GPU 0-9 (PCIe Switch 계층화)
QPI/UPI: 불필요
P2P: 모든 GPU 간 가능
SOC: 없음 — 모든 GPU가 단일 CPU에 연결
</syntaxhighlight>
 
 
== Best Practices ==
 
* 딥러닝 워크로드 — Single-Root 구성 권장 (P2P 대역폭 우선)
* Infiniband 다중 카드 구성 — Dual-Root에서 각 CPU에 하나씩 배치
* PCIe 스위치 계층화 시 지연시간 모니터링
* P2P 활성화 전 BIOS에서 IOMMU/VT-d 비활성화 확인
* AMD EPYC 시스템 — Infinity Fabric 인터커넥트 활용
 
 
== Limitations ==
 
* Single-Root: 단일 CPU의 PCIe 레인 수 제한
* Dual-Root: QPI/UPI 대역폭 병목 가능
* PCIe 스위치 계층화: 추가 지연시간 발생
* P2P: IOMMU/VT-d 활성화 시 성능 저하
* GPU 7 등 특정 GPU에서 이상 현상 가능 (벤치마크 참고)
 
 
== References ==
 
* https://www.servethehome.com/single-root-or-dual-root-for-deep-learning-gpu-to-gpu-systems/
 
 
== Related Pages ==
 
* [[PCIe]]
* [[GPU Direct]]
* [[NUMA]]
* [[AMD EPYC]]
* [[P2P]]
* [[QPI]]
* [[UPI]]
 
 
[[Category:Hardware]]
[[Category:Configuration]]
== Knowledge Graph ==
 
Related
 
→ [[ACS]]
→ [[Bifurcation]]
→ [[CPU features]]
→ [[AER (Advanced Error Reporting)]]
→ [[PCIe]]
→ [[ASPM]]
→ [[PCIe 5.0]]
 
[[Category:Comparison]]

Latest revision as of 11:28, 17 July 2026

Template:Status

Template:TOC

Overview

Single-Root vs Dual-Root PCIe Configuration은 다중 CPU 시스템에서 GPU 및 PCIe 장치의 연결 아키텍처를 결정하는 핵심 설계 선택지입니다.

Summary

  • 무엇인가? 다중 CPU 시스템에서 GPU/PCIe 장치 연결 방식 — Single-Root(단일 CPU) vs Dual-Root(양쪽 CPU 분산)
  • 왜 필요한가? GPU 간 P2P 대역폭, 지연시간, QPI/UPI 대역폭 트레이드오프 결정
  • 언제 사용하는가? 딥러닝 서버, AI/ML 클러스터, 다중 GPU 시스템 설계


Purpose

이 문서가 존재하는 이유

  • Goal: Single-Root와 Dual-Root PCIe 구성의 차이, 성능 영향, 선택 기준 설명
  • Scope: P2P 대역폭, 지연시간, QPI/UPI 영향, PCIe 스위치 계층화
  • Non-goals: PCIe 프로토콜 상세, 다른 버스 아키텍처


Key Concepts

Concept Description Related
Single-Root 모든 GPU가 단일 CPU에 연결 — PCIe 스위치 사용 PCIe
Dual-Root GPU가 양쪽 CPU에 분산 — QPI/UPI 링크 사용 PCIe
QPI/UPI CPU 간 인터커넥트 — Dual-Root에서 소켓-투-소켓 통신 NUMA
P2P (Peer-to-Peer) GPU 간 직접 데이터 전송 — Single-Root에서 더 나은 성능 GPU Direct
PCIe Switch 단일 CPU 내 다중 장치 연결 — 계층화 가능 PCIe
Infinity Fabric AMD EPYC CPU 간 인터커넥트 아키텍처 AMD EPYC


Architecture

Single-Root vs Dual-Root 아키텍처 비교:

graph TD
    subgraph "Dual-Root Configuration"
        A1[CPU 1] --> B1[PCIe Switch 1]
        B1 --> C1[GPU 0-3]
        A2[CPU 2] --> B2[PCIe Switch 2]
        B2 --> C2[GPU 4-7]
        A1 -.->|QPI/UPI| A2
        C1 -.->|SOC| C2
    end
    subgraph "Single-Root Configuration"
        D1[CPU 1] --> E1[PCIe Switch 1]
        E1 --> F1[GPU 0-4]
        E1 --> F2[GPU 5-6]
        E1 --> F3[GPU 7-9]
    end


Workflow

PCIe Root Configuration 선택 흐름:

  1. 시스템 요구사항 분석 — GPU 수, P2P 필요성, 대역폭 요구
  2. Single-Root 또는 Dual-Root 아키텍처 선택
  3. PCIe 스위치 구성 및 연결 설계
  4. P2P 설정 활성화/비활성화
  5. 성능 벤치마크 및 검증
Stage Input Output
Requirement Analysis GPU 수, P2P 필요성 Root Configuration 선택
Single-Root Design 단일 CPU 연결 PCIe 스위치 계층화
Dual-Root Design 양쪽 CPU 분산 QPI/UPI 링크 구성
P2P Configuration GPU 간 직접 통신 P2P 활성화/비활성화
Performance Validation 벤치마크 결과 아키텍처 검증


Detailed Explanation

Single-Root Configuration

모든 GPU가 동일한 CPU에 연결됩니다. 일반적으로 PCIe 스위치를 사용하여 이를 처리합니다.

  • 장점: QPI/UPI 링크를 거치지 않아 P2P 대역폭 약 2배 향상, SOC(Switch-of-CPU) 엔트리 없음
  • 단점: 단일 CPU의 PCIe 레인 수 제한, PCIe 스위치 추가 계층화로 인한 약간의 지연시간 증가
  • 사용 사례: 딥러닝 서버, 대용량 AI/데이터 처리 시스템

Dual-Root Configuration

GPU의 절반이 한 CPU에, 나머지 절반이 두 번째 CPU에 연결됩니다.

  • 장점: 각 CPU의 PCIe 레인 수 분산, QPI/UPI 대역폭 요구 감소
  • 단점: QPI/UPI 링크를 거쳐야 하는 SOC 통신 발생, P2P가 CPU 간으로 확장되면 성능 저하
  • 사용 사례: Infiniband 카드가 각 CPU에 하나씩 배치된 딥러닝 클러스터

Single Root v. Dual Root Bandwidth

NVIDIA의 p2pBandwidthLatencyTool은 성능 분석을 위한 도구는 아니지만, 대략적인 성능 차이를 보여줍니다.

  • 단방향 대역폭 — QPI 버스를 거치지 않아 Single-Root에서 GPU 간 속도 약 2배 향상
  • 양방향 대역폭 — Single-Root에서 P2P 활성화 시 더 큰 성능 향상

Single Root v. Dual Root Latency

  • P2P 비활성화 — Dual-Root 시스템에서 GPU 간 지연시간 높음
  • P2P 활성화 — Dual-Root 시스템에서 동일 CPU/PCIe Root의 GPU 간 지연시간significant 감소
  • Single-Root P2P 활성화 — Dual-Root 대비 현저한 지연시간 감소 — Single-Root PCIe 시스템으로 이동하는 주요 동력


Configuration

P2P 활성화

# P2P 상태 확인
$ nvidia-smi topo -m

# P2P 활성화 (BIOS/UEFI에서 IOMMU/VT-d 비활성화 필요)
# NVIDIA 드라이버가 자동으로 P2P 감지 및 활성화

PCIe Switch 계층화

Single-Root 구성에서 PCIe 스위치를 계층적으로 연결하여 더 많은 GPU 연결:

CPU → PCIe Switch Tier 1 → PCIe Switch Tier 2 → GPU 0-7
                        → GPU 8-15


Examples

Example 1: 8x GPU Dual-Root 시스템

CPU 1: GPU 0-3 (PCIe Switch 1)
CPU 2: GPU 4-7 (PCIe Switch 2)
QPI/UPI: CPU 간 연결
P2P: GPU 0-3 간, GPU 4-7 간만 가능
SOC: GPU 0-3 ↔ GPU 4-7 간 통신

Example 2: 10x GPU Single-Root 시스템

CPU 1: GPU 0-9 (PCIe Switch 계층화)
QPI/UPI: 불필요
P2P: 모든 GPU 간 가능
SOC: 없음 — 모든 GPU가 단일 CPU에 연결


Best Practices

  • 딥러닝 워크로드 — Single-Root 구성 권장 (P2P 대역폭 우선)
  • Infiniband 다중 카드 구성 — Dual-Root에서 각 CPU에 하나씩 배치
  • PCIe 스위치 계층화 시 지연시간 모니터링
  • P2P 활성화 전 BIOS에서 IOMMU/VT-d 비활성화 확인
  • AMD EPYC 시스템 — Infinity Fabric 인터커넥트 활용


Limitations

  • Single-Root: 단일 CPU의 PCIe 레인 수 제한
  • Dual-Root: QPI/UPI 대역폭 병목 가능
  • PCIe 스위치 계층화: 추가 지연시간 발생
  • P2P: IOMMU/VT-d 활성화 시 성능 저하
  • GPU 7 등 특정 GPU에서 이상 현상 가능 (벤치마크 참고)


References


Related Pages

Knowledge Graph

Related

ACSBifurcationCPU featuresAER (Advanced Error Reporting)PCIeASPMPCIe 5.0