미래를 향한 다리

982025년 09월 20일5

WebGPU 적합성 테스트 스위트(CTS)의 수호자로서, 드미트리는 표준의 안정성을 지키는 데 집중하고 있었다. 하지만 기술의 강물은 결코 한자리에 머무르지 않았다. 그가 과거의 기록을 정리하는 동안에도, 하드웨어 제조사들은 이미 다음 세대의 GPU 아키텍처를 향해 나아가고 있었다.

그 변화의 바람은, 엔비디아(Nvidia)의 차세대 GPU 아키텍처 발표회에서 시작되었다.
엔비디아는 ‘호퍼(Hopper)’라는 이름의 새로운 아키텍처를 공개하며, 이전과는 차원이 다른 새로운 기능을 선보였다. 그것은 바로 ‘셰이더 실행 재정렬(Shader Execution Reordering, SER)’ 이었다.

드미트리는 발표 영상을 보며, 전율에 가까운 충격을 받았다.
SER의 개념은 혁신적이었다.

전통적으로, GPU는 셰이더들을 제출된 순서대로, 혹은 비슷한 작업끼리 묶어서 실행했다. 하지만 이 과정에서 비효율이 발생했다. 예를 들어, 어떤 셰이더는 텍스처를 읽어오느라 잠시 기다려야 하고, 다른 셰이더는 복잡한 수학 연산을 하느라 바빴다. GPU의 모든 유닛이 항상 100% 활용되지는 못했다.

하지만 SER은 이 모든 것을 바꾸었다.
이제 GPU 드라이버와 하드웨어는, 실행 중인 수천 개의 셰이더 스레드들의 작업 패턴을 실시간으로 분석한다. 그리고 서로 관련 없는 작업들을, 원래의 실행 순서와 상관없이, 즉석에서 뒤섞고 재배치하여 GPU의 모든 유닛이 단 한 순간도 쉬지 않고 일하도록 만드는 것이다.

마치 숙련된 물류 센터 관리자가, 컨베이어 벨트 위의 수많은 택배들을 실시간으로 재분류하여, 모든 작업자가 멈춤 없이 자신의 일에만 집중할 수 있도록 만드는 것과 같았다.
엔비디아는 이 기술을 통해, 특히 레이 트레이싱 워크로드에서 최대 2~3배의 성능 향상을 이루었다고 발표했다.

이 발표는 WebGPU 커뮤니티에 거대한 질문을 던졌다.
“이런 새로운 하드웨어의 힘을, 웹에서 어떻게 활용할 수 있을까?”

문제는, SER과 같은 기술이 개발자에게 직접적인 API로 노출되지 않는다는 점이었다. 그것은 드라이버와 하드웨어의 가장 깊은 곳에서, 마법처럼 자동으로 일어나는 일이었다. 개발자가 제어할 수 있는 영역이 아니었다.

W3C 회의.
한 엔지니어가 회의적인 의견을 냈다.
“이것은 우리가 표준으로 다룰 수 있는 문제가 아닙니다. 하드웨어의 자동 최적화일 뿐입니다. 우리는 그저, 언젠가 모든 GPU가 이 기능을 지원하게 되면, 우리의 WebGPU 코드가 저절로 빨라지기를 기대하는 수밖에 없습니다.”

많은 이들이 그의 의견에 동의하는 듯했다.
하지만 드미트리의 생각은 달랐다.

“아닙니다. 우리는 더 적극적으로 움직여야 합니다.”
그가 입을 열었다.
“우리가 이 기술을 직접 제어할 수는 없습니다. 하지만 우리는, 우리의 셰이더가 이 기술의 ‘혜택을 최대한 받을 수 있도록’ 최적화하는 방법을 연구하고, 그 방법을 개발자들에게 알려줄 수는 있습니다.”

그는 새로운 종류의 ‘가이드라인’을 제안했다.
‘차세대 하드웨어 아키텍처를 위한 WGSL 작성 패턴’.

그는 엔비디아와 AMD, 인텔의 하드웨어 아키텍트들과 직접 소통하며, 그들의 새로운 GPU가 어떤 종류의 셰이더 코드를 선호하는지에 대한 정보를 수집하기 시작했다.

그 결과, 몇 가지 중요한 패턴들이 드러났다.

  • 데이터 지역성(Data Locality): 셰이더가 접근하는 데이터(텍스처, 버퍼)들이 메모리상에 서로 가깝게 모여 있을수록, 하드웨어의 재정렬 기능이 더 효율적으로 작동한다.
  • 분기 최소화(Branch Divergence): 스레드 그룹 내에서 if 문과 같은 조건 분기가 적을수록, 모든 스레드가 비슷한 경로로 실행되므로 재정렬에 유리하다.
  • 독립적인 작업 단위: 서로 다른 계산 결과 사이에 의존성이 적을수록, 드라이버는 그 작업들을 자유롭게 뒤섞을 수 있는 더 많은 기회를 가진다.

드미트리와 그의 팀은 이 원칙들을 바탕으로, 기존의 WebGPU 공식 샘플들을 다시 작성하기 시작했다.
그들은 코드의 논리를 바꾸지는 않았다.
대신, 데이터의 구조를 바꾸고, 계산의 순서를 재배치했다.

예를 들어, 이전에는 여러 개의 작은 버퍼에 나누어 저장했던 데이터를, 이제는 하나의 거대한 버퍼 안에 나란히 정렬했다.
복잡한 if-else 문으로 가득 찼던 코드를, 조건 분기 없이 동일한 계산을 수행하는, 더 영리한 수학적 트릭을 사용하여 다시 작성했다.

이러한 변경 사항들은 일반적인 GPU에서는 거의 성능 차이를 보이지 않았다.
하지만 SER과 같은 최신 기능을 갖춘 GPU 위에서 실행했을 때, 그 결과는 놀라웠다.
최적화된 코드는 이전보다 10~15% 더 빠른 성능을 보여주었다. API를 전혀 바꾸지 않고, 오직 셰이더를 작성하는 ‘방식’을 바꾸는 것만으로 이뤄낸 성과였다.

드미트리는 이 새로운 가이드라인을 WebGPU 공식 문서에 추가했다.
그것은 강제적인 규칙이 아니었다.
그것은 미래를 향한 다리였다.

그는 개발자들에게 말하고 있었다.
“WebGPU는 현재의 하드웨어 위에서 훌륭하게 작동합니다. 하지만 만약 여러분이 우리가 제시하는 이 패턴들을 따라 코드를 작성한다면, 여러분의 코드는 오늘뿐만 아니라, 내일 등장할 새로운 하드웨어 위에서도 저절로 더 빨라지게 될 겁니다.”

그는 이제 단순히 현재의 표준을 지키는 수호자를 넘어, 개발자들이 미래의 기술 변화에 자연스럽게 적응하고 그 혜택을 누릴 수 있도록, 보이지 않는 길을 미리 닦아놓는, 현명한 미래 설계자가 되어 있었다.