«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Параллельная машина JavaScript

Параллельная машина JavaScript

Опубликовано 6 ноября 2024 г.
Просматривать:264

Автор: Владас Саулис, ЧП «Продата», Клайпеда, Литва

18 мая 2024 г.

Абстрактный
В этой статье представлена ​​новая модель программирования, которая может использовать многоядерные процессорные системы простым и автоматически сбалансированным способом. Эта модель также предлагает более простую парадигму программирования для разработки параллельных задач и систем в большинстве областей параллельных вычислений, таких как прогнозирование погоды, ядерная физика, поисковые системы и т. д.

В последнее время мы сталкиваемся с новым сдвигом в философии вычислений, вызванным появлением новой аппаратной архитектуры и еще большей производительностью. Многоядерная архитектура станет преобладающей технологией в ближайшем будущем.

Что мы можем сделать, чтобы этим воспользоваться? Эта статья посвящена одному из возможных решений.

Предложенная вычислительная модель (которая называется «Модель объектного потока») также дает некоторые ответы на вопросы, поднятые в известной опубликованной статье Беркли [1]. Вот краткий список преимуществ, которых можно достичь с помощью этой модели:

· Простой процесс программирования и дальнейшего обслуживания

· Естественная интеграция и миграция OPU (ЦП), когда блоки обработки объектов (OPU) можно добавлять или удалять «на лету»

· Автоматическая балансировка нагрузки

· Нет необходимости в синхронизации между частями задачи

· Небольшая или нулевая взаимная блокировка на уровне системы

Все эти характеристики реализованы в параллельной машине JavaScript (PJM), которая описана ниже в этом документе. PJM можно воспринимать как мини-операционную систему, которая управляет множеством задач JavaScript, несколькими пользователями и несколькими внешними консолями.

Введение
Основная цель PJM (ОС) — упростить параллельное программирование за счет введения специальных инструкций (подсказок), которые представлены специально созданными комментариями в виде //#pragma .

Параллельная машина JavaScript использует NodeJS и реализована как веб-сервер для внешнего интерфейса, а также как сервер для OPU, которые действительно выполняют параллельное выполнение кода. OPU — это небольшие сетевые клиенты JavaScript, также реализованные в NodeJS. Их может быть столько, сколько необходимо, подключенных к основному серверу параллельной машины локально или удаленно. Общая производительность параллельной обработки сильно зависит от количества подключенных OPU.

Все части системы, работающие вместе, можно понимать как мини-ОС, которая запускает и анализирует выполняемые задачи JavaScript, помещает их фрагменты в очередь выполнения системы и обеспечивает своего рода совместную многозадачность между выбранными фрагментами. Результаты вычислений выводятся на консоль веб-клиента путем передачи вывода console.log из OPU через главный сервер. Каждый OPU назначается своему ЦП (локальному или удаленному) и работает через простой циклический планировщик (будет объяснено позже). Это достигается за счет использования модуля Node менеджера процессов PM2.

«Хотя совместимость со старыми двоичными файлами и программами на языке C ценна для промышленности, и некоторые исследователи пытаются помочь планам многоядерных продуктов добиться успеха, мы думаем о более смелых мыслях. Наша цель — реализовать тысячи процессоров…»[1] не обязательно на одном физическом компьютере, а во всей сети, и все это управляется центральным сервером. С точки зрения системы все ЦП/ОПУ работают по протоколу внутренних сетевых сокетов, который не делает различия между локальными и удаленными ЦП. Сервер (PJM) и клиенты (OPU) — все написано на JavaScript, поэтому [пока] несовместимо с двоичными файлами C.

Все параллельные программы, работающие в PJM, не должны использовать расширения JavaScript ES6 (должны использоваться ES5). Здесь важно отметить, что такие расширения, как классы, стрелочные функции, let и consts и, особенно, async/await вряд ли поддаются распараллеливанию, что требует более тщательного исследования внутреннего устройства JavaScript. Вот почему PJM работает на NodeJS V8.2.1. Все модули узлов привязаны к этой версии для повышения производительности и ясности понятий.

PJM контролируется, а задачи выполняются с помощью веб-консоли, расположенной по адресу http://parallel-js.net:8888. А вот как это обычно выглядит:

Parallel JavaScript Machine

Веб-консоль написана с использованием платформы ExtJS и подключена к серверу PJM с помощью express.js HTTP-модуля NodeJS. Другая часть веб-консоли (называемая «Консоль и сообщения») подключается с помощью WebSockets. Сюда в режиме реального времени поступают выходные данные всех программ и системные сообщения. Важно знать, что никакие реальные вычисления не выполняются в веб-консоли — все вычисления выполняются на сервере PJM и OPU.

Если вас заинтересовал этот проект, полную статью можно найти здесь.

Исходный код этого проекта находится здесь.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/vsaulis/parallel-javascript-machine-551k?1. Если обнаружено какое-либо нарушение прав, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3