WebGPU: 문제 해결 팁 및 수정사항

François Beaufort
François Beaufort

게시일: 2024년 2월 7일, 최종 업데이트: 2025년 10월 17일

이 문서에서는 Chrome 브라우저에서 WebGPU가 작동하지 않거나 예상대로 작동하지 않는 이유를 설명하고, 가능한 경우 문제를 해결하는 명확한 단계를 제시합니다.

다음 예시는 navigator에서 gpu를 사용할 수 없는 경우 발생할 수 있는 JavaScript 오류를 보여줍니다.

const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')

다음 이유 중 하나가 원인일 수 있습니다. 다음 순서대로 확인하세요.

  1. WebGPU를 사용하려면 ChromeOS, macOS, Windows에서 Chrome 113 이상이 필요하고 Android에서는 Chrome 121 이상이 필요합니다. chrome://version에서 버전을 확인하고 필요한 경우 업데이트합니다.

  2. WebGPU는 보안 컨텍스트에서만 액세스할 수 있습니다. 안전하지 않은 프로토콜 (예: http:, file:)을 통해 코드를 제공하는 경우 안전한 https: 프로토콜을 사용하거나 웹 앱 개발 중에 다음 방법 중 하나로 이 문제를 해결하세요.

    • npx http-server 또는 python3 -m http.server 명령어를 사용하여 http://localhost 또는 http://127.0.0.1에서 코드를 로컬로 제공합니다.

    • chrome://flags/#unsafely-treat-insecure-origin-as-secure의 '보안으로 취급되는 안전하지 않은 출처' 목록에 출처를 추가하고 Chrome을 다시 시작합니다.

    • Node.js를 설치하고 npx servez --ssl를 실행하여 가짜 인증서로 https를 통해 폴더를 제공합니다. Chrome에서는 여전히 경고가 표시되지만 '고급'을 클릭한 다음 '...로 이동'을 클릭하여 무시할 수 있습니다.

    • ngrok을 사용하여 로컬 웹 서버를 인터넷에 노출합니다.

GPU 어댑터가 null임

다음은 requestAdapter() 호출에서 가져온 어댑터가 null일 때 발생할 수 있는 JavaScript 오류의 예입니다.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)

이 문제는 다음 이유 중 하나로 발생합니다. 다음 순서대로 확인하세요.

  1. 사용자가 chrome://settings/system에서 '가능한 경우 그래픽 가속 사용'을 사용 중지한 경우 WebGPU가 사용 중지됩니다. 이 설정이 사용 중지되어 있는지 확인하고 다시 사용 설정합니다.

  2. WebGPU는 아직 이 플랫폼에서 지원되지 않습니다. chrome://flags/#enable-unsafe-webgpu 플래그를 사용 설정하고 Chrome을 다시 시작하면 됩니다. Linux 실험 지원의 경우 chrome://flags/#enable-vulkan 플래그도 사용 설정해야 합니다. 자세한 내용은 헤드리스 Chrome의 WebGPU 지원을 참고하세요.

  3. GPU 하드웨어가 구체적으로 차단 목록에 추가되었습니다. chrome://gpu에 'WebGPU가 차단 목록 또는 명령줄을 통해 사용 중지됨'이 표시되면 chrome://flags/#enable-unsafe-webgpu 플래그를 사용 설정하고 Chrome을 다시 시작하여 WebGPU 어댑터 차단 목록을 사용 중지할 수 있습니다. chrome://flags/#ignore-gpu-blocklist 플래그를 사용 설정하고 Chrome을 다시 시작하여 내장 소프트웨어 렌더링 목록을 재정의할 수도 있습니다.

  4. requestAdapter()에 전달된 옵션과 일치하는 GPU 어댑터가 없습니다. 다른 옵션으로 requestAdapter()를 호출해 보세요.

  5. WebGPU에는 GPU (하드웨어 또는 소프트웨어 에뮬레이션)가 필요합니다. chrome://gpu를 방문하여 Chrome에서 GPU를 감지하는지 확인할 수 있습니다.

  6. GPU 프로세스가 여러 번 비정상 종료되었습니다. 페이지를 새로고침하거나 Chrome을 다시 시작하면 됩니다. 자세한 내용은 WebGPU 기기 손실 권장사항을 참고하세요.

WebGPU가 WebGL보다 느림

  1. chrome://gpu를 열고 'WebGPU: Hardware accelerated'를 읽을 수 있는지 확인합니다. 'WebGPU: 소프트웨어 전용, 하드웨어 가속을 사용할 수 없음'이라고 표시되면 GPU 드라이버를 업데이트해야 할 수 있습니다.

  2. WebGL 개념을 WebGPU로 직접 변환하면 WebGPU의 고유한 최적화를 최대한 활용하지 못할 수 있습니다. WebGL에서 WebGPU로를 확인하여 차이점을 알아보세요.

Windows 관련 제한사항

Windows 기기에서 WebGPU를 사용할 때는 다음 제한사항에 유의하세요.

  • Chrome에서는 여러 GPU 어댑터를 동시에 사용하는 것을 지원하지 않습니다. 문제 chromium:329211593을 참고하세요.

  • Chrome은 항상 다른 Chrome 워크로드에 할당된 동일한 GPU 어댑터를 사용합니다. 노트북의 경우 전력 사용 측면 (예: 절전)으로 인해 일반적으로 통합 그래픽 카드가 사용됩니다. 즉, requestAdapter()을 호출할 때 powerPreference 옵션이 아무런 영향을 미치지 않습니다. chrome://flags/#force-high-performance-gpu 플래그를 사용 설정하고 Chrome을 다시 시작하면 사용 가능한 경우 고성능 GPU를 강제로 사용할 수 있습니다.