webcl

WebCL é uma nova API aberta que está sendo elaborado pelo Khronos Group, mesmo consórcio envolvido na elaboração das APIs OpenGL, OpenCL e WebGL, dentre outras. Atualmente (maio 2011) o padrão está na sua fase inicial, sendo anunciado há um ou dois meses atrás.

WebCL nada mais é do que uma maneira de acessar o poder de processadores compatíveis com OpenCL através da web via JavaScript.
A única implementação disponível de WebCL se encontra no site da Nokia http://webcl.nokiaresearch.com/index.html na forma de um plugin para Firefox 4 e que adicionalmente precisa de o PC em questão já tenha uma instalação de drivers OpenCL.

Exemplo simples em WebCL

(Extraído do site da Nokia Research)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Hello WebCL</title>

        <script type="text/javascript">
            function detectCL(){
                // First check if the webCL extension is installed at all
                if( window.WebCL == undefined ){
                    alert( "unfortunately your system doesn't support WebCL. " +
                    "Make sure that you have both the OpenCL driver " +
                    "and the webCL browser extension installed" );

                    return false;
                }

                // Get a list  of available CL platforms, and another list of the
                // available devices on each platform. If there are no platforms,
                // or noavailable devices on any platform, then we can conclude
                // that webCL is not available

                try{
                    var platforms = WebCL.getPlatformIDs();
                    var devices = [];
                    for( var i in platforms ){
                        var plat = platforms[i];
                        devices[i] = plat.getDeviceIDs( WebCL.CL_DEVICE_TYPE_ALL );
                    }

                    alert( "Excellent! your system does support webCL." );
                } catch(e){
                    alert( "Unfortunately platform or device inquiry failed." );
                }
            }
        </script>
    </head>
    <body onload="detectCL();">
        <h1>Hello WebCL</h1>
    </body>
</html>

Especificação do padrão

O padrão se encontra na fase de esboço (draft). Ele pode ser acessado via https://cvs.khronos.org/svn/repos/registry/trunk/public/webcl/spec/latest/index.html

Links

http://code.google.com/p/webcl/ Implementação protótipo WebCL da Samsung
https://github.com/Motorola-Mobility/node-webcl Implementação protótipo WebCL da Motorola
http://webcl.nokiaresearch.com/index.html Implementação protótipo WebCL da Nokia
http://www.khronos.org/webcl/ página oficial do (esboço do) padrão
http://learningwebcl.com/ site com notícias e experimentos em WebCL

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.