Creiamo un sistema di distribuzione delle applicazioni utilizzando Docker. Parallel computing su raspberry pi Il concetto di cluster e cluster computing

Raspberry Pi 3 può essere definito un computer veramente universale. Bitcoin, ovviamente, non può essere estratto su di esso, e non sarà possibile giocare con la grafica delle ultime generazioni di console, ma farà bene a molte altre cose. Di seguito, a loro volta, verranno considerate le principali e più popolari applicazioni del Raspberry Pi 3.

Funzionalità multimediali del Raspberry Pi 3

Le capacità multimediali del Raspberry Pi 3 sono molto elevate. In particolare, sulla base di "Raspberry" puoi realizzare un centro multimediale, una console di gioco o anche tutto in una volta. Di conseguenza, con questa scheda singola, puoi accedere alle seguenti categorie di intrattenimento sulla tua TV con una porta HDMI:

  • video ad alta definizione su YouTube o altri siti di hosting;
  • musica su servizi di streaming;
  • flussi di gioco su, ad esempio, Twitch;
  • giochi sviluppati per vecchie console: NES, SNES, SEGA, ecc.

Per visualizzare e ascoltare i contenuti multimediali è possibile utilizzare un browser o, ancora più comodamente, installare un apposito lettore multimediale. Il più funzionale e conveniente di loro è Kodi.

Per trasformare Raspberry in una console di gioco, è necessario inserire su di essa emulatori delle piattaforme di interesse e ordinare le Rom di gioco. Questo viene fatto in un paio di decine di minuti. E ancora più facile e conveniente è installare uno speciale kit di distribuzione, ad esempio Retro Pie o altro.

Sviluppo e lavoro con documenti su RPi

Ovviamente Raspberry non è il computer più potente, il che significa che non è la soluzione migliore per il lavoro. Ma se lo desideri, puoi più o meno comodamente visualizzare/modificare un documento o anche scrivere uno script su di esso. Ovviamente, non funzionerà con IDE pesanti su di esso, ma nessuno lo richiede dall'RPi.

Inoltre, con l'aiuto di RPi3, puoi "navigare" in Internet o chattare in messaggistica istantanea o social network.

Server per ogni esigenza da Raspberry Pi 3

Un'altra opzione su come utilizzare Raspberry Pi 3 è crearne un server. Quindi, è sufficiente installare su di essa LAMP o solo Apache e Myphpadmin, dopodiché sarà possibile sviluppare e testare progetti web in condizioni di risorse piuttosto limitate.

La seconda opzione è scaricare e distribuire da Raspberry Pi 3 torrent. Per fare ciò, ovviamente, avrai bisogno di un disco rigido esterno, poiché le schede di memoria e le unità flash non sono molto adatte a questi scopi, sia a causa dei limiti di velocità e del volume ridotto, sia per la rapida usura sotto carichi pesanti.

Applicazione Raspberry in robotica e IoT

Nell'IoT e nella robotica, l'uso di RPi è quasi illimitato. Da questo dispositivo puoi realizzare, ad esempio, una telecamera di sorveglianza, una piccola stazione meteorologica, un'auto telecomandata e molto altro. Quindi, Raspberry Pi 3 trova applicazione nell'auto sotto forma di DVR. Se lo si desidera, anche un telefono cellulare o uno smartphone può essere realizzato da questo pagatore unico. Ma vale la pena farlo sia per il bene della sperimentazione, sia per mostrarlo agli amici/alla comunità. Il fatto è che il dispositivo corrispondente risulterà almeno piuttosto ingombrante.

Naturalmente, i moduli saranno necessari per questi scopi. Ma con il loro acquisto non dovrebbero sorgere problemi. Ci sono molti negozi sul Web che vendono componenti aggiuntivi per Raspberry a prezzi convenienti.

Clustering di più RPi 3

Un altro modo per utilizzare Raspberry Pi 3 è raggruppare diversi di questi dispositivi. Questo è un modo piuttosto specifico di usarlo, che non è adatto a tutti.

Per cominciare, dovrebbe essere fornita una spiegazione breve e comprensibile di cosa sia un cluster. In termini generali, questo termine si riferisce a un complesso di apparecchiature omogenee (in questo caso, un insieme di RPi), su cui vengono eseguiti alcuni compiti in parallelo.

Non ha senso pratico creare un cluster da Raspberry per implementare qualcosa, poiché ci sono soluzioni più economiche e convenienti. Il clustering del tuo Raspberry Pi 3 è l'ideale per l'apprendimento. Avendo diversi single-boarder, puoi capire le caratteristiche del calcolo parallelo o mostrare come funzionano a un bambino (in effetti, RPi è stato creato per insegnare ai bambini).

Come puoi vedere, molte cose interessanti possono essere fatte con l'RPi 3. È utile principalmente per lo studio dei computer. Ma consente anche di realizzare un numero molto elevato di progetti che possono essere utilizzati per lavoro o per piacere.

Un uso popolare dei computer Raspberry Pi è la creazione di cluster. Le Raspberry Pie sono piccole ed economiche, quindi è più facile usarle per creare un cluster rispetto ai PC. Un cluster di Raspberry Pie dovrebbe essere abbastanza grande per competere con un singolo PC; probabilmente ne occorrono circa 20 Torte per produrre un cluster con la stessa potenza di calcolo di un PC. Sebbene un cluster Pi potrebbe non essere così potente, è una grande opportunità per conoscere il calcolo distribuito.

Esistono diversi tipi di computer distribuiti che possono essere utilizzati per scopi diversi. Ci sono super computer che vengono utilizzati per risolvere problemi matematici come la modellazione delle condizioni meteorologiche o la simulazione di reazioni chimiche. Questi sistemi utilizzano spesso la Message Passing Interface (MPI). Un team dell'Università di Southampton ha costruito un super computer basato su MPI a 64 nodi. Questo sistema viene utilizzato per insegnare agli studenti il ​​supercalcolo.

Un'altra tecnologia che viene spesso utilizzata nel calcolo distribuito è Hadoop, che distribuisce i dati su molti nodi. Hadoop viene spesso utilizzato per l'elaborazione di grandi set di dati e il data mining. Un ingegnere di Nvidia ha costruito un piccolo cluster Hadoop utilizzando Raspberry Pies. Usa il suo cluster per sperimentare e testare le idee prima di distribuirle su sistemi più potenti.

Utilizzo di un cluster Raspberry Pi come server web

I cluster possono essere utilizzati come server Web. Molti siti Web ricevono troppo traffico per essere eseguiti su un unico server, quindi è necessario utilizzare più server. Le richieste dai browser Web vengono ricevute da un nodo chiamato load balancer, che inoltra le richieste ai server di lavoro. Il servizio di bilanciamento del carico inoltra quindi le risposte dai server ai client.

Questo sito è ora ospitato su un cluster Raspberry Pi. I nodi di lavoro sono server Web standard che contengono contenuto identico. Ho appena installato Apache su di essi e ho copiato il mio sito su ciascun nodo.

Uso un Raspberry Pi aggiuntivo per ospitare una copia di sviluppo di questo sito e per controllare il cluster. Questo Pi è connesso alla mia rete locale tramite wifi, quindi posso accedere alla copia di sviluppo del mio sito dal mio laptop.

Il Pi aggiuntivo ha anche una connessione ethernet al cluster Pi. Quando voglio aggiornare il mio sito, posso trasferire le modifiche dal sito di sviluppo al sito live nel cluster. Gli aggiornamenti del sito vengono inseriti in file .tar.gz che i nodi di lavoro scaricano automaticamente dal sito di sviluppo. Una volta scaricati, gli aggiornamenti vengono quindi decompressi nel file system locale.

Configurazione dei server Raspberry Pi

Tutte le torte in questo sistema sono senza testa. Posso accedere al Pi con il sito di sviluppo utilizzando il protocollo Desktop remoto e da quel Pi posso accedere alle torte di lavoro utilizzando SSH.

Tutte le torte nel cluster utilizzano un indirizzo IP statico. In un cluster più grande sarebbe probabilmente meglio configurare un server DHCP sul sistema di bilanciamento del carico. Gli indirizzi IP utilizzati nel cluster si trovano nella sottorete 192.168.1.xxx.

Per ogni lavoratore Pi, ho impostato una scheda SD da 4 GB utilizzando l'ultima versione di Raspbian. In raspi-config ho impostato le seguenti opzioni:

  • espandere fs
  • impostare il nome host
  • impostare la password
  • imposta la divisione della memoria su 16 MB per la GPU
  • overcloccare la CPU a 800 MHz
  • abilita ssh

Su ogni scheda ho installato Apache e alcune librerie richieste dal mio CMS, libxml2 e python-libxml2. Ho usato questo comando per abilitare la riscrittura mod, richiesta anche dal mio CMS:

$ sudo a2enmod riscrivi

Infine, ho copiato alcuni script su ciascuna scheda SD che consentono a ciascun Pi di sincronizzare i suoi contenuti con il Pi di sviluppo. In un cluster più grande varrebbe la pena creare un'immagine della scheda SD con tutte queste modifiche apportate in anticipo.

Costruire un bilanciatore di carico

Il servizio di bilanciamento del carico deve disporre di due interfacce di rete, una per ricevere le richieste da un router e un'altra per inoltrare le richieste al cluster di server. I nodi nel cluster si trovano su una sottorete diversa rispetto al resto della rete, quindi l'indirizzo IP della seconda interfaccia del servizio di bilanciamento del carico deve trovarsi sulla stessa sottorete del resto del cluster. La prima interfaccia del servizio di bilanciamento del carico ha l'indirizzo IP 192.168.0.3 mentre l'indirizzo IP della seconda interfaccia è 192.168.1.1. Tutte le Pie nel cluster hanno indirizzi IP sulla sottorete 192.168.1.xxx.

Ho creato il mio sistema di bilanciamento del carico utilizzando un vecchio PC con 512 MB di RAM e una CPU x86 da 2,7 GHz. Ho aggiunto una seconda scheda ethernet PCI e ho installato Lubuntu, una versione leggera di Ubuntu. Stavo per installare Ubuntu, ma questo PC è piuttosto vecchio, quindi Lubuntu è probabilmente una scelta migliore. Ho usato un PC perché non ero sicuro che un singolo Pi sarebbe stato abbastanza potente da fungere da bilanciatore di carico e un Pi ha solo una connessione Ethernet.Voglio che entrambe le connessioni di rete del mio bilanciatore di carico siano Ethernet per prestazioni migliorate e stabilità.

Si noti che l'inoltro IP non è abilitato. Il sistema di bilanciamento del carico non è un router, deve solo inoltrare le richieste HTTP e non tutti i pacchetti IP che riceve.

Configurazione del software di bilanciamento del carico

Esistono molte diverse implementazioni software del bilanciamento del carico. Ho usato il modulo di bilanciamento del carico di Apache perché è facile da configurare. Per prima cosa mi sono assicurato che il sistema operativo del mio PC fosse aggiornato:

sudo apt-get update
sudo apt-get aggiornamento

Poi ho installato Apache:

sudo apt-get install apache2

Questi moduli Apache devono essere abilitati:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer

Il passaggio successivo consiste nel modificare /etc/apache2/sites-available/default per configurare il sistema di bilanciamento del carico. Il modulo proxy è necessario per l'inoltro HTTP, ma è meglio non permettere al tuo server di comportarsi come un proxy. Spammer e hacker spesso usano i server proxy di altre persone per nascondere il loro indirizzo IP, quindi è importante disabilitare questa funzione aggiungendo questa riga:

Richieste proxy disattivate

Sebbene le richieste proxy siano disabilitate, il modulo proxy è ancora abilitato e funge da proxy inverso. Quindi, definisci il cluster e i suoi membri aggiungendo questo codice:

Interfaccia del gestore del bilanciatore

Il modulo di bilanciamento dispone di un'interfaccia web che consente di monitorare lo stato dei server back-end e di configurarne le impostazioni. Puoi abilitare l'interfaccia web aggiungendo questo codice a /etc/apache2/sites-available/default:

È inoltre necessario indicare ad Apache di gestire le richieste alla pagina /balancer-manager in locale invece di inoltrare queste richieste a un server di lavoro. Tutte le altre richieste vengono inoltrate al cluster sopra definito.

ProxyPass/gestore-bilanciatore! ProxyPass / bilanciatore://rpiccluster/

Una volta salvate queste modifiche, Apache dovrebbe essere riavviato con questo comando:

$ sudo /etc/init.d/apache2 riavvia

quando apro un browser e vado su http://192.168.0.3 vedo la prima pagina del mio sito web. Se vado su http://192.168.0.3/balancer-manager, vedo questa pagina nell'immagine a destra.

L'ultimo passaggio per portare il cluster online è la regolazione delle impostazioni di port forwarding nel mio router. Avevo solo bisogno di impostare una regola per l'inoltro di pacchetti HTTP a http://192.168.0.3.

Ecco il completo /etc/apache2/sites-available/default per il sistema di bilanciamento del carico:

ServerAdmin [email protetta] DocumentRoot /var/www Opzioni SeguiSymLinks ConsentiSostituisci tutto Opzioni Indici FollowSymLinks MultiViews AllowOverride All Order consenti, nega consenti a tutti ScriptAlias ​​/cgi-bin/ /usr/lib/cgi-bin/ AllowOverride Nessuno Opzioni +ExecCGI -MultiViews +SymLinksIfOwnerMatch AddHandler cgi-script .py Ordine consenti, nega Consenti da tutti Richiesta proxy disattivata BalancerMember http://192.168.1.2:80 BalancerMember http://192.168.1.3:80 BalancerMember http://192.168.1.4:80 BalancerMember http://192.168.1.5:80 AllowOverride Nessuno Ordina consenti, nega consenti da tutti i ProxySet lbmethod=richieste SetHandler balancer-manager Ordina consenti, nega consenti da 192.168.0 ProxyPass/gestore-bilanciatore! ProxyPass / balancer://rpicluster/ ErrorLog $(APACHE_LOG_DIR)/error.log # I valori possibili includono: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel avverte CustomLog $(APACHE_LOG_DIR)/access.log combinato

- un computer in miniatura, poco più grande di una chiavetta USB, con un numero enorme di possibilità. Un PC può anche essere utilizzato per lo scopo previsto: collegare un mouse, una tastiera, un monitor e lavorare come con un normale computer. Ma le possibilità di Raspberry sono molto più ampie e queste opportunità vengono sfruttate dagli amanti dei gadget e della tecnologia. Nella recensione di oggi - 5 progetti più interessanti basati sul Raspberry Pi.

Tavoletta

Sì, se non hai un tablet, è il momento di farlo da solo. Raspberry Pi e istruzioni dettagliate ci aiuteranno in questo (anche se in inglese). La diagonale di questo tablet è di 10 pollici. La configurazione ripete la configurazione del Raspberry Pi.

Supercomputer

Di per sé, un mini-computer non è molto produttivo. Ma se combini diverse dozzine di lamponi in un unico cluster, puoi ottenere un sistema molto potente con risorse di elaborazione significative.

Non molto tempo fa, è stato creato un vero supercomputer da 64 Raspberry Pi. Poiché le custodie per tali dispositivi non vengono vendute, è stato deciso di realizzare la custodia da soli, dai mattoncini Lego.

Come fare qualcosa del genere da soli? Ecco un'istruzione dettagliata dall'autore di questo sviluppo.

telefono skype

Se comunichi regolarmente tramite Skype, i metodi di comunicazione standard (microfono, PC) potrebbero annoiarsi, proprio come il creatore del prossimo progetto ne era stanco. Per rendere più interessanti le conversazioni su Skype, lo sviluppatore ha posizionato il Raspberry stesso nel caso di un telefono rotante, ha collegato la rete e ha creato un software speciale che consente di tradurre in caratteri il numero di scroll del disco del telefono.

Il risultato è un'interessante stazione Skype. Il sistema differisce da un telefono rotativo convenzionale solo per il fatto che due fili sono collegati sul retro e non uno.

Telecamera

Sulla base del "lampone" puoi realizzare una potente fotocamera con un riempimento produttivo. Allo stesso tempo, tutto ciò che serve sono i LED, alcune ottiche e una stampante 3D per stampare il corpo del dispositivo. Naturalmente, non dobbiamo dimenticare il mini-computer Raspberry stesso: è lui che garantisce il funzionamento della fotocamera.

Puoi anche creare un sistema del genere da solo, anche se non è così facile da fare.

Sistema libero/occupato per il bagno dell'ufficio

Gli impiegati a volte perdono tempo prezioso quando vanno in bagno e vedono che il posto è già occupato. Il tempo di lavoro spiacevole e prezioso viene sprecato. Per evitare tali casi, è possibile creare un sistema di allerta che trasmetterà lo stato del bagno dell'ufficio (libero o occupato) ai computer di tutti i dipendenti.

Per determinare se c'è una persona all'interno o meno, il sistema utilizza il seguente algoritmo:

1. Viene scattata una foto tramite l'applicazione Streamer;
2. Viene analizzata la luminosità dei pixel in un determinato luogo, l'algoritmo funziona sulla base di PHP-GD;
3. Se la luminosità differisce dal riferimento, il sistema emette un segnale;
4. L'utente riceve un messaggio di occupato.

introduzione

I costi fondamentali nel campo dell'informatica sono la potenza dei computer e il loro consumo energetico. I moderni supercomputer occupano uno spazio enorme e consumano centinaia di migliaia di watt.

Un grosso problema in questo caso è il processo di insegnamento della programmazione parallela ed esecuzione di calcoli sui supercomputer e, ancor di più, la gestione di questo tipo di computer, poiché, di norma, gli studenti non hanno accesso diretto ad essi.

In questo documento, si propone di risolvere questo problema utilizzando microcomputer a scheda singola che sono apparsi di recente sul mercato delle apparecchiature informatiche (Paspberry Pi e analoghi). Sulla base di essi, puoi assemblare un cluster di calcolo economico e insegnare agli studenti le basi della programmazione parallela. Pertanto, lo scopo di questo lavoro è creare un cluster educativo poco costoso di microcomputer per lo sviluppo e l'implementazione di algoritmi di programmazione parallela nel processo educativo. Viene mostrato un esempio di calcolo parallelo nel cluster di formazione sviluppato.

Il Raspberry Pi è un microcomputer sviluppato dalla Raspberry Pi Foundation. Piccolo, delle dimensioni di una carta di credito, è un computer a scheda singola a tutti gli effetti (Sistema- Su- un- patata fritta). Processore (nel modello PI 3): 4 core ARM Cortex-A53x64. Il sistema operativo predefinito è Raspberian (basato sul kernel Linux). Ad un prezzo di soli $ 35, la scheda ha tutte le interfacce necessarie ( Wi- fi, Bluetooth, USB, ethernet), nonché un'ampia serie di programmi già pronti per qualsiasi tipo di attività. Ecco perché questi microcomputer sono stati scelti per un piccolo cluster di calcolo educativo.

Il concetto di cluster e cluster computing

È noto che un cluster è un gruppo di computer collegati da canali di comunicazione ad alta velocità, che rappresentano una singola risorsa hardware dal punto di vista dell'utente. D'altra parte, un cluster è una raccolta debolmente accoppiata di più sistemi informatici che lavorano insieme per eseguire applicazioni software comuni. Per collegare diversi PI lampone in un cluster, è stato assemblato un tipico sistema di cluster computing (router, cavi Ethernet, USB, ecc.) basato sul processore PI 3 (Fig. 1).

Figura 1. Sistema di elaborazione cluster basato su processore di due PI 3

Dimostrazione del calcolo parallelo

Per una dimostrazione visiva delle capacità di un cluster di due PI 3, sono stati scelti l'ambiente di programmazione Python 2 e l'implementazione dell'algoritmo di ordinamento degli array mediante il metodo merge. I computer erano collegati da una rete locale. Per semplificare il raggruppamento di più R PI, ci sono molti programmi già pronti, uno dei quali è chiamato "mpi4py".

Il codice dell'array di ordinamento di unione in Python è simile al seguente:

def merge(sinistra, destra): #unisce 2 liste ordinate insieme

#Scorre entrambi gli elenchi

mentre io< len(left)and j < len(right):

#Aggiunge un elemento più piccolo degli elenchi all'elenco finale

se lasciato[i]<= right[j]:

result.append(left[i])

result.append(right[j])

risultato += a sinistra

risultato += giusto

mergesort(lst):

#se c'è solo 1 elemento, non c'è bisogno di ordinare

se len(lst)< 2:

#scompone l'elenco in 2 metà

mezzo = len(lst)/ 2

#divide e ordina ricorsivamente ogni metà

sinistra = mergesort(lst[:middle])

destra = mergesort(lst)

#unisce entrambi gli elenchi ordinati

ritorno unione (sinistra, destra)

L'algoritmo del programma consiste nella seguente sequenza di azioni:

1. Su PI 3 (server) viene generata una matrice casuale di numeri.

2. Questa matrice è divisa in n parti, in base al numero di processori nella rete locale.

3. Utilizzando il modulo socket e la rete locale, il Pi3 (server) trasmette parte dell'array Pi3 (client).

4. Pi3 (server) ordina la sua parte dell'array e attende che Pi3 (client) risponda.

5. Pi3 (client) ordina la sua parte dell'array e la invia a Pi3 (server).

6. Pi3 (server) riceve la parte ordinata dell'array ed esegue l'ordinamento finale.

I calcoli hanno mostrato che un Pi3 impiegava circa 23 secondi per ordinare una matrice di 500 mila elementi. Dopo aver aggiunto un secondo Pi3, questo tempo è stato ridotto a 16 secondi. L'aumento della velocità non è lineare, ma più computer ci sono nel cluster, minore sarà il tempo speso.

Conclusione

Solo di recente i computer a scheda singola sono andati oltre il segmento dell'automazione di fabbrica e hanno iniziato a conquistare il mercato di massa. Le loro piccole dimensioni, il basso consumo energetico e le capacità di calcolo sufficientemente elevate possono renderli la base per l'implementazione di vari progetti, ad esempio l'insegnamento della programmazione parallela. Una caratteristica del sistema di cluster computing presentato basato su Raspberry PI 3 è la buona scalabilità, determinata dalle capacità delle apparecchiature di commutazione, dal basso costo, dalla capacità di utilizzare software libero, che è importante quando lo si introduce nel processo educativo. Il lavoro dimostrativo svolto mostra che un cluster anche di due PI 3 è in grado di velocizzare il calcolo di un compito semplice, ma allo stesso tempo voluminoso, come lo smistamento di una vasta matrice di dati.

In futuro si prevede di aumentare il numero di microcomputer nel sistema informatico e confrontare le prestazioni degli algoritmi crittografici, in particolare quelli previsti per essere utilizzati per crittografare/decodificare immagini (fotografiche, aeree, spaziali) di grande volume e trasferirli su Internet.

Elenco letteratura:

  1. Robert Mullins/ Calcolato distribuito //Università di Cambridge. – 2012. – http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/distributed-computing / .
  2. Grappolo. - Modalità di accesso. – URL: https://ru.wikipedia.org/wiki/Cluster (accesso il 25/02/2017).
  3. Lukin V.V., Marchevsky I.K. Cluster di calcolo educativo e sperimentale. Parte 1. Strumenti e capacità. - Modalità di accesso. – URL: https://elibrary.ru/download/elibrary_17091004_33209664.pdf (accesso 25.02.2017).

Nel guest post di oggi, Bruce Tulloch, CEO e amministratore delegato di BitScope Designs, discute gli usi del cluster computing con Raspberry Pi e il recente progetto pilota del cluster 3000-Pi del Los Alamos National Laboratory realizzato con BitScope Blade.

Il calcolo ad alte prestazioni e Raspberry Pi non vengono normalmente pronunciati nello stesso respiro, ma il Los Alamos National Laboratory sta costruendo un cluster Raspberry Pi con 3000 core come pilota prima di scalare fino a 40.000 core o più l'anno prossimo.

È incredibile, ma perché?

Cluster tradizionali di Raspberry Pi

Come la maggior parte delle persone, amiamo un buon cluster! Le persone li hanno costruiti con Raspberry Pi sin dall'inizio, perché è economico, educativo e divertente. Sono stati costruiti con l'originale Pi, Pi 2, Pi 3 e persino Pi Zero, ma nessuno di questi cluster si è dimostrato particolarmente pratico.

Ciò non ha impedito loro di essere utili però! Ho visto un bel po' di cluster Raspberry Pi alla conferenza la scorsa settimana.

Un minuscolo che ha attirato la mia attenzione è stato quello delle persone di openio.io , che hanno utilizzato un piccolo cluster Raspberry Pi Zero W per dimostrare la loro piattaforma di storage a oggetti definita dal software scalabile, che su macchine di grandi dimensioni viene utilizzata per gestire petabyte di dati, ma che è così leggero che funziona bene su questo:

C'è stato un altro esempio interessante allo stand ARM, dove è stato dimostrato che la piattaforma container singola dei Berkeley Labs funzionava in modo molto efficace su un piccolo cluster costruito con Raspberry Pi 3s.

Il mio programma preferito era quello dell'Edinburgh Parallel Computing Center (EPCC): Nick Brown ha utilizzato un gruppo di Pi 3 per spiegare i supercomputer ai bambini con un'applicazione interattiva coinvolgente. L'idea era che i visitatori dello stand progettassero un'ala di aeroplano, la simulassero attraverso il cluster e scoprissero se un aeromobile che utilizza la nuova ala potesse volare da Edimburgo a New York con un pieno di carburante. Il mio ce l'ha fatta, per fortuna!

Cluster Raspberry Pi di nuova generazione

Da un po' di tempo costruiamo cluster Raspberry Pi su piccola scala industriale con BitScope Blade .

Quando il Los Alamos National Laboratory ci ha contattato tramite il provider HPC SICORP con la richiesta di costruire un cluster comprendente molte migliaia di nodi, abbiamo considerato tutte le opzioni con molta attenzione. Doveva essere denso, affidabile, a basso consumo e facile da configurare e da costruire. Non aveva bisogno di "fare scienza", ma doveva funzionare in quasi tutti gli altri modi come avrebbe fatto un cluster HPC su vasta scala.

Leggerò e risponderò ai tuoi pensieri anche nei commenti sotto questo post.

Nota dell'editore:

Ecco una foto di Bruce con indosso un jetpack. Bello, vero?!


16 commenti

    Ragazzi, dovete iniziare a creare un "set di montaggio" per computer. Da bambino, ho ricevuto un set erettore quando avevo 7-8 anni per Natale. Ho creato tutto ciò a cui si potrebbe pensare. Successivamente sono diventato ingegnere meccanico. Ho progettato parti per GE Gas Turbines e, quando accendi le luci, ho un collegamento diretto per alimentare gli RP in tutto il mondo.

    Hai la maggior parte delle parti fondamentali in questo momento. Hai bisogno di un bus, qualcosa come il bus CM DDR3. Se l'RPi 3B o ogni volta che esce l'RPi 4, avesse un adattatore o pinout collegati a quel bus, il clustering sarebbe facile. Potrei immaginare quattro CM con quattro processori, un processore grafico/miner Bitcoin su un CM, un CM con SSD, ecc. Un set di montaggio per computer...

    • Cosa c'è di sbagliato nell'usare lo switch e il fabric ethernet come "bus" sull'hardware esistente?

    È disponibile una breve presentazione video che discute il cluster Los Alamos Pi, come è stato costruito, a cosa verrà utilizzato e perché questa soluzione è stata scelta rispetto ad altre?

    Inoltre, dato l'interesse per OctoPi e altri cluster Pi, potrebbe esserci una sezione dedicata all'elaborazione parallela nel Forum Raspberry Pi?

    • Questa è una buona idea. Penso che sia il momento giusto.

    La demo airwing è disponibile?

    • L'EPCC Raspberry Pi Cluster si chiama Wee Archie() e (come quello di Los Alamos che abbiamo costruito) è un "modello", anche se per uno scopo leggermente diverso. Nel loro caso è il rappresentante di Archer (http://www.archer.ac.uk/), un supercomputer di livello mondiale situato e gestito nel Regno Unito dal National Supercomputing Service. Nick Brown (https://www.epcc.ed.ac.uk/about/staff/dr-nick-brown) è il ragazzo dietro la demo che ho visto all'SC17. Mandagli una riga!

    Sono contento di aver lasciato il loro dipartimento di calcolo ad alte prestazioni ora. Questa è una follia. Il cattivo codice Fortran così diffuso nei laboratori non funzionerà allo stesso modo sull'architettura ARM quando i super computer su cui verrà eseguito il codice verranno utilizzati su macchine con architettura Intel. Questo progetto darà agli stagisti un campo di gioco per imparare ciò che avrebbero dovuto imparare al college.

    • Uno dei problemi in sospeso con il calcolo exascale è che è inefficiente controllare un calcolo eseguito su così tanti core su così tante caselle. Allo stesso tempo, la probabilità che tutti i nodi funzionino senza errori per la durata del calcolo diminuisce esponenzialmente man mano che vengono aggiunti più nodi.

      L'utilizzo efficace dei sistemi paralleli di memoria distribuita è stato paragonato ai polli da pastore. Quando si contemplano stormi così grandi da richiedere megawatt per nutrirli, potrebbe essere meglio esercitarsi allevando scarafaggi. Non si tratta di ottimizzare le prestazioni dei codici Fortran, ma di come gestire i guasti hardware in un calcolo parallelo distribuito in modo massiccio. Come accennato nel comunicato stampa, non sappiamo nemmeno come avviare una macchina exascale: al momento dell'avvio dell'ultimo nodo, molti altri nodi sono già andati in crash. A mio parere, è possibile modellare queste difficoltà dell'exascale con un enorme cluster di computer Raspberry Pi. Ad esempio, scaricare 1 GB di RAM sulla rete a 100 Mbit del Pi è un rapporto dati/larghezza di banda simile allo scarico di 1 TB di RAM su un'interconnessione a 100 Gbit.

      • Punta su Eric. Il problema è la scalabilità, l'avvio, l'esecuzione delle macchine, l'ingresso e l'uscita dei dati e il check-point per evitare di perdere enormi quantità di lavoro di calcolo.

        Alcune cose interessanti che ho imparato da questo progetto...

        Normalmente si pensa che i tassi di errore dell'ordine di 10^-18 siano abbastanza buoni, ma a questa scala si può imbattersi in essi entro la durata di un singolo colpo su una grande macchina. Ad esascala questo sarà peggio. La parola usata dalla comunità HPC per questo è “resilienza”; le macchine devono essere in grado di fare la scienza in modo affidabile e verificabile nonostante questi problemi del "mondo reale" che intervengono nel funzionamento del cluster sottostante.

        Fanno molta "scienza sincrona" su vasta scala, quindi la necessità di posti di blocco è inevitabile e Los Alamos si trova a un'altitudine piuttosto elevata (circa 7.300 piedi), quindi le macchine sono soggette a livelli più elevati di radiazioni cosmiche. Ciò significa che incontrano tassi più elevati di "errori analogici" che possono causare errori di calcolo e arresti anomali casuali dei nodi.

        Tutti questi tipi di problemi possono essere modellati, testati e compresi utilizzando il cluster Raspberry Pi a un costo molto inferiore ea una potenza inferiore rispetto alle macchine di grandi dimensioni. Avere accesso root a un cluster da 40.000 core per lunghi periodi di tempo è come un sogno che diventa realtà per i ragazzi il cui compito è risolvere questi problemi.

    Realizzo 120 cluster Raspberry Pi per la scansione 3D. Usa il puro multicasting UDP per controllarli tutti utilizzando un'unica trasmissione di pacchetti di rete. Funziona davvero bene :-)

    È molto simile a quello che vogliamo con un nuovo progetto di base. Ma invece di un cluster fisico vicino, stiamo pensando a un "collettivo" (una specie di Borg, ma poi carino ...), per eseguire il rendering 3D della GPU Three.js. Ho un prototipo in esecuzione su Bing o Google su sustasphere, troverai il GitHub corrispondente (non completamente aggiornato tuttavia). L'attuale prototipo esegue il rendering (ovviamente) nel tuo browser. Con il collettivo, le chiamate del tuo browser verranno instradate a (si spera) migliaia di Raspberry; ogni sgranocchiare in tempo reale una parte del rendering 3D. Nella "mia testa", penso a Open Suze accatastato con Express.js.

    Per l'approvvigionamento energetico di ogni nodo, ringraziamo il vento e una vite archemedia, a testa idraulica, con una semplice dinamo da bicicletta...

    Bello, ma perché? Vorremmo onorare un'eco del passato (The Port Huron Statement); introdurre una sfera virtuale di dignità. Dare alle persone l'opportunità di esprimere le proprie emozioni; definendo ancora il significato di dignità. Immagina Mozart mentre esegue le sue Nozze di Figaro (per me un perfetto esempio di portare l'arte alla gente e condividere pensieri sulla moralità); ed essere in grado di essere effettivamente lì, muoversi, "contare le narici" e forse anche "diventare fisico".

    Sì, per questo avrai bisogno di un collettivo di GPU.

    Sulla base della tua esperienza, potresti consigliarci sulla nostra strada da percorrere? Aiutaci a prendere decisioni valide?

    > recente pilota del cluster 3000-Pi del Los Alamos National Laboratory

    Dovrebbe leggere un cluster da 750 Pi, 5 blade da 150 Pis ciascuno, con un totale di 3000 core (4 core ciascuno per CPU)

    Ok, sono un nuby su Raspberry Pi 3's. Ma mi chiedevo se usassero LFS con il cluster di lame bitscope? ... e se sì, come si è comportato?

    • Non LFS ma nemmeno Raspbian (tranne per i test iniziali). Alla fine ne pubblicheranno di più per spiegare cosa stanno facendo, ma basti dire che si tratta di uno stack software molto snello che ha lo scopo di rendere facile per loro simulare il funzionamento di grandi cluster su questo "piccolo".

    Perché è “importante evitare di utilizzare le schede Micro SD”?

    Ho in mente un'applicazione per un cluster pi, per il quale avrò bisogno di archiviazione locale. Se non riesco a utilizzare la scheda MicroSD, che cosa?

    • Quando si esegue un cluster di 750 nodi (come sta facendo Los Alamos), la gestione e l'aggiornamento delle immagini su tutte le 750 schede SD è, beh, un incubo.

      Se il tuo cluster è più piccolo potrebbe non essere un problema (anzi spesso lo facciamo solo per piccoli Blade Rack di 20 o 40 nodi).

      Tuttavia, l'altro problema è la robustezza.

      Le schede SD tendono a consumarsi (la velocità dipende da come le usi). I nodi di avvio PXE (net) non si consumano. Anche l'archiviazione locale potrebbe non essere necessaria (se si utilizza un file system servito NFS o NBD tramite la LAN), ma la larghezza di banda di accesso all'archiviazione (remota) potrebbe essere un problema (se tutti i nodi saltano sulla LAN contemporaneamente a seconda di tessuto di rete e/o larghezza di banda del server NFS/NBD).

      L'altra opzione sono le chiavette USB (collegate alle porte USB del Raspberry Pi). Sono (di solito) più veloci e (possono essere) più affidabili delle schede SD e puoi anche avviare da loro!

      Detto questo, non ci sono problemi con le schede SD utilizzate entro i loro limiti nei cluster Raspberry Pi.