Un ricercatore Intel ha avuto la brillante idea di sfruttare le librerie OpenCL per parallelizzare calcoli vettoriali in Javascript.Come tutti sappiamo il futuro è strettamente legato con il web, non solo perché la comunicazione è la naturale espressione dell’uomo ma anche perché le maggiori ditte stanno puntando su di esso.
In particolare sembra che le nostre applicazioni debbano essere fruibili tramite il web e quindi attraverso il browser e javascript è la tecnologia più interessante per questo. Magari potete non essere d’accordo, in fondo siamo ancora legati alle applicazioni installate in locale sui nostri hard-disk, senza tutto questo over-head dovuto a linguaggi interpretati.
Anche la Intel fa la sua parte in questa grande corsa al software-as-service ed ha sviluppato una estensione che dovrebbe essere in grado di eseguire codice Javascript in parallelo, ovvero sfruttare anche per il web le potenzialità dei multi-core. In particolare l’estensione dovrebbe sfruttare sia le capacità di sfruttare multi-core che le istruzioni vettoriali (SSE/AVX) dei moderni processori.
Per ora è disponibile una estensione per Mozilla Firefox che implementa questa estensione e permette di sfruttare questa tecnologia. Il guadagno su calcoli paralleli e vettoriali è garantito e nel video della presentazione è possibile notare come ci sia un certo guadagno di prestazioni (anche superiore al 50%) .
Come viene rimarcato il modello utilizzato è incentrato sui dati ed infatti l’estensione mette a disposizione un nuovo tipo di dato ParallelArray appunto. Il costruttore di questo tipo prende in input un classico array Javascript (ma anche un canvas quindi una array di pixel) e lo trasforma in una struttura di tipo read-only, a questo punto avrete a disposizione 5 metodi “parallelizzati” per poter lavorare su questi dati: map,reduce, scan, filter combine. Queste funzioni sono esattamente le stesse già presenti in altri linguaggi di programmazione.
Tutti quanti i metodi anziché lavorare sequenzialmente su ciascun elemento dell’array vi lavorano parallelamente sfruttando le librerie OpenCL, questo vuol dire che è necessario dell’hardware capace di accelerare calcoli vettoriali. L’estensione che presenta Intel è ovviamente relegata alle sole CPU Intel multi-core, ma in teoria i sorgenti potrebbero essere modificare per utilizzare qualsiasi altro backend ed in particolare quello delle schede video AMD e Nvidia. Staremo a vedere. Qui il link all’annuncio.