Der eigene Raspberry-Supercomputer (2024)

Fachleute waren in den Anfangstagen von Google überrascht, als sie beim Blick hinter die Kulissen statt der erwarteten Serverfarm auf jede Menge Standard-PCs trafen. Wie bei allen Start-ups war das Geld zu Beginn knapp und die Server namhafter Hersteller sündhaft teuer. Also baute sich das Unternehmen seine Rechenkapazitäten in Form von Clustern zusammen. Das Prinzip funktioniert auch mit dem Raspberry Pi . So spektakulär wie der Raspberry-Cluster des Los Alamos National Laboratory wird unser Projekt allerdings nicht, denn dort wurden über tausend Platinen miteinander verbunden. Wenn es Ihr finanzieller Rahmen zulässt, können Sie Ihren Cluster auch großzügiger als hier zusammenstellen. Bevor Sie sich aber an das Bestellen der Hardware machen, eine wichtige Vorbemerkung. Von einem Cluster profitieren lediglich Anwendungen, die über so ein verteiltes System betrieben werden können. Standardanwendungen wie Office-Programme werden mit einem Cluster nicht schneller.

Die Hardware-Zutatenliste

Für unser Projekt benötigen Sie mindestens zwei Platinen des Raspberry Pi , außerdem pro Platine ein möglichst kurzes LAN-Kabel sowie eine SD-Karte für die Software. Für den Netzwerkverkehr benötigen Sie einen Ethernet-Switch , der genügend Ports für die Zahl der Platinen bieten muss. Das ist die Minimalausstattung. Jede Platine muss mit Strom versorgt werden. Sie können also jeweils ein separates Netzteil verwenden.

Alle weiteren Bauteile sind eher die Kür. Eleganter wird das mit einem USB-Hub für die Stromversorgung . Der sollte an jedem Ausgang 5 V mit mindestens 700 mA liefern. Solche Geräte finden Sie im Elektronikhandel auch unter der Bezeichnung „Powerport“. Vergessen Sie dann nicht, ebenfalls pro Platine ein passendes, möglichst kurzes, USB-Ladekabel anzuschaffen. Damit haben Sie alle Zutaten beisammen.

Nach der Montage wird der Anblick den einen oder anderen von Ihnen ästhetisch stören. Wenn Sie etwas mehr Geld investieren wollen, stöbern Sie bei einem Elektronikversender Ihrer Wahl und suchen Sie dort nach Acrylplatten oder Racks für den Raspberry. Auf diesen Platten wird dann jeweils eine Platine aufgeschraubt und die einzelnen Etagen werden mittels Abstandshalter miteinander verbunden. Oder Sie spendieren jedem Rechner ein eigenes Gehäuse , die dann mittels Schrauben verbunden werden.

Nachdem alle Teile für den Cluster vorliegen, bauen Sie den Verbund zusammen. Da die Boards ja alle gleich aussehen, ist es ratsam, sich beim Zusammenbau an eine Ordnung zu halten. Board 1 belegt immer den ersten Anschluss bei den externen Bausteinen, Board 2 den zweiten Anschluss und so fort. Sie können das Problem aber auch mit einem Etikettiergerät lösen. Sofern vorhanden, bauen Sie die Platinen zunächst in das Rack ein oder verschrauben die Boards mit den besorgten Teilen zu einem größeren Modul zusammen. Verbinden Sie die Platinen mittels der USB-Ladekabel mit der externen Stromquelle, ohne diese bereits mit Netzkabel zu verbinden. Anschließend wird die Verbindung zwischen Ethernet-Schnittstellen der Platinen und dem Switch hergestellt. Sofern Sie sich kein Rack angeschafft haben, sorgen Sie mit anderen Mitteln dafür, dass sich die Platinen nicht aus Versehen berühren können, da dies zu Kurzschlüssen führen könnte.

Raspberry Pi 4: Die neuen Features im Überblick

So funktioniert ein Cluster

Der eigene Raspberry-Supercomputer (1)

Vor der Einrichtung der Software schicken wir ein paar Worte zur grundsätzlichen Funktionsweise des Clusters voraus: Der Cluster und sein Leistungsvorteil basieren auf der direkten und schnellen Kommunikation zwischen den einzelnen Nodes (Knoten). Dabei geht es beispielsweise um das Teilen von Ressourcen. Die verschiedenen Knoten arbeiten parallel an der gleiche Aufgabe (beispielsweise das Durchsuchen von Datenbeständen) und liefern gemeinsam ein schnelleres Ergebnis. Sie können über die USB-Schnittstellen beispielsweise mehrere externe Datenträger mit einem Raspberry verbinden. Sollen alle Daten durchsucht werden, kümmert sich dann aber nur ein Prozessor darum. Die Verknüpfung mehrerer Systeme verteilt die Arbeit auf mehrere Prozessoren.

Ein Knoten übernimmt in diesem Spiel die Aufgabe des Masters. Der Master übernimmt in vielen Szenarien die Aufgabe eines „Load Balancers“ und kümmert sich um eine Verteilung von Anfragen. Nur der Master nimmt die eigentlichen Anfragen des Nutzers entgegen und weist dann den anderen Nodes die Aufgaben zu. Diese melden das Ergebnis an den Master zurück, der die Anfrage schließlich beim Nutzer beantwortet. Um keine Zeit bei der Übertragung der Kommandos und Ergebnisse durch anderen Datenverkehr zu verlieren, ist es vorteilhaft, die Kommunikation direkt via Ethernet und einem eigenen kleinen Netzwerk zwischen den Nodes zu gewährleisten – deswegen die Anschaffung des Netzwerkswitches und der Netzwerkkabel.

Der eigene Raspberry-Supercomputer (2)

Beispiel 1: Der Webserver-Cluster

Um das Grundprinzip des Clustercomputings zu nutzen, können Sie einen Verbund an Webservern aufbauen, wobei die Anfragen an das System über einen Lastverteiler geregelt werden. Wie immer bei solchen Projekten liegt die Magie des Systems in der Software. Zur Vorbereitung aller Nodes formatieren Sie die SD-Karten und installieren darauf eine aktuelle Version von Raspbian Lite. Da Sie für den Cluster keinen Desktop und grafische Anwendungen benötigen, wäre es eine Verschwendung von Speicherplatz, die vollständige Version zu nutzen. Sie brauchen jedoch einen Monitor und eine Tastatur, um die Arbeiten erledigen zu können. Es macht auch vieles einfacher, wenn Sie diese Hardware am Masterknoten angeschlossen lassen.

Booten Sie die Platine damit und bringen Sie die Software zunächst auf den aktuellen Stand. Dazu nutzen Sie die üblichen Kommandos:

sudo apt -y updatesudo apt -y upgrade

Führen Sie dann auf jedem System das Programm raspi-config aus. Ändern Sie dort das Passwort für den Nutzer „pi“ aus Sicherheitsgründen. Dazu dient die erste Option in der Oberfläche. Über den Punkt „Network“ erreichen Sie dann die Konfiguration der Netzwerkschnittstellen. Verändern Sie dort den Hostnamen zu „Node1“, „Node2“, „Node3“.

Der eigene Raspberry-Supercomputer (3)

Dies gibt dann auch gleich die Beschriftung von Kabeln und Anschlüssen vor. Aktivieren Sie dort auch WLAN, sofern es sich um ein Modell mit entsprechender Schnittstelle handelt. Speichern Sie und starten Sie jedes System dann jeweils erneut. Installieren Sie anschließend auf jeder Platine mit

sudo apt-get install apache2

einen Apache-Webserver. Was Sie in den nächsten Schritten benötigen, sind die IP Adressen der Platinen. Diese ermitteln Sie am besten im zentralen Router. Dort können Sie auch festlegen, dass die Platinen immer eine feste IP-Adresse erhalten. Auf der Platine, die Sie als Master verwenden wollen, installieren Sie nun zusätzlich den von Apache zur Verfügung gestellten Load Balancer und starten ihn:

sudo a2enmod proxysudo a2enmod proxy_httpsudo a2enmod proxy_balancersudo a2enmod lbmethod_byrequests

Mittels systemctl apache2 restart starten Sie dann den Server erneut. Jetzt müssen Sie dem System noch mitteilen, wer alles Mitglied des Clusters ist. Dazu brauchen Sie die IP-Adressen der Nodes. Diese tragen Sie in die Konfigurationsdatei ein.

Öffnen Sie dann die Datei „/etc/apache2/sites-available/default“ und suchen Sie dort den Abschnitt „ VirtualHost>“. Diesen Abschnitt passen Sie dann so an:

BalancerMember http://IPADRESSE-NODE1:80 BalancerMember http://IPADRESSE-NODE2:80 AllowOverride None Order allow,deny allow from all ProxySet lbmethod=byrequests SetHandler balancer-manager Order allow,deny allow from 192.168.178

Speichern Sie die Datei und starten Sie den Server neu. Über die IP-Adresse des Masters können Sie die Benutzeroberfläche von einem beliebigen Rechner im Netzwerk aufrufen. Die Adresse lautet „http://IPMASTER/ balancer-manager“. Dort sollten jetzt die Adressen der weiteren Platinen und ihr Status zu sehen sein. Der Cluster funktioniert und die Anfragen an den Webserver des Masters werden somit auch an die beteiligten Systeme weitergereicht.

Der eigene Raspberry-Supercomputer (4)

Beispiel 2: Cluster im eigenem Subnetz

Die ersten Schritte bei diesem Projekt unterscheiden sich zunächst nicht vom Einsatz des Webservers – also Raspbian aufspielen, Passwort ändern und Hostnamen vergeben. Beim ersten Beispiel erhielten die Nodes aber alle IP-Adressen einfach vom Router. Wenn der Cluster unabhängig vom restlichen Netzwerkverkehr arbeiten soll und die Clusterplatinen einschließlich ihrer IP-Adressen aus dem Hauptnetz herausgehalten werden sollen, dann richten Sie ihm ein eigenes Subnetzwerk ein. Sofern Sie bisher keine Bastelarbeiten an Ihrem Netzwerk vorgenommen haben, sollte das Subnetz 10.0.0.0 zur Verfügung stehen. Anders formuliert: Sofern Sie bereits ein Subnetz aktiv betreiben, wissen Sie ohnehin genug, um die Platinen dort zu integrieren. Die direkte Kommunikation über diesen Backbone muss ohne die Koordination durch den Router auskommen. Deswegen ändern Sie die Netzwerkeinstellungen manuell auf jeder einzelnen Platine mit der Kommandozeile. Dazu öffnen Sie mit

sudo nano /etc/dhcpcd.conf

die entsprechende Konfigurationsdatei. Am Ende der Datei fügen Sie dann folgende Zeilen hinzu.

interface eth0static ip_address=10.0.0.1/24

Die letzte Ziffer vor dem Querstrich („/“) erhöhen Sie jetzt bei jeder weiteren Platine um den Wert 1. Nach dem Speichern der Datei starten Sie den betreffenden Raspberry dann neu. Verbinden Sie die Platinen alle über die Ethernet-Kabel mit dem Switch. Sie sollten jetzt vom Master etwa die zweite Platine anpingen können:

ping 10.0.0.2

Um Daten direkt zwischen den Nodes auszutauschen, müssten sich Benutzer mit Namen und Passwort am jeweiligen System anmelden. Das funktioniert so natürlich nicht. Um die Anmeldung zu automatisieren, setzen Sie SSH-Schlüssel ein. Auf jedem Knoten erstellen Sie ein Schlüsselpaar:

ssh-keygen -t rsa

Dabei bestätigen Sie die Reihe von Abfragen einfach mit der Eingabetaste. Sie werden auch dazu aufgefordert, eine „Passphrase“ einzutragen, wobei Sie ebenfalls keine Angabe machen. Die erzeugten Schlüssel bei den einfachen Knoten teilen Sie dann dem Master mit:

ssh-copy-id 10.0.0.1

Auf dem Master wiederum verteilen Sie dessen Schlüssel an die Clients – also mit ssh-copy-id 10.0.0.2, ssh-copy-id 10.0.0.3.

Der eigene Raspberry-Supercomputer (5)

Damit der Master Rechenaufgaben an die Nodes verteilen kann, wird eine spezielle Software benötigt. Das ist das Message Passing Interface (MPI). Über dieses Protokoll können die Rechner miteinander kommunizieren, Aufgaben verteilen und Ergebnisse zurückmelden. MPI ist aber nur ein Protokoll, braucht also noch eine Anwendungsschicht, etwa eine Script-Sprache wie Python. Daher installieren Sie auf jedem Node MPI und dessen Anbindung an Python:

sudo apt install mpich python3-mpi4py

Um zu prüfen, ob alles funktioniert, können Sie auf den Nodes einmal mpiexec -n 1 hostname ausführen. Das sollte Ihnen den von Ihnen vergebenen Namen für das System zurückmelden. Auf dem Mastersystem testen Sie den Cluster mit diesem Befehl:

mpiexec -n [Clusterzahl] –hosts [IP1], [IP2], [IP3]

Der Parameter „-n“ definiert, aus wie vielen Elementen der Cluster bestehen soll, erwartet also einen einfachen Zahlenwert. Anschließend geben Sie die IP-Adressen der Systeme inklusive des Masters an. Konkret sieht der Befehl dann etwa so aus:

mpiexec -n 3 -host 10.0.0.1, 10.0.0.2, 10.0.0.3

Das Kommando gibt lediglich die Namen der Hosts zurück, sollte aber alle Mitglieder Ihres Verbunds zurückmelden.

Damit der gesamte Cluster dieselbe Aufgabe, typischerweise ein Script, ausführt, muss dieses an exakt der gleichen Stelle auf jedem System verfügbar sein. Sie werden im Internet in Tutorials zu Python mit Sicherheit einfache Beispiele finden, etwa zur Generierung von Passwörtern, Primzahlen und ähnlichen seriellen Operationen. Legen Sie das Script auf dem Master ab. Im Terminal verteilen Sie das Script dann einfach an die Knoten – also etwa so:

scp /home/sla/meinscript.py 10.0.0.1:

Dies wiederholen Sie für jeden einzelnen Knoten. Damit haben Sie die Voraussetzungen für das parallele Abarbeiten dieses Scripts geschaffen. Das so verteilte Script starten Sie jetzt vom Master aus (Beispiel):

mpiexec -n 3 --host 10.0.0.1,10.0.0.2,10.0.0.3 python3 meinscript.py 100

Die Mitglieder des Clusters machen sich damit ans Werk und teilen die Ergebnisse an den Master zurück, dieser präsentiert Ihnen dann das Ergebnis.

Damit haben Sie die ersten Schritte beim Arbeiten mit einem Cluster hinter sich. Nach diesem erfolgreichen Einstieg können Sie sich jetzt tiefer in die Arbeit mit solchen Clustern einarbeiten. Slurm ist beispielsweise ein Manager für Workloads, die über einen Cluster verteilt werden. Das Werkzeug ist mächtig und kann auch auf einem Raspberry zum Laufen gebracht werden. Oder Sie vertiefen sich noch etwas weiter in Python.

Sie haben in diesem ersten Beispiel zwar die Platinen durch Kabel miteinander verbunden. Aber der Verbund funktioniert natürlich auch, wenn die einzelnen Mitglieder an unterschiedlichen Orten stehen. Wenn Sie sich für Heimautomatisierung und Wetterstationen interessieren, lohnt sich ein Blick auf pywws, eine Python-Software, mit der sich dazu kompatible Wetterstationen auslesen lassen. Der Cluster könnte dann die eingehenden Daten aller Mitglieder verarbeiten und Statistiken liefern. Generell können Sie versuchen, viele im Netz verfügbare Beispiele für die Arbeit mit Clustern auf den Raspberry zu übertragen. Dank des Debian-Unterbaus sollten die notwendigen Pakete dazu auch für die Platine zu bekommen sein.

Lesetipp: Raspberry Pi – Jede Menge Einsatzmöglichkeiten

Der eigene Raspberry-Supercomputer (2024)

FAQs

Can you build a supercomputer with Raspberry Pi? ›

The Raspberry Pi Compute Module form factor is perfect for building industrial-grade supercomputers, and that's exactly what Turing Pi has done. Their custom Turing Pi 1 PCB can accept up to seven Raspberry Pi 3+ Compute Modules and takes care of networking, power, and USB connectivity.

What is the fastest Raspberry Pi? ›

Raspberry Pi 5 is faster and more powerful than prior-generation Raspberry Pis, and like most general-purpose computers, it will perform best with active cooling.

Can I run AI on a Raspberry Pi? ›

When you think about integrating artificial intelligence (AI) into a project, you might initially consider powerful computers or cloud-based resources. However, the Raspberry Pi, a small and affordable single-board computer, has proven to be an excellent platform for AI development.

Can Raspberry Pi be used as a general-purpose computer? ›

The Raspberry Pi's operating system has always included many of the tools you'd need to take a crack at this, including a lightweight desktop environment and a couple of web browser options, and the Pi 4-based Pi 400 variant has always been pitched specifically as a general-purpose computer.

How powerful is a Raspberry Pi supercomputer? ›

With 12 Raspberry Pi Zeros installed, the Clustered-Pi would pack 288Gflops. That's around 1800 times the power of the Cray-1 - and a testament to the massive increases in compute power brought about by nearly 50 years of relentless miniaturization and development.

Does NASA use Raspberry Pi? ›

Scientists have revealed how data from a NASA telescope was secured thanks to creative thinking and a batch of Raspberry Pi computers.

How powerful is a Raspberry Pi CPU? ›

The Raspberry Pi 5 uses a 64-bit 2.4 GHz quad-core ARM Cortex-A76 processor. The Raspberry Pi 5 uses the Broadcom BCM2712 SoC, which is a chip designed in collaboration with Raspberry Pi. The SoC features a quad-core ARM Cortex-A76 processor clocked at 2.4 GHz, alongside a VideoCore VII GPU clocked at 800 MHz.

Is Raspberry Pi faster than Arduino? ›

Raspberry Pi has a superb processing power – up to 1.6 GHz (depending on the board), whereas that of Arduino is up to 16 MHz (depending on the board). Arduino will come in handy for controlling motors, LEDs, or interfacing sensors, whereas Raspberry Pi is good for developing software applications.

What will replace Raspberry Pi? ›

The best Raspberry Pi alternatives of 2024Libre Computer Board AML-S905X-CC (Le Potato)Orange Pi 5 PlusAsus Tinker Board S R2.

Does Raspberry Pi have CUDA? ›

As others have mentioned, CUDA is Nvidia specific, so you'll only find it in NVIDIA chipsets like the Tegra and Jetson. An alternative to CUDA is OpenCL , which is supported by a variety of GPUs, even including the Raspberry PI .

Can Raspberry Pi handle deep learning? ›

Raspberry Pi and deep learning.

Together with the simple C++ example code, you could build your deep learning application on a bare Raspberry Pi. It is extremely user friendly.

Is Arduino or Raspberry Pi better for AI? ›

Arduino is better for low-level hardware interactions, while Raspberry Pi handles higher-level tasks like web servers and data analytics. Choose Arduino for real-time applications and minimal power requirements, and Raspberry Pi for advanced IoT projects with computational demands and networking features.

Can you turn a Raspberry Pi into a computer? ›

The Raspberry Pi 4 is a suitable desktop replacement if you are mostly doing browser work. Switching over from one OS (like a Mac or Windows) is easy if you have all your files and data synced. This is definitely going to be a hassle if your setup isn't like that. Of course, there are things you cannot do on a Pi.

Can you use Raspberry Pi commercially? ›

Raspberry Pi boards are primarily designed for development and early prototyping, and not for mass production. But why shouldn't you use them for production? Availability issues are one of the main reasons they aren't ideal for use in production.

Is Raspberry Pi powerful enough for computer vision? ›

Processor Performance: Raspberry Pi models typically feature quad-core ARM processors with clock speeds of around 1.5 GHz (Raspberry Pi 4). This means they can handle multiple computer vision tasks simultaneously, allowing for parallel processing.

How much does it cost to build a supercomputer? ›

A supercomputer is a computer that is at the top of its class in terms of performance. They are used for tasks such as weather forecasting, nuclear simulations, and aircraft design. The cost of making a supercomputer can range from $100 million to $1 billion.

Can Raspberry Pi run forever? ›

Provided you have no heat issues (check with /opt/vc/bin/vcgencmd measure_temp ) you can leave your rPi running for all eternity. That's the beauty of the device paired with a well-written OS like raspbian which does not (or hardly) suffer from memory leaks etc. Phil B. Phil B.

Can a Raspberry Pi be used as an ECU? ›

The SMPS versions support a range from 6 VDC to 30 VDC. The availability of CAN Bus interfaces for the Raspberry Pi also offers the potential of running an SAE J1939 protocol stack on the Raspberry Pi, may it be for J1939 data monitoring or ECU simulation.

Top Articles
Latest Posts
Article information

Author: Kieth Sipes

Last Updated:

Views: 5574

Rating: 4.7 / 5 (47 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Kieth Sipes

Birthday: 2001-04-14

Address: Suite 492 62479 Champlin Loop, South Catrice, MS 57271

Phone: +9663362133320

Job: District Sales Analyst

Hobby: Digital arts, Dance, Ghost hunting, Worldbuilding, Kayaking, Table tennis, 3D printing

Introduction: My name is Kieth Sipes, I am a zany, rich, courageous, powerful, faithful, jolly, excited person who loves writing and wants to share my knowledge and understanding with you.