Voir le flux RSS

Le Blog d'un Ninja codeur

[Actualité] gpu.js : le JavaScript accéléré par la carte graphique

Noter ce billet
par , 15/07/2017 à 01h58 (252 Affichages)
Nom : 1024.png
Affichages : 755
Taille : 17,1 Ko

Il se fait tard au moment où je tape ces quelques lignes, mais je viens de tomber sur quelque chose qui pourrait se révéler être un moyen d'optimisation très intéressant à l'heure où les applications JavaScript deviennent de plus en plus gourmandes en ressources de calcul. Le JavaScript étant principalement monothread et les calculs en JS étant pour une large part à l'heure actuelle synchrone, quand ils deviennent nombreux et complexes, ça peut devenir un problème comme dans le domaine des jeux vidéos, de la simulation numérique, du Big Data, de l'Intelligence Artificielle ou plus généralement du calcul scientifique qui commence à pointer le bout de son nez sur navigateur.

Il se trouve qu'un composant existant sur de nombreux ordinateurs, la carte graphique, est justement spécialisée dans le calcul numérique avec l'avantage que ces calculs peuvent être exécutés en parallèle, ce qui change tout. Depuis quelques années déjà, il existait des solutions pour détourner l'usage premier de la carte graphique, afficher des pixels, pour en faire une unité de calcul à vocation généraliste, concept connu sous l'acronyme barbare de GPGPU. Mais c'était réservé à quelques langages comme le C++, Python ou la plateforme .NET. Pour les développeurs JavaScript, point de salut, cela restait un peu le vide intersidéral.

Et bien, il se trouve que ce vide vient d'être comblé tout récemment puisqu'une bibliothèque du nom de gpu.js permet d'exécuter certains calculs sur la carte graphique et non pas sur le processeur principal qui sera ainsi libre de réagir aux interactions de l'utilisateur. Le champ d'action de cette bibliothèque est pour le moment assez restreint, mais elle n'en est qu'à sa version 0.0.Alpha. Il y a donc certainement de la marge de progression.

Mais déjà, selon le benchmark fourni en guise de démonstration et mon PC portable au moment où j'écris, les calculs seraient accélérés d'un facteur trois avec le circuit intégré Intel HD Graphics et au delà d'un facteur 8 avec une véritable carte graphique. Loin d'être négligeable donc.

Même si je n'ai pas encore vraiment pu regarder sous le capot, la bibliothèque doit sans doute générer des shaders à la volée qu'elle transmet ensuite à la carte graphique via la couche WebGL. A vérifier mais en gros, ça doit ressembler à quelque chose comme ça.

Quoiqu'il en soit, cela ouvre des perspectives tout à fait intéressantes pour le langage JavaScript. Si on considère le projet WebAssembly et l'évolution de la norme vers le parallélisme et la concurrence (Web Workers et SharedArrayBuffer), je vois mal ce qui ne pourra pas tourner à l'avenir sur le navigateur.

N'hésitez pas à me dire ce que vous pensez de cette bibliothèque.

Bon développement !

source : Site officiel

Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog Viadeo Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog Twitter Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog Google Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog Facebook Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog Digg Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog Delicious Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog MySpace Envoyer le billet « gpu.js : le JavaScript accéléré par la carte graphique » dans le blog Yahoo

Mis à jour 18/07/2017 à 10h36 par yahiko

Catégories
Javascript , Développement Web , 2D / 3D / Jeux

Commentaires