Dual vs Single PCIe Root Configuration: Difference between revisions
Jump to navigation
Jump to search
(Add categories: Hardware, Configuration, Comparison) |
(Phase 6.1: LLM-Optimized Wiki Template 적용) |
||
| Line 1: | Line 1: | ||
= | {{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 === | ||
모든 GPU가 동일한 CPU에 연결됩니다. 일반적으로 PCIe 스위치를 사용하여 이를 처리합니다. | |||
* 장점: QPI/UPI 링크를 거치지 않아 P2P 대역폭 약 2배 향상, SOC(Switch-of-CPU) 엔트리 없음 | |||
* 단점: 단일 CPU의 PCIe 레인 수 제한, PCIe 스위치 추가 계층화로 인한 약간의 지연시간 증가 | |||
* 사용 사례: 딥러닝 서버, 대용량 AI/데이터 처리 시스템 | |||
=== Dual-Root Configuration === | === 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 활성화 === | |||
<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 인터커넥트 활용 | |||
--- | |||
=== Single Root | == 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:Hardware]] | ||
[[Category:Configuration]] | [[Category:Configuration]] | ||
[[Category:Comparison]] | [[Category:Comparison]] | ||
Revision as of 15:03, 15 July 2026
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 선택 흐름:
- 시스템 요구사항 분석 — GPU 수, P2P 필요성, 대역폭 요구
- Single-Root 또는 Dual-Root 아키텍처 선택
- PCIe 스위치 구성 및 연결 설계
- P2P 설정 활성화/비활성화
- 성능 벤치마크 및 검증
| 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
---