TECHARTNOMAD | TECHARTFLOWIO.COM

GRAPHICS PROGRAMMING

GPU Driven with Fence & Barrier simple explanation

jplee 2024. 8. 10. 18:53

펜스 및 배리어로 구동되는 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
동기화 단위 개별 작업 여러 스레드
정확성 정확한 작업 완료 확인
모든 스레드의 동시 도달 확인
유연성 높음 낮음
오버헤드 낮음 높음
사용 시나리오 개별 작업의 완료 확인, 순차적 작업 실행
병렬 처리된 작업의 동기화, 집단 작업