WebCL 데모 이동

소개



CUDA & OpenCL Advent Calendar 2014의 3일째입니다.

이번 Advent Calendar에서는, 브라우저상에서 OpenCL과 같은 기능을 실현하는 WebCL에 대해서 3회 정도로 나누어 써 가려고 생각합니다만, 첫회의 이번은 WebCL 자체의 소개나 실행 환경의 준비, 데모의 소개 하고 갑니다.

WebCL이란?



웹이 애플리케이션의 플랫폼으로서 성숙하고 있는 요즘, 웹 애플리케이션을 고속화하고 싶다는 요구도 점차 강해져 온 것 같다.

최근에는 asm.js등의 JavaScript를 고속화하는 구조나, Web Workers등의 JavaScript를 병행 동작시키는 구조도 정비되어 왔습니다.
이러한 다른 기술에 대해 WebCL은 기본적으로 OpenCL의 래퍼가 되어 있으므로, 디바이스에서 실행하는 프로그램은 네이티브 앱과 동일하게 되어, 네이티브 코드가 달리는 것나 GPU등의 헤테로지니어스 환경에 대응 할 수 있다는 큰 이점이 있습니다.

보안상의 문제나, 코딩의 어려움, 대체 수단의 존재등으로부터 좀처럼 Web의 본류까지는 길의 긴 WebCL입니다만, 어플리케이션에 따라서는, 서버측이 부담해 온 연산 리소스를, 비교적 여유가 있는 클라이언트측 브라우저에서 괜찮을 수 있습니다.

실행 환경 준비



그런데 개인적으로 매우 기대하고 있는 WebCL입니다만, 2014년 12월 현재 주요 브라우저(IE, Firefox, Google Chrome, Safari)에서는 표준적으로는 지원되지 않습니다.
몇 가지 WebCL을 작동시키는 방법이 있지만 Firefox에서 Nokia WebCL extension을 사용하는 것이 쉽습니다.

Firefox 버전에 대해서는 WebCL 웹 사이트 에서는 Firefox 30 ~ 35 로 테스트되고 있다고 쓰고 있습니다.
해당 버전의 Firefox를 시작한 후 링크을 누르고 나오는 지시에 따라 extension을 설치하십시오.
설치의 허가나 브라우저의 재기동이나를 끝내면 OK입니다.
튜토리얼 페이지 에 동작 확인 링크가 있으므로, 아래와 같은 표시가 되는지 확인합시다.


Mac OS 10.10.1 & Firefox 34.0에서 작동을 확인했습니다.

다른 실행 환경으로는 AMD가 개발하고 있는 Chromium-WebCL 뭔가가 있습니다.
또한 브라우저에서 작동하지는 않지만 NodeJS 용 WebCL과 동등한 JavaScript API를 제공하는 node-webcl이 Motorola에 의해 개발되었습니다.

덧붙여서 WebCL Specification의 Editor가 Nokia의 사람과 AMD의 사람으로, Workind Draft에는 Motorola의 사람도 들어가기도 합니다.

데모 이동



WebCL의 데모로 재미있는 것을 조금만 픽업해 보겠습니다.
  • Path Tracing

  • OpenCL 장치를 변경하거나 키 조작으로 카메라를 이동할 수 있습니다.
    카메라가 움직이면 당연히 다시 그리기가 필요합니다만, 디바이스가 GPU라면 좀처럼 바삭바삭 그려 줍니다.


  • N-Body Simulation

  • 여기는 JavaScript 구현과 WebCL 구현으로 속도 비교를 할 수 있는 것 같습니다.
    JavaScript 구현이 상당히 빠르고 비비리 ....



    이것을 봐 아시다시피, WebGL과 버퍼의 공유를 할 수 있으므로 터프한 계산을 하면서 묘화 하는 것이 Web 어플리케이션에서도 할 수 있게 되어 있습니다.

    다른 데모는 여기

    결론



    간단한 소개뿐이었습니다만, 브라우저상에서 GPU 컴퓨팅을 하는 매력을 느낄 수 있으면 다행입니다.
    다음 번부터 WebCL 프로그래밍 이야기에 들어갑니다.

    CUDA & OpenCL Advent Calendar 2014의 4일째는 @gos_k씨입니다.

    좋은 웹페이지 즐겨찾기