펜스 및 배리어로 구동되는 GPU 간단한 설명
소개
GPU Driven 환경에서 Fence와 Barrier는 GPU 작업의 동기화를 관리하는 중요한 메커니즘입니다. GPU 작업은 CPU와 독립적으로 실행되기 때문에, 작업이 언제 완료되었는지, 또는 특정 작업이 완료될 때까지 다른 작업을 기다려야 하는 경우 등을 효율적으로 관리해야 합니다. Fence와 Barrier는 이러한 동기화 문제를 해결하기 위해 사용됩니다.
Fence
Fence는 GPU 작업의 완료 상태를 확인하는 데 사용되는 메커니즘입니다. 특정 작업이 완료되었는지 여부를 쿼리하여, 그 결과에 따라 다음 작업을 수행할 수 있도록 합니다.
종류:
- Signal Fence: GPU 작업이 완료되면 설정되는 펜스입니다.
- Wait Fence: 특정 펜스가 시그널 상태가 될 때까지 CPU 스레드를 블록합니다.
특징:
- 정확한 작업 완료 확인: GPU 작업이 실제로 메모리에 데이터를 쓰는 등의 작업을 완료했는지 정확하게 확인할 수 있습니다.
- 유연한 동기화: 다양한 시나리오에 맞춰 유연하게 동기화를 설정할 수 있습니다.
- 낮은 오버헤드: 일반적으로 Barrier에 비해 오버헤드가 낮습니다.
사용 예시:
- GPU 작업이 완료된 후 CPU에서 결과 데이터를 처리해야 하는 경우
- 여러 개의 GPU 작업을 순차적으로 실행해야 하는 경우
Barrier
Barrier는 여러 개의 스레드 또는 GPU 커널이 특정 지점에서 모두 동기화될 때까지 기다리는 메커니즘입니다. 모든 스레드가 Barrier에 도달하면, 모든 스레드가 Barrier를 통과하고 다음 작업을 수행할 수 있습니다.
종류:
- Binary Barrier: 두 개의 스레드가 동기화될 때 사용합니다.
- Counting Barrier: 여러 개의 스레드가 동기화될 때 사용합니다.
특징:
- 집단 동기화: 여러 개의 스레드가 동시에 진행해야 하는 작업에 적합합니다.
- 간단한 사용: Fence에 비해 사용법이 간단합니다.
- 높은 오버헤드: 모든 스레드가 Barrier에 도달해야 하므로, Fence에 비해 오버헤드가 높을 수 있습니다.
사용 예시:
- 여러 개의 GPU 커널이 동일한 데이터를 사용해야 하는 경우
- 병렬 처리된 작업의 결과를 합쳐야 하는 경우
Fence와 Barrier의 비교
특징 | Fence | Barrier |
동기화 단위 | 개별 작업 | 여러 스레드 |
정확성 | 정확한 작업 완료 확인 |
모든 스레드의 동시 도달 확인
|
유연성 | 높음 | 낮음 |
오버헤드 | 낮음 | 높음 |
사용 시나리오 | 개별 작업의 완료 확인, 순차적 작업 실행 |
병렬 처리된 작업의 동기화, 집단 작업
|
'GRAPHICS PROGRAMMING' 카테고리의 다른 글
RHIDrawIndexedPrimitiveIndirect 또는 DrawMeshInstancedIndirect 와 GPU Buffer 개요. (0) | 2024.10.18 |
---|---|
볼만 한 책들 (3) | 2024.10.16 |
[올드스쿨]VBO WITH RE STRUCTURE EDGE. (0) | 2024.07.12 |
[최적화]IPC with GPU. (1) | 2024.07.12 |
캐릭터 렌더링 표현 기법 통합본 연재 계획. (0) | 2023.09.06 |