경계선 위의 예술가

622025년 09월 02일4

배터리 소모 문제에 대한 해결책으로 powerPreference 옵션이 도입되자, 개발자들은 비로소 성능과 효율 사이의 균형을 고민하기 시작했다. 하지만 이 새로운 선택지는, 또 다른 종류의 논쟁과 혼란을 낳았다.

논쟁의 중심에는 한 유명 웹 게임 개발 스튜디오의 CTO, 마커스가 있었다. 그는 자신의 블로그에 도발적인 글을 올렸다.
powerPreference는 좋은 시작입니다. 하지만 이것만으로는 부족합니다. 왜 우리는 애플리케이션 시작 시점에 ‘고성능’과 ‘저전력’ 중 하나를 양자택일해야만 합니까?”

그는 자신들의 게임을 예로 들었다.
“저희 게임에는 화려한 전투가 벌어지는 메인 게임 화면과, 아이템을 관리하는 정적인 인벤토리 화면이 있습니다. 전투 중에는 당연히 고성능 외장 GPU의 힘이 필요합니다. 하지만 인벤토리 화면에서는 굳이 외장 GPU를 돌릴 필요가 없죠. 저전력 내장 GPU만으로도 충분합니다. 왜 우리는 실시간으로 이 둘 사이를 전환할 수 없는 거죠?”

그의 질문은 매우 날카롭고 현실적이었다.
현재의 WebGPU 사양에서는, GPUDevice가 한번 생성되면 그 애플리케이션은 해당 GPU에 종속되었다. 다른 GPU로 전환하려면 페이지 전체를 새로고침해야만 했다.

이 글은 W3C 커뮤니티에서 즉시 뜨거운 감자로 떠올랐다.
“다중 GPU 실시간 전환? 기술적으로 가능은 한가?”
“구현이 너무 복잡해지고, 브라우저의 안정성을 해칠 수 있다.”

반론이 거셌다. 하지만 드미트리는 마커스의 글에서 미래의 가능성을 보았다.
그는 팀 미팅에서 이 문제를 공유했다.
“이것은 단순한 기능 요청이 아닙니다. 이것은 우리가 GPU를 바라보는 관점을 바꾸라는 요구입니다. GPU를 하나의 고정된 하드웨어가 아니라, 상황에 따라 선택해서 사용할 수 있는 ‘자원 풀(Resource Pool)’로 보라는 거죠.”

그는 화이트보드에 새로운 시나리오를 그렸다.
한쪽에는 고성능 외장 GPU(dGPU)가 렌더링 파이프라인을 실행하고 있었다. 다른 한쪽에는 저전력 내장 GPU(iGPU)가 컴퓨트 셰이더를 이용해 백그라운드에서 비디오를 처리하고 있었다. 그리고 이 두 GPU가 계산한 결과물을, 브라우저의 컴포지터가 최종적으로 하나의 화면으로 합성했다.

“상상해 보십시오. 개발자가 동시에 여러 개의 GPUDevice를 생성하고, 각각의 장점을 활용하여 작업을 분배하는 겁니다. 렌더링은 dGPU에, 비디오 처리는 iGPU에, 머신러닝 연산은 별도의 AI 가속기 칩에 맡기는, 진정한 의미의 이기종 병렬 처리(Heterogeneous Parallelism).”

그의 비전에 팀원들은 압도되었다. 이것은 WebGPU를 넘어, 웹 플랫폼 전체의 컴퓨팅 모델을 바꾸는 거대한 그림이었다.

하지만 카이가 현실적인 문제를 제기했다.
“어떻게 서로 다른 GPU에 있는 자원들을 공유하죠? dGPU의 메모리에 있는 텍스처를, iGPU가 어떻게 직접 읽어올 수 있습니까? 둘은 물리적으로 분리된 칩입니다.”

그것이 바로 핵심적인 기술적 난관이었다.
드미트리가 대답했다.
“직접 읽어올 수는 없겠지. 하지만 우리는 ‘복사’할 수는 있어. 한 디바이스의 버퍼나 텍스처 내용을, 다른 디바이스로 효율적으로 전송하는 새로운 API가 필요해. queue.copyExternalImageToTexture 같은 기존의 API를 확장하는 방식이 될 수도 있겠지.”

이것은 다중 GPU 지원을 위한 첫 번째 구체적인 아이디어였다.
이 아이디어는 곧바로 ‘Device 간 자원 공유(Inter-Device Resource Sharing)’라는 이름으로 W3C에서 논의되기 시작했다.

논의는 쉽지 않았다.
운영체제마다, 드라이버마다 다른 GPU 간의 데이터를 복사하는 방식은 천차만별이었다. 어떤 시스템은 제로-카피(Zero-Copy) 공유 메모리를 지원했지만, 어떤 시스템은 느린 시스템 메모리를 거쳐야만 했다. 이 모든 복잡성을 숨기고 개발자에게는 일관된 API를 제공하는 것은 또 다른 차원의 추상화가 필요한 작업이었다.

드미트리는 이 문제가 단기간에 해결되지 않을 것임을 알았다. 이것은 메시 셰이더나 타임라인 동기화보다도 더 거대하고 복잡한, WebGPU의 다음 세대를 정의할 과제였다.

그는 블로그에 글을 올렸던 마커스에게 개인적으로 메일을 보냈다.
“당신의 질문은 우리 커뮤니티에 중요한 화두를 던졌습니다. 당장 해결책을 드릴 수는 없지만, 우리는 지금 당신이 제기한 문제를 해결하기 위한 첫걸음을 내디뎠습니다. 언젠가 웹 개발자들이 여러 개의 GPU를 자유자재로 지휘하는 날이 올 겁니다. 그때가 되면, 당신과 같은 예술가들이 그 경계선 위에서 어떤 놀라운 작품을 만들어낼지 기대하고 있겠습니다.”

그의 메일에 마커스는 짧게 답했다.
“그날을 기다리겠습니다. 저희는 언제나 한계에 도전할 준비가 되어 있습니다.”

드미트리는 그 답장을 보며, 자신이 하는 일의 본질을 다시 한번 생각했다.
그는 단지 기술적인 문제를 푸는 엔지니어가 아니었다. 그는 세상의 모든 창의적인 예술가들이, 자신들의 상상력을 가두는 기술의 경계선을 넘어설 수 있도록, 그 경계 자체를 끊임없이 밀어 올리는 사람이었다.