Модуль BitScope Cluster содержит 150 мини-компьютеров Raspberry Pi с интегрированными сетевыми коммутаторами. Фото: BitScope
Программисты и учёные не всегда имеют свободный доступ к настоящему высокопроизводительному суперкомпьютеру, чтобы испытать свои программы. Тем более что суперкомпьютеры обычно и так заняты 24 часа в сутки другим софтом. Трудно найти окошко. Нужно заранее писать заявку и становится в очередь. Как же новая программа будет работать в реальной многопроцессорной среде, насколько хорошо распараллеливается задача?
В помощь разработчикам по заказу Отдела высокопроизводительных вычислений Лос-Аламосской национальной лаборатории австралийская компания BitScope разработала «тестовые» вычислительные модули BitScope Cluster из 150 мини-компьютеров Raspberry Pi, которые можно объединять в кластер и проверять на них свои программы.
В Лос-Аламосской национальной лаборатории работает один из десяти самых мощных суперкомпьютеров мира - Trinity .

Суперкомпьютер Trinity в Лос-Аламосской национальной лаборатории
Руководство лаборатории поставило задачу найти способ, как дать разработчикам доступ к высокопроизводительным параллельным вычислениям без реального доступа к самому суперкомпьютеру, чтобы они могли протестировать свои программы.
«Модули Raspberry Pi дают возможность разработчикам выяснить, как писать такое программное обеспечение и заставить его надёжно работать, без необходимости иметь испытательный стенд такого же размера стоимостью четверть миллиарда долларов и потребляющий 25 мегаватт электричества», - говорит Гэри Глайдер (Gary Glider) из Лос-Аламосской национальной лаборатории.
В самом деле, 25 мегаватт электричества на испытание своей программки - это слишком (здесь ещё не учтены расходы энергии на охлаждение, которые в несколько раз превышают энергопотребление самой вычислительной системы).

Установка системы водяного охлаждения для суперкомпьютера Trinity, которая эффективно использует систему рекультивации санитарных стоков
В каждом модуле 144 активных узла, шесть запасных и один управляющий узел. Модуль имеет формат 6U при установке в серверную стойку дата-центра. Как сообщается на официальном сайте, кластер из 1000 узлов занимает стойку 42U обойдётся по цене примерно $120-150 за узел. Это довольно большая наценка по сравнению со стандартной ценой Raspberry Pi, которая составляет, как известно, $35.
Каждый модуль BitScope Cluster состоит из строительных блоков - так называемых «кластерных пакетов» (Cluster Pack). Установка в стойки по одному юниту происходит именно в виде этих «пакетов».

Cluster Pack
Один узел (мини-компьютер Raspberry Pi 3) содержит 64-битный четырёхядерный процессор ARMv8 на частоте 1,2 МГц. Таким образом, если представить кластер, например, из пяти модулей, то там будет 720 активных узлов, то есть 2880 активных процессорных ядер. Вполне достаточно для тестирования, насколько хорошо распараллеливается программа.

Так выглядит вблизи один ряд мини-компьютеров в Cluster Pack
Хотя такое решение действительно намного дешевле суперкомпьютера, но всё-таки бюджетным его тоже не назовёшь. Позволить себе мини-кластер за $100 тыс. или $150 тыс. чисто для испытания программ может только крупная исследовательская организация. Собственно, такие модули и рассчитаны, наверное, на эти богатые исследовательские организации - владельцев суперкомпьютеров. Тем не менее, создатели мини-суперкомпьютера говорят, что это «самое экономически эффективное в мире масштабируемое решение: оно недорого в сборке, управлении и поддержке».
Модули BitScope Cluster дают и заметную экономию в энергопотреблении. Можете рассчитать сами энергопотребление каждого из них, считая по 5 Вт на один узел. Если считать, что у запасных узлов энергопотребление минимальное, то в модулей остаётся 144 активных и один управляющий узел. Всего 145×5=725 Вт.
Компания BitScope намерена выпустить эти модули в свободную продажу где-то в начале 2018 года.
По мнению компании, кроме разработки программного обеспечения, подобные кластеры могут быть полезны как симуляторы сенсорных сетей, в исследованиях высокопроизводительных сетей и Интернета вещей.
Вполне возможно, что это самый дешёвый и доступный кластер, построенный в домашних условиях.
В данный момент он считает задачки seti@home.
Сборка
Сборка не составляет особого труда - вот список материалов для повторения:
- 4 платы OrangePi PC (One тоже подойдет) с кабелями питания
- 16 стоек для печатных плат для крепления между собой
- 4 стойки (коротких) для крепления на подставку или использования в качестве ножек
- 2 куска оргстекла (верхняя и нижняя крышка)
- Вентилятор 92 мм
- 4 уголка для крепления вентилятора
- 100Mbs Ethernet HUB, желательно с питанием либо 5, либо 12 вольт
- Патчкорды для соединения Ethernet в необходимом количестве (кстати, поскольку сеть все равно 100 МБит, можно использовать 4х-жильную телефонную лапшу и немного сэкономить на кабеле)
- Источник питания (об этом позже)
- Для связи с внешним миром - дешёвый USB WiFi
Скручиваем вместе четыре платы, крепим верхнюю и нижнюю крышки, ставим вентилятор с использованием уголков. На верхнюю крышку водружаем хаб и соединяем наш всё вместе через Ethernet.
А вот так “изделие” выглядит “с тыльной стороны”.

К сожалению, синей изоленты не было - так что хаб крепим резиночками.
Питание
Каждая из OPI потребляет не меньше ампера (производитель рекомендует источник не меньше 1.5…2A). Вентилятор требует 12 вольт, хаб тоже, хотя бывают и 5-вольтовые модели.
Так что потребуется хороший источник питания с двумя напряжениями.
Старый компьютерный вполне подойдет, но лучше использовать современный безвентиляторный импульсный источник, например от MeanWell.
Я, собственно, так и поступил, упаковав его в корпус от винтажного блока питания и выведя наружу обычный молекс-разъем (как на компьютере).

Для “раздачи” 5ти вольт будем использовать модифицированный USB-хаб из дешевых. Для этого можно либо высверлить чип, либо просто отрезать ножки данных, оставив только цепи питания и землю. Я остановился на втором способе, правда внутри проложил еще “толстые” соединения на линии 5В. Ну и повесим ответный molex для соединения с БП. Получается примерно так:

А вот вся конструкция в сборе:

Система
Вообще, это просто “маленькая локальная сеть из 4х компьютеров”.
В качестве базовой системы - обычный Debian, о котором уже много говорили .
Сеть
Самый верхний узел - clunode0, он умеет соединяться по WiFi с внешней сетью, при этом раздает “интернет” на машины clunode1, clunode2, clunode3. Там же работает сервер NFS для общего хранилища и dnsmasq для раздачи DHCP адресов вида 10.x.x.x.
На clunode0 в /etc/network/interfaces примерно такая запись:
| 1
2 3 4 5 6 7 8 9 10 11 12 13 | auto wlan0
allow-hotplug wlan0 iface wlan0 inet dhcp wpa-scan-ssid 1 wpa-ap-scan 1 wpa-key-mgmt WPA-PSK wpa-proto RSN WPA wpa-pairwise CCMP TKIP wpa-group CCMP TKIP wpa-ssid "MyWiFi" wpa-psk "MyWiFiPassword" post-up /usr/local/bin/masquerade.sh eth0 wlan0 iface default inet dhcp |
Хотя, вроде как там ситуация переломилась и бинарник можно сгрузить с сайта. Не проверял - проще было собрать самому.
Еще можно установить и настроить консольную утилиту boinctui . Выглядит всё вполне пристойно (animated GIF):

Перспективы
Можно развить идею - вот навскидку несколько идеек:
- Первая плата (clunode0) - load balancer, сlunode2,3 - веб-сервера или приложение, clunode4 - БД ==> микродатацентр:)
- Hadoop (и такие случаи уже есть, народ строит кластеры на Raspberry)
- Proxmox кластер, правда я не уверен, что все запчасти доступны для ARM
- Майнер cryptocurrency, если конечно подберете криптовалюту, которую всё еще выгодно майнить на процессоре и выгодно майнить вообще.
Спасибо, что дочитали до конца.
Используется энтузиастами для самых различных целей. Так, например энтузиаст Дэвид Гилл (David Guill) решил использовать его для постройки кластера - группы компьютеров, соединенных между собой и представляющих, с точки зрения пользователя, единый аппаратный ресурс. Проект решено было назвать 40-Node Raspi Cluster. Стоит заметить, что кластер Дэвиду был необходим для того, чтобы набраться опыта в программировании на распределенных системах, так что кластер из Raspberry Pi будет заменять собой, на время обучения, настоящий супер-компьютер.
По простому можно было бы собрать кластер из Raspberry Pi, используя вместо корпуса стелаж или недорогой шкаф (как в случаи с ), но поскольку Дэвид увлекается моддингом, то и кластер он решил сделать стильный, максимально приближенный по своему виду и удобству к серийным решениям. И, надо сказать, у Дэвида это получилось, ведь его проект намного более продуман, чем многие серийные корпуса. Кстати, сделан корпус проекта 40-Node Raspi Cluster из акриловых панелей, нарезанных по размеру с помощью лазера и склеенных вручную.
Основными отличительными особенностями проекта 40-Node Raspi Cluster стали: крутой внешний вид, достаточно компактный размер (как большая башня), удобный доступ ко всем компонентам и возможность их замены без необходимости разбирать корпус, безвинтовое крепление частей коруса и многих комплектующих, а также порядок в проводах (а их в данном проекте ой как не мало). Данный проект включает в себя 40 компактных компьютеров Raspberry Pi (40 ядер Broadcom BCM2835 с частотой 700 МГц, 20 ГБ распределенной оперативной памяти), два 24-портовых свитча, один блок питания форм-фактора ATX, пять жестких дисков емкостью по 1 ТБ (с возможностью расширения до 12 штук), 440 ГБ флеш-памяти, а также роутер с возможностью беспроводного подключения.
Компьютеры Raspberry Pi в данном проекте сгруппированы по четыре штуки на кастомных акриловых креплениях, которых в данном проекте десять штук. Благодаря такому креплению (как в блейд-серверах), обеспечивается удобный доступ и легкая замена компактных компьютеров. Для каждого блейда с Raspberry Pi предусмотрен свой компактный DC-DC преобразователь, питающийся от общего ATX блока питания. Охлаждение кластера реализовано с помощью четырех 140 мм вентиляторов, за которыми установлены фильтры.
Дополнительной «моддинговости» проекту 40-Node Raspi Cluster добавляет обилие светодиодов - их в проекте более трех сотен (на мини-компьютерах, свитчах, роутерах и вентиляторах), при этом в процессе работы они будут мигать в соответствии с нагрузкой. Размеры данного проекта составляют 25 х 39 х 55 см, а примерная стоимость постройки - 3000 долларов.
С внешним и внутренним видом, а также с особенностями, проекта 40-Node Raspi Cluster вы можете ознакомиться по прикрепленным фото и видео. Если же данный проект вас заинтересовал, то ознакомиться с ним детальней, а Дэвид описал постройку этого монстра очень детально, можно посетив соответствующую заметку на его личном сайте.
Raspberry Pi 3 возможно назвать по-настоящему универсальным компьютером. Bitcoin, конечно, на нём намайнить не получится, да и в игры с графикой консолей последних поколений поиграть не выйдет, но вот со многим остальным он хорошо справится. Ниже, в свою очередь, будет рассмотрены основные и наиболее популярные варианты применения Raspberry Pi 3.
Мультимедийные возможности Raspberry Pi 3
Возможности Raspberry Pi 3 в области мультимедиа очень велики. В частности, на основе "Малины" можно сделать мультимедийный центр, игровую консоль либо даже всё сразу. В результате с этим одноплатником можно получить на своем телевизоре с HDMI-портом доступ к следующим категориям развлечений:
- видео в высоком разрешении на YouTube или других хостингах;
- музыке на стриминговых сервисах;
- игровым стримам на, например, Twitch;
- играм, разработанным для старых консолей : NES, SNES, SEGA и др.
Чтобы просматривать и прослушивать мультимедийный контент, можно либо использовать браузер, либо, что еще более удобно - установить специальный медиаплеер. Наиболее функциональным и удобным из них является Kodi .
Для превращения "Малины" в игровую консоль нужно поставить на неё эмуляторы интересующих платформ и заказать игровые Rom-ы. Это делается за пару десятков минут. А еще проще и удобнее - инсталлировать специальный дистрибутив, например, Retro Pie или какой-то другой.
Разработка и работа с документами на RPi
Конечно, "Малина" - не самый мощный компьютер, а значит - не лучшее решение для работы. Но при желании на ней более или менее комфортно можно посмотреть/отредактировать какой-то документ или даже написать скрипт. Конечно, работать с тяжелыми IDE на ней не получится, но этого от RPi никто и не требует.
Также с помощью RPi3 можно «посерфить» в интернете или пообщаться в мессенджерах либо социальных сетях.
Сервер для любых нужд из Raspberry Pi 3
Еще один вариант, как можно использовать Raspberry Pi 3 - это сделать из него сервер. Так, достаточно поставить на него LAMP или просто Apache и Myphpadmin, после чего можно будет разрабатывать и тестировать веб-проекты в условиях достаточно ограниченных ресурсов.

Второй вариант - скачивать и раздавать с Raspberry Pi 3 torrent. Для этого, конечно, потребуется внешний жесткий диск, так как карты памяти и флэшки для данных целей не очень подходят как из-за ограничений скорости и маленького объема, так и ввиду быстрой изнашиваемости при интенсивных нагрузках.
Применение "Малины" в робототехнике и IoT
В IoT и робототехнике применение RPi практически безгранично. Из этого устройства можно сделать, например, камеру видеонаблюдения, небольшую метеостанцию, машинку с удаленным управлением и многое другое. Так, Raspberry Pi 3 находит применение в машине в виде видеорегистратора. При желании из данного одноплатника можно сделать даже мобильный телефон или смартфон. Но такое стоит делать либо ради экспериментов, либо, чтобы похвастаться перед друзьями/сообществом. Дело в том, что соответствующее устройство получится как минимум довольно громоздким.

Конечно, для данных целей понадобятся модули. Но с их покупкой проблем не должно возникнуть. В Сети существует множество магазинов, которые продают дополнительные компоненты для "Малины" по доступным ценам.
Объединение нескольких RPi 3 в кластер
Ещё один способ применения Raspberry Pi 3 - объединение нескольких таких устройств в кластер. Это довольно специфический способ использования, который подойдет далеко не каждому.
Для начала следует дать краткое и понятное объяснение, что такое кластер. В общих чертах под этим термином понимается комплекс однородного оборудования (в данном случае множество RPi), на которых параллельно выполняется какая-то задача.
Делать кластер из "Малины" для реализации чего-то серьезного практического смысла нет, так как есть более дешёвые и удобные решения. Объединение Raspberry Pi 3 в кластер целесообразно по большей части для обучения. Имея несколько одноплатников, можно разобраться с особенностями параллельных вычислений или показать как они работают ребёнку (собственно, RPi и создавался для обучения детей).
Как можно видеть, с RPi 3 можно сделать много интересных вещей. В первую очередь он полезен для изучения компьютеров. Но также он позволяет и реализовывать очень большое количество проектов, которые возможно применять для работы или отдыха.
Введение
Основополагающими затратами в области вычислений являются мощности компьютеров и их энергопотребление. Современные суперкомпьютеры занимают огромное пространство и потребляют сотни тысяч ватт.
Большой проблемой в этом случае является процесс обучения параллельному программированию и выполнению расчетов на суперкомпьютерах и тем более – управлению такого типа компьютерами, поскольку непосредственного доступа к ним у обучающихся, как правило, нет.
В данной работе предлагается для решения данной проблемы использовать одноплатные микрокомпьютеры, недавно появившиеся на рынке компьютерной техники (Paspberry Pi и аналоги). На их основе можно собрать недорогой вычислительный кластер и обучать студентов основам параллельного программирования. Таким образом, цель этой работы – создание недорогого учебного кластера из микрокомпьютеров для разработки и внедрения в учебный процесс алгоритмов параллельного программирования. Демонстрируется пример параллельных вычислений в разработанном учебном кластере.
Raspberry Pi – микрокомпьютер разработанный компаний Raspberry Pi Foundation. Маленький, размером с банковскую карту, он представляет собой полноценный одноплатный компьютер (System - on - a - Chip ). Процессор (в модели PI 3): 4 ядра ARM Cortex-A53 x64 . Операционная система по умолчанию Raspberian (основанная на Linux ядре). При цене всего в 35$ у платы есть все нужные интерфейсы (Wi - Fi , Bluetooth , Usb , Ethernet ), а также большой набор готовых программ для любого вида деятельности . Именно поэтому для небольшого учебного вычислительного кластера были выбраны эти микрокомпьютеры.
Понятие кластера и кластерных вычислений
Общеизвестно, что кластер – это группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единый аппаратный ресурс . С другой стороны, кластер – это слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих программных приложений . Для того чтобы связать несколько raspberry PI в кластер, была собрана типовая кластерная вычислительная система (маршрутизатор, кабели Ethernet, USB и др.) на базе процессора PI 3 (рис. 1).
Рисунок 1. Кластерная вычислительная система на базе процессора из двух PI 3
Демонстрация параллельных вычислений
Для наглядной демонстрации возможностей кластера из двух PI 3 была выбрана среда программирования Python 2 и реализация алгоритма сортировка массива методом слияния. Компьютеры были объединены локальной сетью. Для упрощения составления кластера из нескольких R PI существует много готовых программ, одна из которых называется “mpi4py” .
Программный код сортировки массива слиянием на языке Python выглядит следующим образом:
def merge(left,right): #merges 2 sorted lists together
#Goes through both lists
while i < len(left)and j < len(right):
#Adds smaller element of the lists to the final list
if left[i] <= right[j]:
result.append(left[i])
result.append(right[j])
result += left
result += right
def mergesort(lst):
#if there"s only 1 element, no need to sort
if len(lst)< 2:
#breaks down list into 2 halves
middle = len(lst)/ 2
#recursively splits and sorts each half
left = mergesort(lst[:middle])
right = mergesort(lst)
#merges both sorted lists together
return merge(left, right)
Алгоритм работы программы состоит из следующей последовательности действий:
1. На PI 3 (сервер) генерируется случайный массив чисел.
2. Данный массив разбивается на n частей, по количеству процессоров в локальной сети.
3. С помощью модуля socket и локальной сети Pi3 (сервер) передает часть массива Pi3 (клиент).
4. Pi3 (сервер) сортирует свою часть массива и ждет ответа Pi3 (клиент).
5. Pi3 (клиент) сортирует свою часть массива и передает ее Pi3 (сервер).
6. Pi3 (сервер) получает отсортированную часть массива и выполняет конечную сортировку.
Расчеты показали, что для сортировки массива из 500 тысяч элементов одному Pi3 потребовалось около 23 секунд. После добавления второго Pi3 это время уменьшилось до 16 секунд. Прирост скорости нелинейный, но чем больше будет в кластере компьютеров, тем меньше будет затрачиваемое время.
Заключение
Одноплатные компьютеры лишь недавно вышли за пределы сегмента устройств для автоматизации производства и начали завоевывать массовый рынок. Их небольшие размеры, небольшое энергопотребление и достаточно высокие вычислительные возможности способны сделать их основой для реализации различных проектов, например, обучение параллельному программированию. Особенностью, представленной кластерной вычислительной системы на базе raspberry PI 3, является хорошая масштабируемость, определяемая возможностями коммутационного оборудования, невысокая стоимость, возможность применения бесплатно распространяемого программного обеспечения, что важно при внедрении в учебный процесс. Проведенная демонстрационная работа показывает, что кластер даже из двух PI 3 способен ускорить вычисление простой, но одновременно и объемной задачи, такой как сортировка большого массива данных.
В перспективе планируется увеличить в вычислительной системе число микрокомпьютеров и провести сравнение производительности криптографических алгоритмов, в частности, планирующихся использовать для шифрования/расшифрования изображений (фото-, аеро-, космо- изображений) большого объема и передаче их по сети Интернет.
Список литературы :
- Robert Mullins/ Distributed computed //University Cambridge. – 2012. – http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/distributed-computing/ .
- Кластер. – Режим доступа. – URL: https://ru.wikipedia.org/wiki/Кластер (дата обращения 25.02.2017).
- Лукин В.В., Марчевский И.К. Учебно-экспериментальный вычислительный кластер. Ч. 1. Инструментарий и возможности. – Режим доступа. – URL: https://elibrary.ru/download/elibrary_17091004_33209664.pdf (дата обращения 25.02.2017).







