96-ядерный суперкомпьютер на одноплатниках NanoPi Fire3 +87



Создание высокопроизводительного кластера с 12 узлами NanoPi-Fire3 менее чем за ?100 (?550, включая двенадцать Fire3)

Мой прошлый кластер на Raspberry Pi 3 в прошлом году немало заинтересовал публику, так что я попробовать сделать аналогичные проекты на других отличных одноплатных компьютерах, которые есть на рынке. FriendlyARM из Китая очень щедро отправила мне 12 своих последних 64-битных ARM плат NanoPi-Fire3, на каждой из которых восьмиядерный ARM A53 SoC, работающий на частоте 1,4 ГГц, с гигабитным Ethernet.





Размер кластера 146,4 (ш) ? 151 (в) ? 216 мм (д), а вес 1,67 кг.

Программное обеспечение для запуска в кластере?


или… Для чего он нужен??

Кластеры часто используют для ресурсоёмких задач (медицинские исследования, моделирование погоды, ИИ/глубокое обучение, майнинг криптовалют) и/или сервисов высокой доступности (избыточные узлы задействуют в случае аппаратных сбоев). Этот кластер, конечно, медленный с точки зрения современных суперкомпьютеров, но небольшая портативная система идеально подходит для обучения или разработки распределённого программного обеспечения, которое затем может перенести на гораздо более мощные системы.

Я планирую написать несколько статей, чтобы оценить этот кластер для майнинга и глубокого обучения.

Docker Swarm или Kubernetes кажутся отличными вариантами для управления кластером, хотя я их ещё не пробовал.

NanoPi-Fire3 в сравнении с Raspberry Pi 3


Плата NanoPi-Fire3 значительно более продвинутая по сравнению с Raspberry Pi 3 как с точки зрения производительности, так и с точки зрения функций, в меньшем форм-факторе, при этом примерно по той же цене:

NanoPi-Fire3 Raspberry Pi 3 model B
SoC 8-ядерный ARM A53
S5P6818 @ 1,4 ГГц
4-ядерный ARM A53
BCM2837 @ 1,2 ГГц
Память 1 ГБ DDR3 1 ГБ DDR2
GPU Mali-400 MP4
500 МГц?
Broadcom VideoCore IV
400 МГц?
Сеть 1000 Мбит/с 100 Мбит/с
WiFi нет 802.11bgn
Bluetooth нет 4.1 + BLE
Хранение Карта microSD Карта microSD
USB 1 разъём
1 microUSB
4 разъёма
Видео Micro HDMI 1.4a, RGB-LCD HDMI, DSI
Интерфейс для камеры DVP CSI
Аудио нет 3,5 мм
Размер 75?40 мм 85?56 мм
Питание 1,2 > 3,6 Вт
2A макс., microUSB
1,2 > 2,1 Вт
2,5A макс., microUSB
Выпуск Q4 2017 Q1 2016
Цена (UK) ?34,301 ?33,59
1 $35 за Fire3 + $5 доставка + 20% VAT + 0% импортная пошлина = ?34,30

Бенчмарки


Процессор


В большинстве современных компьютеров установлены многоядерные процессоры, способные выполнять два или более заданий одновременно. Это могут быть разные приложения (например, веб-сервер, обрабатывающий три веб-страницы и базу данных), или одна задача, разделённая на несколько потоков для максимальной скорости (например, трассировщик лучей, сжатие файлов и т.д.). Этот тест из пакета hpcc задействует все ядра CPU, эффективно тестируя общую производительность процессора при операциях с плавающей запятой.


Linpack TPP v1.4.1 (решатель линейных уравнений). Количество MFLOPS (миллионов операций с плавающей запятой в секунду)

На плате Fire3 вдвое больше ядер, более высокая тактовая частота и более быстрая память: в итоге результат в 6,6 раз выше, чем на Pi 3.

60 000 MFLOPS — не слишком много по текущим стандартам производительности, но ещё в 2000 году этот кластер из 12-ти Fire3 вошёл бы в топ-250 самых быстрых суперкомпьютеров в мире (!). Кластер из пяти Fire3 работает в 8,2 раза быстрее, чем кластер Pi 3 того же размера, что объясняется дополнительными ядрами CPU, более быстрой памятью и гораздо более быстрой сетью для обмена данными между узлами.

16-ядерный суперкомпьютер Cray C90, выпущенный в 1992 году, выдавал 10 780 MFLOPS, но стоил $30,5 млн, весил 10,9 тонн и нуждался в питании на 495 кВт!

Настройка кластера для получения максимального результата — это целое искусство: оптимизация компилятора, настройка математических библиотек и т.д. Но мы взяли оценки из стандартного пакета hpcc в Ubuntu 16.04.4, используя конфигурацию по умолчанию.

Команды оболочки для бенчмарка
# Setup on each node
apt install hpcc
swapoff -a
adduser mpiuser

# Controller node setup
su - mpiuser
cp /usr/share/doc/hpcc/examples/_hpccinf.txt hpccinf.txt
# Edit default hpccinf.txt so that NB=80, N=18560, P=8 and Q=12 (P x Q = 96 cores)
sed -i "8s/.*/80\tNBs/; 6s/.*/18560\tNs/; 11s/.*/8\tPs/; 12s/.*/12\tQs/" hpccinf.txt
# Generate & copy SSH keys across cluster, so controller can run benchmark on all nodes
# (use the hostnames or IP addresses for your nodes)
ssh-keygen -t rsa
nodes=('controller' 'b1' 'b2' 'b3' 'b4' 'b5' 't1' 't2' 't3' 't4' 't5' 't6')
for i in ${nodes[@]}
do
  ssh-copy-id "fire3-$i"
  echo "fire3-$i slots=8" >> mycluster
done
mpirun -hostfile mycluster --mca plm_rsh_no_tree_spawn 1 hpcc
grep -F -e HPL_Tflops -e PTRANS_GBs -e MPIRandomAccess_GUPs -e MPIFFT_Gflops -e StarSTREAM_Triad -e StarDGEMM_Gflops -e CommWorldProcs -e RandomlyOrderedRingBandwidth_GBytes -e RandomlyOrderedRingLatency_usec hpccoutf.txt

Графика


И в Fire3, и в Pi 3 используются четырёхъядерные GPU для параллельной обработки больших объёмов данных в компьютерной графике. В последнее время их применяют также для специализированных вычислений, таких как майнинг криптовалют.


glmark2-es2 2014.03 (OpenGL ES 2.0). Оценка чем больше, тем лучше

Плата Fire3 в этом тесте оказалась в 7,5 раз быстрее, чем Pi 3. Результаты кластеров просто масштабируются по количеству узлов.

Как и в случае с CPU, есть много вариантов настройки графики путём компиляции с разными драйверами и т.д. В данном тесте мы просто запустили стандартный бинарник glmark2-es2 в Ubuntu 16.04.4, используя конфигурацию по умолчанию. Он запускается такой командой:

sudo apt install glmark2-es2
glmark2-es2 --off-screen

Устаревший рендер OpenGL для Pi 3 довольно слаб, но если переключиться на экспериментальный рендер Mesa VC4 через rpi-config, то получите производительность как у Fire3.

В большинстве одноплатников ARM установлены относительно старые GPU, которые показывают очень скромную производительность по сравнению с последними флагманскими смартфонами, не говоря уже о настольных ПК с дорогими графическими картами высокого класса и огромными блоками питания. GPU Mali-400 MP4 в Fire3 датируется 2008 годом, а Broadcom VideoCore-IV в Pi 3 — 2010 годом. Есть несколько более свежих одноплатников, такие как RockPro64 от PINE64, с более мощными и новыми графическими процессорами (Mali-T860 MP4), в то время как в телефоне Samsung Galaxy S9 установлен Mali-G72 MP18 последнего поколения.

Сеть


В этих тестах проверяется реальная скорость передачи данных в iPerf между двумя платами, подключёнными к коммутатору Ethernet 100/1000Mpbs.

iPerf v2.0.5 (TCP, 1000Mbps Ethernet, между платами), Мбит/с

С настройками по умолчанию интерфейс 1000 Мбит/с на Fire3 показывает огромную разницу скорости в 8,5 раз по сравнению с интерфейсом 100 Мбит/с на Pi 3.

Команды оболочки для бенчмарка
sudo apt install iperf
# On node1
iperf -s -V

# On node2
iperf -c node1 -i 1 -t 20 -V

Если хотите увеличить сетевую производительность на Raspberry Pi (старше Pi 3 model B+), можно установить гигабитный USB-адаптер Ethernet вместо стандартного встроенного интерфейса. Он увеличит скорость в 2,8 раза, но из-за ограничений USB2 по-прежнему будет гораздо медленнее настоящего интерфейса 1000 Мбит/с. Этот сетевой интерфейс интегрирован в самой новой модели Pi 3 B+.

Производительность кластера на ватт


Чтобы оценить производительность на ватт, я взял результаты теста Linpack выше в MFLOPS и поделил на потребляемую мощность. Этот показатель обычно используется для ранжирования компьютерных систем.


MFLOPS на ватт

Кластер Fire3 с пятью узлами в 5,8 раз более энергоэффективен, чем кластер Pi 3 того же размера, хотя и потребляет больше мощности при 100% нагрузке.

Ватты измерялись при нагрузке 100% для всего кластера, включая сетевые коммутаторы, вентиляторы и блоки питания. WiFi, Bluetooth, HDMI и прочее оставлено в настройках по умолчанию.

Суперкомпьютер Cray C90, упомянутый выше, выдавал всего лишь 0,02 MFLOPS на ватт в 1992 году.

Дизайн корпуса в 3D


Я изменил оригинальный дизайн кластера Raspberry Pi в бесплатной версии SketchUp, набросав грубые 3D-шаблоны NanoPi-Fire3, сетевых коммутаторов, разъёмов и т.д. Я решил не включить в модель вентиляционные щели/решётки. Корпус точно такого же размера, как и кластеры из пяти узлов: задача была вместить в него 12 плат, вдвое больше вентиляторов и коммутаторов Ethernet, а также все кабели!





Скачать SKP-файл для SketchUp 2013

Лазерная резка


Я пользуюсь бесплатной программой Inkscape: она подготавливает 2D-модели для загрузки в лазерный резак. Разные цвета соответствуют различным уровням мощности/скорости лазера. Сначала вырезаются контуры по зелёным линиям с отверстиями для портов, болтов и вентиляции. Розовым обозначены дополнительные вырезы, чтобы легче извлекать хрупкие части. Затем вытравливаются оранжевые текст и линии, а в самом конце панели вырезаются по синим контурам.



Можно скачать файлы для резки на одном листе 600?400?3 мм, хотя я сам для разных панелей брал или прозрачные, или чёрные листы:


Необязательная маленькая деталь — диффузор для (очень яркой!) панели светодиодов, которую можно вырезать из матового акрила или просто купить официальный диффузор Pimoroni за три фунта.

Подробнее о лазерной резке и безвинтовой системе сборки корпуса см. в моей первой статье.

Изменения в дизайне по сравнению с кластером Pi 3


Хотя корпус остался точно такого же размера но я сделал много изменений и улучшений:

  • Конструкция горизонтальной монтажной рейки сохранилась, но в Fire3 отверстия M3, для которых проще найти детали, чем для M2.5 в Pi. И отверстия ближе друг к другу, потому что общий размер платы немного меньше, чем Pi. Привинчивать пластиковые гайки к горизонтальным рейкам немного утомительно, и я бы хотел напечатать на 3D-принтере какие-нибудь пластиковые зажимы, чтобы удерживать платы вдоль каждой рейки, или сделать плотные эластичные шайбы?
  • Внешний блок питания вместо внутреннего USB-концентратора: я заменил внутренний USB-блок питания на безвентиляторный блок питания переменного тока снаружи корпуса. Это освобождает место внутри (для большего количества плат Fire3 и двух вентиляторов) и должно помочь с отводом тепла. Каждый Fire3 может потянуть максимум 2A, но в реальности кластер потянет гораздо меньше, без учёта дополнительной периферии, которая висит на USB и GPIO.
  • Две цепочки microUSB вместо 12 отдельных кабелей: подходящих в продаже не нашлось, так что я сделал собственные кабели в «цепочку» (daisy-chain), используя более короткие и толстые провода (рейтинг 11A) и припаяв 12 коннекторов microUSB: в итоге кабели заняли очень мало места внутри корпуса… подробнее
  • Два вентилятора вместо одного: я был уверен что более мощным платам Fire3 понадобится значительно более активное охлаждение, поэтому сделал на корпусе место для двух сверхтихих вентиляторов 92 мм: задний вентилятор всасывает холодный воздух внутрь корпуса, а передний выдувает горячий воздух наружу.
  • Вентилятор Gelid Solutions Silent 9 вместо Nanoxia Deep Silence: я очень доволен производительностью вентилятора Nanoxia (и их отличной техподдержкой), но хотел попробовать более дешёвый вариант. Резиновые прокладки Gelid толще, чем у Nanoxia, поэтому я увеличил диаметр крепёжных отверстий в корпусе на 0,5 мм.
  • Прямое питание 5V для вентиляторов вместо 5V от GPIO: в предыдущих кластерах вентиляторы запитывались от вывода GPIO одной из плат. Но с учётом установки двух вентиляторов на 12V я подключил повышающий преобразователь с прямой линией от основного питания корпуса.
  • Несколько вентиляционных отверстий вместо большого количества: вместо вырезания десятков вентиляционных отверстий по всему корпусу (что занимает время) я вырезал отверстия только на передней и задней панелях, напротив вентиляторов. Может быть, это оптимизирует воздушный поток через корпус?
  • USB-разъёмы на корпусе: эти два объединённых USB-разъёма отлично работали в моём исходном кластере, но они мне никогда не нравились из-за длинных кабелей, которые нормально не сгибаются. Так что теперь я взял два отдельных USB-порта с короткими кабелями и разъёмами под углом, что оставляет больше места внутри корпуса.
  • Нет полки для крепления USB-концентратора: перенос блока питания наружу упростил конструкцию корпуса, который теперь можно вырезать из одного листа акрила 600?400 мм. Снятие полки уменьшает жёсткость корпуса, но если привинтить горизонтальные монтажные рейки к боковым панелям, то жёсткость нормальная.
  • Плоские кабели LAN вместо круглых: мне понравились разноцветные сетевые кабели из проекта RPi3, но их очень непросто уложить внутри корпуса. Плоские кабели изгибаются гораздо легче, что ещё важнее с такой плотной упаковкой плат. Сначала я попробовал кабели 25 см, но они оказались слишком длинными, а вот кабели 15 см оставили больше свободного пространства внутри корпуса.
  • Синие сетевые кабели вместо скучно-серых: синий действительно расцвечивает серую конструкцию… плюс логотип FriendlyARM синий с зелёным.
  • Гигабитный свич вместо 10-гигабитного: у Fire3 сетевые порты на 1000 Мбит/с (вдесятеро быстрее, чем Pi), поэтому очевидно, что коммутатор должен быть минимум 1000 Мбит/с. Десятигигабитный коммутатор полностью устранит бутылочное горлышко в этом месте: так десять или более Fire3s смогут на полной скорости обмениваться данными с внешней сетью. Однако такие свичи по-прежнему дороги (от ?200) и слишком громоздки. Коммутатор NETGEAR GS110MX выглядит многообещающе.
  • Держатели платы 4 мм вместо 6 мм: понизив плату коммутатора, мы получили немного больше места для прокладки кабелей и воздухообмена.
  • Micro HDMI вместо HDMI: в платах Fire3 разъёмы Micro HDMI, поэтому я использовал самый короткий кабель Micro HDMI > HDMI, который смог найти (50 см). Другим вариантом был более короткий кабель с отдельным адаптером HDMI > Micro HDMI, но он громоздкий и может заслонить один из портов LAN.
  • Чёрные панели из плексигласа вместо прозрачных: чтобы «спрятать» два вентилятора, но оставить всю электронику на виду сбоку и сверху. Чёрная передняя панель также привлекает взгляд к светодиодной панели Unicorn.
  • Светодиодная панель Unicorn pHAT вместо простых светодиодов на платах: в кластере так много узлов, что есть смысл вынести на переднюю панель корпуса визуальный мониторинг статуса, который показывает скорость CPU, температуру, дисковую и сетевую активность для каждого узла… подробнее

Можете почитать ещё о некоторых конструкторских решениях в исходном кластере Pi.

Индикаторы состояния сервера с MQTT


Я выбрал отличную панель Unicorn pHAT 32x RGB LEDs от Pimoroni, чтобы создать красочный «дисплей состояния» кластера. Он показывает нагрузку на процессор, температуру, дисковую и сетевую активность для каждого узла. Эти недорогие платы обычно подключаются прямо к пинам Raspberry Pi, но надо немного повозиться, чтобы подключить их к другой плате. В библиотеке rpi_ws281x от Джереми Гарффа используется очень умный низкоуровневый код PWM/DMA, специфичный для Raspberry Pi, поэтому я изменил библиотеку на использование одного пина SPI для управления светодиодами, что должно работать практически на любом оборудовании.



Unicorn pHAT соединяется с платой всего тремя проводами: +5V, GND и SPI0 MOSI (пин 19). В следующей статье я подробно опишу, как это всё работает. Светодиоды очень яркие, поэтому гораздо лучше смотрятся за диффузором, который крепится к внешней стороне корпуса двумя-четырьмя винтами M2.5. Можете вырезать собственный диффузор из матового акрила или купить модель Pimoroni с винтами за ?3.

Состояние кластера на узле контроллера контролирует легковесный брокер (сервер) Mosquitto MQTT (Message Queue Telemetry Transport). Каждый узел раз в секунду сообщает брокеру текущую скорость процессора, температуру, сетевую активность и т.д.

Питание, температура и охлаждение


Без нагрузки вся система из двенадцати Fire3s, двух сетевых коммутаторов и двух вентиляторов 7V потребляет всего 24 Вт, а при полной нагрузке — 55 Вт.

Нужны ли радиаторы? С удвоенным количеством ядер Fire3 SoC генерирует гораздо больше тепла, чем Pi3, поэтому очень важно наличие радиатора. К счастью, FriendlyARM поставляет большой радиатор с термопастой, который надёжно крепится на плату Fire3. Он гораздо больше, чем радиаторы для других одноплатников, которые я видел на рынке, и отлично снижает температуру камня, но вентиляторы всё равно не помешают.

Адаптер питания выдаёт максимум 75 Вт (1,1 А на Fire3), поэтому внешним USB-устройствам (например, жёстким дискам), скорее всего, потребуется отдельный источник питания. Измеряем температуру:

cat /sys/devices/virtual/thermal/thermal_zone0/temp

Видим, что процессор без нагрузки нагревается до 39°C с охлаждением от обоих вентиляторов 12V.

На нагрузке 100% с вентиляторами температура достигает стабильных 58°C:

sysbench --test=cpu --cpu-max-prime=20000000 --num-threads=8 run &

Без вентиляторов температура быстро достигнет 80°C с автоматическим понижением тактовой частоты во избежание дальнейшего перегрева. Процессоры могут долго работать на этой температуре без всяких проблем, но вы не получаете максимальную производительность.

Точно такой же дизайн корпуса должен подойти для моделей NanoPi Fire2s и Fire2As, которые не так нагреваются, как Fire3, так что им будет достаточно одного вентилятора. Для охлаждения одного Fire3 подойдёт гораздо меньший вентилятор, возможно, 40-60 мм.

Что нетипично для одноплатников, Fire3 умеет уходить в сон со сверхнизким энегопотреблением (около 5 мкA), что наталкивает на мысль усыплять и выводить из сна отдельные узлы по необходимости. К сожалению, здесь нет поддержки Ethernet Wake-on-LAN, а только негибкая настройка "wake after X minutes". Однако на платах есть хедер PWR. Возможно, его можно подключить для удалённого пробуждения с пина GPIO на контроллере?

Бесшумное охлаждение


Для охлаждения кластера я установил в корпус два вентилятора 92 мм. Я искал по возможности самые тихие кулеры по рейтингу Quietpc.com, и выбор пал на Gelid Silent 9 по ?5,40.

Чтобы услышать хотя бы малейший шум вентилятора на 5V, нужно приблизить к нему ухо на расстояние 5?7 см, а резиновые прокладки из комплекта отлично изолируют корпус от любых вибраций. Однако на 12V вентиляторы довольно хорошо слышны (20dBA) в тихой комнате. Поэтому я искал напряжение, которое бы обеспечило достаточное охлаждение, но сохранило тишину. С помощью повышающего преобразователя я изменял скорость вентиляторов, пробуя варианты напряжения между 5V и 12V.

Вентиляторы Радиаторы? Без нагрузки 100% нагрузка   Производительность   
Задний 12V, 1500 rpm да 42°C 66°C OK
Задний 9V,? rpm да 44°C 71°C OK
Задний 7V,? rpm да 46°C 75°C снижение частоты
Оба 12V, 1500 rpm да 39°C 58°C OK
Оба 7V,? rpm да 40°C 65°C OK
Оба 5V,? rpm да 46°C 77°C снижение частоты
(тут приведены средние температуры для разных узлов, то есть на среднем 71°C в реальности две платы близки к аварийному снижению частоты).

Меня удивило, что второй вентилятор особо не влияет на результат, и в конце концов осталось сделать выбор между одним вентилятором на 9V или двумя на 7V, при этом второй вариант немного прохладнее и тише. Предполагаю, что второй вентилятор важнее на большем корпусе и/или более сложном пути воздушного потока внутри корпуса?

Кабели питания: сага в пяти частях


Сложнее всего оказалось найти хорошее решение для питания 12 узлов, двух коммутаторов Ethernet и двух вентиляторов. Я пытался избежать большого количества пайки и самостоятельного изготовления кабелей…

  1. Fire3s питаются через microUSB, как Pi, но я не нашёл 12-портовый USB-концентратор на 15A. Я рассматривал 6-портовый концентратор с шестью двухсторонними сплиттерами microUSB или даже два отдельных 6-портовых USB-концентратора. Но первый вариант не обеспечивал достаточно мощности для 12 узлов, а второй занимал слишком много места внутри корпуса.
  2. С внешним «кирпичом» в качестве источника переменного тока я попробовал некоторые стандартные 8х и 6х сплиттеры. Кабели предназначены для камер видеонаблюдения с угловыми разъёмами microUSB > DC, но они занимают много места (плохо для воздушного потока) и не рассчитаны по току, что приводит к падению напряжения на каждую плату Fire3.
  3. А если использовать стальные рейки шасси в качестве проводника для 5V+GND?! Это не так безумно, как кажется: у каждой рейки низкое сопротивление всего 0,5 Ом и должна быть электрическая изоляция от плат. Но я не смог придумать, как сделать надёжное соединение от каждой платы к рейке, чтобы легко отключать их в случае замены узла и т.д.
  4. Новая надежда? Существует ли какой-то способ питания плат кроме пайки 12 самодельных кабелей microUSB? У плат Fire3 есть незанятые точки 5V+GND, такие как хедер UART. Было бы проще и дешевле припаять двухконтактный хедер к каждому узлу и обеспечить питание с помощью готовых двухконтактных разъемов DuPont вместо microUSB. Однако от этого смелого плана пришлось отказаться, когда я понял, что после сборки кластера между платами недостаточно места для подключения или отключения двухконтактных разъёмов… да и в идеале я бы не хотел паять каждую плату.
  5. В итоге я смастерил самодельную цепочку из силовых кабелей (daisy-chain), взяв двужильный кабель толщиной 0,5 мм (11A, 6 узлов по длине) и припаяв к нему угловые разъёмы microUSB. Получилось очень аккуратно, и кабель занял очень мало места внутри корпуса, обеспечив отличный воздушный поток. Две цепочки питания выходят из корпуса через отдельные через отдельные сокеты, чтобы ограничивать максимальный ток через один разъём DC. Это также означает, что вы можете включить только верхнюю или нижнюю половину кластера, если хотите.

Оба Ethernet-коммутаторов тоже запитаны от 5V, припаяны круглые разъёмы постоянного тока.

Сборка кластера Fire3


Процесс сборки аналогичен 40-ядерному кластеру ARM на NanoPC-T3, только с бoльшим количеством узлов, дополнительным сетевым коммутатором и вентилятором. Платы Fire3 размещаются на расстоянии 20 мм вдоль реек с резьбой M3, каждая закрепляется восемью гайками.





Для красоты я приклеил плату повышающего преобразователя 5V-to-12V к задней панели корпуса и добавил пины, чтобы легко включать и отключать вентиляторы. Некоторые кабели проложены и закреплены с помощью небольших кабельных стяжек.

Дисплей Pimoroni LED подключен к плате контролера через три пина GPIO… подробнее.





Список материалов


Большинство деталей получены от разных продавцов на AliExpress или eBay, что сильно повышает почтовые расходы. Если на кластеры будет достаточный спрос, дешевле закупить детали оптом.

Коммутатор Edimax ES-5800G V3 Gigabit Ethernet (2 шт.) ?19,96
Плоские кабели 15 см Cat6 LAN (12 шт.) ?6,79
Стальные винты M3 12 мм (8 из 10 шт) ?1,45
Латунная стойка M3 4 мм (8 из 50 шт.) ?0,99
5,5/2,1 мм DC коннектор (2 из 5 шт.) ?1,49
1 м провод джампера красный+чёрный n/a
1 м 2-жильный 0,5 мм кабель питания (11A) DC ?0,99
Угловой разъём microUSB под пайку (12 из 20 шт.) ?1,63
5,5/2,1mm разъём DC для крепления на шасси (2 из 10 шт.) ?0,65
Клеммный блок 10A (4 из 12) ?1,29
БП 100 Вт (5 В @ 20 А) без вентилятора, 5,5/2,1 мм + розетка UK ?13,51
Крепление RJ45 с резьбой «папа-мама» (2 шт.) ?1,74
Стальные винты M3 8 мм (4 из 5) ?1,25
Стальная штанга с резьбой M3 150 мм с шайбами и гайками (8 шт.) ?9,20
Нейлоновые шестигранные гайки M3 (120 из 150) ?1,73
Micro HDMI «папа» к HDMI «мама» панельное крепление 50 мм ?2,19
USB «мама» к угловому «папа» панельное крепление 25 см (2 шт.) ?2.38
3 мм прозрачное оргстекло 600?400 мм ?5,32
5V-to-12V повышающий преобразователь ?2,04
Заряд для лазерного резака n/a
92 мм вентилятор Gelid Silent 9 (2 шт.) ?11,65
Полиуретановые резиновые ножки (4 из 10) ?1,75
Панель Unicorn pHAT 32x RGB LED ?10,00
Чёрные винты M2.5 10 мм (2?4 из 20) ?1,02
Маленькие кабельные стяжки (10 шт.) n/a
Итого материалы ?97,73
NanoPi-Fire3 по $35 (12 шт.)1 ?383,38
microSDHC-карта SanDisk Industrial class 10 8 ГБ (12 шт.) ?62,16
Всего ?543,27
1 NanoPi-Fire3 можно беспошлинно импортировать в Великобританию, а доставка 12 плат из Китая стоит всего $29, но с учётом британского НДС в размере 20% получается ?383,38.

Кластеры из других одноплатных компьютеров


К настоящему времени я также построил:

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (52):

  1. SergeyMax
    /#19352020 / +8

    60 000 MFLOPS — не слишком много по текущим стандартам производительности
    Да, не особо. В три раза меньше, чем у i7.

    • Marwin
      /#19352236

      у меня на 2683v3 выполнение команды из статьи выдало 20 gflops — какое-то странное число на фоне упомянутых 180 mflops для i7. Или я не туда смотрю?

      • censor2005
        /#19352432

        180 000 mflops == 180 gflops, разве не так?

        • xEzhik
          /#19352454 / +2

          Слабо себе представляю i7, который в 9 раз быстрее серверного камня(хоть и 14ого года, но на 28 потоков с не малыми частотами за овер 1к баксов). Что-то тут не сходится.

          • Marwin
            /#19352500

            более того… если суммировать удельные гигагерцы 12шт. NanoPi получим 134ГГц, при условии из таблицы результата в 60гф мы получаем точное соотношение коэффициента моих 42ггц / 20гф. Может просто у SergeyMax измерения не сложились? И в итоге кластер получился всё таки довольно интересный, на уровне приличного нового Xeon

            • Mad__Max
              /#19352634 / +3

              Старшие i7 при работе с оптимизированным под AVX/AVX2 кодом вполне могут 180 ГФЛОПС и даже больше выдавать на задаче решения системы линейных уравнений.

              image

              У вас результат низкий видимо из-за того, что приведенный вариант теста совершенно не подходит под архитектуру i7 или Xeon — счет запускается в 12 групп по 8 потоков в каждой (хотя для Xeon 2683v3 оптимально считать одной группой в 28 потоков, для i7 соответственно тоже 1 группа с числом потоков = число ядер*2 чтобы задействовать HT) и без использования AVX дающего буст в несколько раз, но которого нет у ARM.

    • bearad
      /#19355978

      Да, не особо. В три раза меньше, чем у i7.

      Как вы можете такое говорить. Тут, намедни, статья была про новый айфон и его «супер» процессор, судя по которой, арм архитектура не может быть настолько медленной. )) Я с нетерпением жду когда маки на нее «снова» переедут вернуться, вот тогда заживут.

  2. x893
    /#19352252 / +9

    Так я и не понял — для чего?

    • mxms
      /#19352376 / +4

      Ну, например, поиграться с распределёнными алгоритмами. Отличный стенд.

      • ser-mk
        /#19353040

        Так видеокарты есть, CUDA и прочие фреймворки, в конце концов шейдеры.

        • Mad__Max
          /#19353144

          Это не то. Оно все-равно рассчитано на работу в едином чипе. Так же как обычные мультипоточные программы для многоядерных процессоров.

          Настоящие HPC это все-равно всегда кластер из отдельных независимых устройств, но работающих параллельно и общающихся между собой через какого-то вида сеть. И позволяющие масштабироваться на практически любое количество подобных устройство.

          В этом плане подобное чудо хорошая модель настоящего суперкомпьютера. Хорошая для обучения, демонстрация, проверки каких-то решений в алгоритмах.

          А если нужно просто какую-то прикладную задачу решить, для которой достаточно подобных выч. мощностей — проще конечно современный многоядерный процессор взять(даже дорогих серверных не надо — старших i7 или Ryzen хватит) или GPU взять.

          • ser-mk
            /#19361926 / +1

            Речь шла про распределенные алгоритмы а не модели суперкомпутеров. А распределенным алгоритмам при должной абстракции все равно на чем работать, хоть видеокарта, хоть ПК соединенные через сеть.

        • x67
          /#19353308

          Да не только видеокарты. Система за 550$ с i5 будет считать не хуже, хоть и на чуть более "последовательных" ядрах. К тому же та же система с i5 будет работать с почти любым ПО для научных вычислений и не надо будет разрабатывать софт под железо, не имеющие очевидных плюсов. Поэтому совсем не понимаю, где преимущества данной сборки будут очевидны и существенны.

          • San_tit
            /#19354436

            В качестве лаьоторного стенда — более, чем отличный вариант: на "взрослом" железе собрать аналогичного масштаба (не производительности, а количества узлов) кластер будет стоить на порядкИ дороже. А так, реально каждой бригаде обучающихся (а то и каждому) выдать кластер на стол и пусть клепают системы распределенных вычислений.

      • blind_oracle
        /#19353086

        Запускай десяток виртуалок и играйся, гораздо проще. Скорее всего у товарища просто руки чесались.

        • dimonoid
          /#19353292

          Ну, это я думаю не сильно дешевле выйдет тк придется докупить 16-32gb ram

          • Kobalt_x
            /#19354072

            и эффекта от mappingа процессов не заметите

    • tchspprt
      /#19352630 / +3

      Вас, «практиков-прагматиков», под каждым постом и из каждого домофона слышно с воплями «да зачем оно нужно?». А когда дело доходит до того, что вдруг появилась практическая задача, в которой действительно «нужно» — сразу же все «зачем» отметаются, но при этом и благодарностей к теоретикам особой не слышно. Особенно это относится к инженерам, которые научились в CAD'ы и не ценят труд математиков, стоящих за этим и за этим в будущем. Зато если вдруг рано или поздно появится задача, для которой математика не дала базы — инженеры завопят чем-то вроде «годами просиживайте зад и ничего не сделали?». Бесит такой подход. Пирамида понтов — CEO жмут продажников, продажники — инженеров, инженеры — теоретиков…
      Извините, накипело.

      • x893
        /#19352682 / +6

        Понятно, что накипело. Но это же не первый кластер товарища. Может и мне пора тоже заняться строительством. Если этот товарищ их клепает, может кто-то знает причину. И осуждения никакого не было с моей стороны.

        • tchspprt
          /#19352798 / +1

          Извините, мимо. Просто триггер сработал. Сам в себе пытаюсь данный подход убить.

      • Daddy_Cool
        /#19353126 / +1

        Навеяло )))
        — Кто является движителем научно-технического прогресса?
        Философы размышляют куда движется общество.
        Правители улавливают эти тенденции, стараются направить их и дают задания министрам.
        Министры думая о конкретных путях решения задач — дают задания инженерам — самолеты делать и/или электростанции.
        Инженеры дают задание физикам — разобраться с тем, что им неясно в устройстве природы.
        Физики озадачивают математиков — посчитать то, что они прикинули на пальцах.
        Математики идут к программистам — запрограммировать их километровые формулы.
        Программисты запускают С++… и вот только программисты наконец-то работают!
        Хотя… они требуют от математиков новых эффективных алгоритмов. От инженеров — новых скоростных компьютеров, от физиков — новых принципов для этих компьютеров, от министров — денег на эти компьютеры, от правителей — свободной работы этих компьютеров, и от философов — ответа на вопрос — куда эти компьютеры нас всех приведут.
        Таким образом, очевидно, что именно программисты являются ныне главной движущей силой прогресса.

      • x67
        /#19353324

        Как-то у вас все смешалось. И прагматики плохие и инженеры труды математиков не ценят.
        В статье ясно задан вопрос "для чего он нужен?"
        А такого же ясного ответа нет. Ладно, там сказано, что для обучения и разработки распределенного ПО, но польза такого подхода выглядит весьма сомнительно, тем более что это не первый кластер. Вот человек не понял и спрашивает. И ничего плохого в этом нет. Не забывайте, именно критика отличает науку от религии.
        Имхо, ответ тут простой: сделал, потому что может и захотелось. А практической пользы действительно мало

  3. KorP
    /#19352366

    А ведь vmware только заанонсило esxi под arm :) Что будет дальше? :)

    • mxms
      /#19352406

      Потому что выходят серверные ARM процессоры.

      • kalininmr
        /#19352910 / -1

        да давно же блейды на arm были. чуть ли лет как 10

        • khim
          /#19352996

          Вот только применять их на серверах было бессмыленно: однопоточная производительность «никакая», а распараллелить на тысячу потоков далеко не всё можно.

          Thunder X2 даёт уже половину от Xeon'а (а в некоторых задачах и больше).

  4. insekt
    /#19352568 / +1

    Сколько календарного времени занял у вас этот проект от момента задумки до окончательного времени?

  5. Pilat
    /#19352710 / +3

    Плата сначала показалась интересной. Но… WiFi нет, USB интерфейсов мало, питание проблемное. Разве что кластеры строить из такой платы.

    • Centimo
      /#19364280 / +1

      Так плат с wi-fi и кучей других интерфейсов пруд пруди, а без всего лишнего, только с питанием и сетью — надо ещё поискать.

      • Dima_Sharihin
        /#19365022

        До тех пор, пока вы готовы ставить экзотические (для простого обывателя) разъемы, такие модули встречаются.


        Вот, к примеру, превью модуля на TI AM65x с шестью гигабитными Ethernet
        https://phytec.com/products/system-on-modules/phycore/am65x/#som


        Но, разумеется, только процессор+сеть мало кому интересны, в самих SoC ставят периферию на все случаи жизни, вопрос в том, станете вы их использовать или нет

  6. Grox
    /#19352976

    А стоило развернуть платы или поставить кулер снизу, как проблем с охлаждением на 5V уже бы не было.

    • old_bear
      /#19353390

      Тогда бы кружку с кофе некуда ставить было.

  7. kerbal
    /#19353114

    Для рендер-фермы подойдёт?

    • iproger
      /#19353492

      Тоже было бы интересно по сравнению с i7/r7.

    • Grox
      /#19354596

      Очень плохо или никак. Там всего 1ГБ Памяти и очень низкая производительность. См. в комментах есть примеры в ГФлопсах.

  8. Sonikelf
    /#19353500

    Какая красивая штука получилась, дух захватывает…

  9. AlexSpirit
    /#19353510

    Отличный технопрон. Спасибо автор.

    • Dioxin
      /#19353652

      Не полный, софт реальный бы на нем запустить

  10. AlexAV1000
    /#19353786

  11. Halt
    /#19353958 / -1

    Спасибо за статью! Судя по списку собранных кластеров вы, вероятно, должны быть в курсе про compute module 3?

    Вы не знаете судьбу этой модели? Я как не искал, нигде не могу найти ни в продаже ни решений на базе этого модуля. С учетом форм фактора и минимального количества шелухи, мне кажется, что кластер собранный на compute module 3 может получиться куда более практичным.

    На тему находил только вот этот проект но с тех пор ничего не слышно.

    • Dima_Sharihin
      /#19353980

      У Compute Module отсутствует Ethernet и PMIC на плате, слишком много на материнской плате придется городить самому. Сами модули продаются на RS-Components, да вот по характеристикам RPi плоха для HMI (из-за простецкой видеокарты, отсутствия полноценного Ethernet), скудный набор периферии.


      Поэтому решения от NXP и TI для эмбеддеда куда интереснее

  12. QuietusUA
    /#19354032

    Подскажите, можно ли как то питать эти штуки от PoE свитча?
    Ищю интересное/маленькое/дешевое решение тонкого клиента для питания по сети и загрузки по PXE.
    Сейчас все работает на Raspberry Pi 3, но хочется еще интереснее/меньше и с PoE.

    • khim
      /#19356482

      Дык Raspberry Pi 3 Model B+ как раз тем от Raspberry Pi 3 Model B и отличатеся, что для него POE HAT бывает…

      • QuietusUA
        /#19356558

        это да, но хотелось бы что то поменьше

  13. CrazyRoot
    /#19354892 / +2

    Суперкомпьютер Cray C90, упомянутый выше, выдавал всего лишь 0,02 MFLOPS на ватт в 1992 году.

    Есть ложь, есть чудовищная ложь и есть статистика.
    Вроде и НЕ соврали, но вагон и маленькую тележку упомянуть забыли…

    • igi7
      /#19357244

      а что не упомянуто?

  14. zackuz
    /#19357246

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

  15. proninyaroslav
    /#19360010

    Я правильно понимаю что в отолчии от малины NanoPi Fire3 не содержит драйверных блобов? В малине любят broadcomовские чипы, и соответственно открытых дров на них нет.

    • zanac
      /#19360408

      Вообще-то и открытые дрова и доки от производителя на гпу в наличии.
      А где вы возьмете такое добро под mali в открытом доступе?

      To build a functional OpenGL ES or OpenVG driver you need access to the full source code of the Mali GPU DDK, which is provided under the standard Arm commercial licence to all Mali GPU customers.