Maison > interface Web > js tutoriel > le corps du texte

Machine JavaScript parallèle

WBOY
Libérer: 2024-08-24 11:04:35
original
935 Les gens l'ont consulté

Auteur : Vladas Saulis, PE Prodata, Klaipėda, Lituanie

18 mai 2024

Résumé
Cet article présente un nouveau modèle de programmation capable d'utiliser des systèmes CPU multicœurs de manière simple et auto-équilibrée. Ce modèle propose également un paradigme de programmation plus simple pour développer des tâches et des systèmes parallèles dans la plupart des domaines de calcul massivement parallèles, tels que les prévisions météorologiques, la physique nucléaire, les moteurs de recherche, etc.

Ces derniers temps, nous sommes confrontés à un nouveau changement dans la philosophie informatique, provoqué par l'avancée d'une nouvelle architecture matérielle et des performances encore meilleures. L'architecture multicœur deviendra une technologie dominante dans un avenir proche.

Que pouvons-nous faire pour en profiter ? Cet article traite de l'une des solutions possibles que nous pouvons avoir.

Le modèle informatique proposé (appelé « Modèle de flux d'objets ») fournit également quelques réponses aux questions soulevées dans le célèbre article publié par Berkeley [1]. Voici une courte liste des avantages pouvant être obtenus en utilisant ce modèle :

· Processus de programmation simple et maintenance ultérieure

· Intégration et migration naturelles d'OPU (CPU) lorsque des unités de traitement d'objet (OPU) peuvent être ajoutées ou supprimées à la volée

· Équilibrage de charge automatique

· Pas besoin de synchronisation entre les parties de tâches

· Peu ou pas de verrouillage mutuel au niveau du système

Toutes ces caractéristiques sont implémentées dans la Parallel JavaScript Machine (PJM), qui est décrite ci-dessous dans ce document. PJM peut être perçu comme un mini système d'exploitation qui contrôle plusieurs tâches JavaScript, plusieurs utilisateurs et plusieurs consoles frontales.

Présentation
L'objectif principal de PJM (OS) est de simplifier la programmation parallèle en introduisant des instructions spéciales (indices) qui sont représentées par des commentaires spécifiquement conçus sous la forme de //#pragma .

La machine JavaScript parallèle utilise NodeJS et est implémentée en tant que serveur Web pour le frontend, ainsi qu'en tant que serveur pour les OPU qui effectuent réellement l'exécution parallèle du code. Les OPU sont également de petits clients réseau JavaScript implémentés dans NodeJS. Il peut y en avoir autant que nécessaire, connectés au serveur principal de la machine parallèle en local ou à distance. Les performances globales du traitement parallèle dépendent fortement du nombre d'OPU connectés.

Toutes les parties du système, travaillant ensemble, peuvent être comprises comme un mini-OS qui lance et analyse les tâches JavaScript en cours d'exécution, place leurs morceaux dans la file d'attente d'exécution du système et fournit une sorte de multitâche coopératif entre les morceaux sélectionnés. Les résultats du calcul sont imprimés sur la console du client Web en canalisant la sortie console.log des OPU via le serveur principal. Chaque OPU est attribué à son propre processeur (local ou distant) et fonctionne via un simple planificateur circulaire (cela sera expliqué plus tard). Ceci est réalisé grâce à l'utilisation du module Node du gestionnaire de processus PM2.

« Bien que la compatibilité avec les anciens binaires et programmes C soit précieuse pour l'industrie et que certains chercheurs tentent d'aider les projets de produits multicœurs à réussir, nous avons réfléchi à des idées plus audacieuses. Notre objectif est de réaliser des milliers de processeurs… »[1] non pas nécessaire sur un seul ordinateur physique, mais sur l'ensemble du réseau, le tout orchestré par l'unité centrale du serveur. Du point de vue du système, tous les CPU/OPU fonctionnent via un protocole de socket réseau interne qui ne fait pas de distinction entre les CPU locaux et distants. Le serveur (PJM) et les clients (OPU) — tous écrits en JavaScript, ils ne sont donc pas compatibles avec les binaires C [encore].

Tous les programmes parallèles qui s'exécutent dans PJM ne doivent pas utiliser les extensions JavaScript ES6+ (doivent utiliser ES5). Il est important de préciser ici que des extensions telles que classes, fonctions fléchées, let et consts et, en particulier, async/await sont difficilement parallélisables, ce qui nécessite une recherche plus approfondie sur les composants internes de JavaScript. C'est pourquoi PJM fonctionne sur NodeJS V8.2.1. Tous les modules de nœuds sont verrouillés sur cette version pour de meilleures performances et une clarté des concepts.

PJM est contrôlé et les tâches sont exécutées à l'aide de la console Web qui réside sur http://parallel-js.net:8888 . Et voici à quoi cela ressemble habituellement :

Parallel JavaScript Machine

La console Web est écrite à l'aide du framework ExtJS et connectée au serveur PJM à l'aide du module express.js HTTP NodeJS. Une autre partie de la console Web (appelée Console et Messages) est connectée à l'aide de WebSockets. C’est ici que les résultats de tous les programmes et les messages système arrivent en temps réel. Il est important de savoir qu'aucun calcul réel n'est effectué dans la console Web — tous les calculs sont effectués sur le serveur PJM et les OPU.

Si ce projet vous intéresse, merci de retrouver l'article complet ici.

Le code source de ce projet est ici.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal