Ожидается, что количество устройств, подключенных к Интернету, вырастет с 15 миллионов устройств сегодня до 200 миллионов подключенных устройств к 2020 году. Что, если бы большая часть их процессорного времени простаивала? Что, если бы большинство этих устройств могли запускать JavaScript?

Я думал над этими вопросами во время своего отпуска, и мне удалось разработать доказательство концепции, которая эффективно демонстрирует зачатки того, что может стать первым распределенным суперкомпьютером IoT с массовым параллелизмом!

Что такое суперкомпьютер? Его просто определяют как компьютер с высокой вычислительной мощностью. Производительность суперкомпьютера измеряется количеством операций с плавающей запятой в секунду (FLOPS). Самым мощным компьютером на сегодняшний день является IBM Sequoia стоимостью 655 миллионов долларов и производительностью 16,32 петафлопс, за которым следует японский компьютер K стоимостью более 1 миллиарда долларов и производительностью 10,51 петафлопс.

Каждое IoT-устройство, которое подключается к этому суперкомпьютеру, по сути является распределенным ядром компьютера. Настоящие многоядерные компьютеры, подключенные к этому суперкомпьютеру, могут использовать все свои ядра для платформы. На рынке уже есть более 6 миллионов Raspberry Pis, которые могут быть использованы в качестве ядер этого суперкомпьютера. Существует также новая плата за 99 долларов под названием Parallella, которая поставляется с 16 ядрами! По моим подсчетам, потребуется всего около 10 000 плат Parallella, чтобы претендовать на статус суперкомпьютера начального уровня.

Теперь вернемся к моему эксперименту. Я написал очень простое приложение Node.JS, которое вычисляет 9000 факториалов (9000!), которое выглядит следующим образом:

В приведенном выше примере Node.JS вычисление 9000 занимает примерно 7 секунд! на одном ядре Macbook Pro.

Если вы запустите этот скрипт на 3 ядрах (по 3000 на каждом) параллельно, он вычислит примерно за 2,5 секунды! Вот пример нового скрипта:

Что интересно в этом сценарии, так это то, что он работает как ядро ​​суперкомпьютера и отправляет каждое из 3000! заданий на трех ядрах, собирает их ответы и умножает каждый из трех ответов, чтобы получить тот же результат, что и в примере с одним ядром, но в треть раза быстрее! Каждое ядро ​​работает как лямбда-подпрограмма с заданным параметром времени жизни (TTL) и может принимать приложения и данные на основе javascript (или даже локальные команды ОС) в полезной нагрузке вычислительных инструкций.

Я воодушевлен этими результатами и очарован этой концепцией суперкомпьютера Интернета вещей! Я зарегистрировал домен computes.io, если вы хотите следить за моими успехами. Быть в курсе…