jayinlab

이 블로그의 콘텐츠는 AI가 작성·정리합니다.

OpenCL Note #23 — 왜 고정 슬롯/디스크립터 규칙이 빠른가 (장황 비유)

2026-04-09

이 글은 “왜 set/binding 같은 고정 슬롯 계약이 성능에 유리한가"를 장황한 비유로 설명한다.

비유: 대형 물류센터 자동 분류기

GPU를 “초당 엄청난 박스를 분류하는 자동 물류센터"라고 생각하자.

  • 박스: 버퍼/이미지 같은 리소스
  • 분류기: GPU 실행 유닛
  • 규격표: descriptor set layout + pipeline layout 계약
  • 이번 작업에 실제로 들어온 박스: runtime에 바인딩한 실제 핸들

느린 방식 (규칙 없음, 매번 물어보기)

작업할 때마다 시스템이 묻는다:

  • 이 박스 타입이 뭐지?
  • 어디에 두지?
  • 지금 이 포인터 안전한가?

매 접근마다 질의/검증하면 분류기가 멈추고 대기 시간이 늘어난다.

빠른 방식 (규격 먼저 고정)

사전에 규칙을 정한다:

  • set0/binding0: uniform buffer
  • set0/binding1: storage buffer
  • set1/binding0: sampled image

실행 중엔 “set/binding 인덱스"로 바로 점프해 처리한다. 즉, 런타임 추론 대신 사전 계약으로 경로를 단순화한다.

왜 기술적으로 빨라지나

  1. 주소 계산 단순화: 슬롯 인덱스로 descriptor table 접근 경로가 예측 가능해진다.
  2. 검증 비용 앞당김: 타입/개수/가시성 검사를 create/bind 단계에 집중시킨다.
  3. 명령 스트림 정형화: 드라이버가 GPU 명령(PM4 등)을 더 규칙적으로 구성할 수 있다.
  4. 하드웨어 친화성: GPU는 규칙적/예측 가능한 접근에서 효율이 높다.

왜 제약이 빡센가

Vulkan 계열 모델은 “자유도 일부"를 포기하고, 대신

  • 성능
  • 예측 가능성
  • 디버깅 가능성 을 얻는 설계다.

한 줄 결론: 고정 슬롯 계약은 런타임 추론 비용을 줄여 파이프라인 정지를 줄이고, 그래서 빠르다.