Inhoudsopgave:

DEMAC, een 3D-geprint modulair Beowulf-cluster - Ajarnpa
DEMAC, een 3D-geprint modulair Beowulf-cluster - Ajarnpa

Video: DEMAC, een 3D-geprint modulair Beowulf-cluster - Ajarnpa

Video: DEMAC, een 3D-geprint modulair Beowulf-cluster - Ajarnpa
Video: How to build an onshore wind crane 2024, November
Anonim
DEMAC, een 3D-geprint modulair Beowulf-cluster
DEMAC, een 3D-geprint modulair Beowulf-cluster

High Performance Computation (HPC) is de mogelijkheid om gegevens te verwerken en complexe berekeningen met hoge snelheden uit te voeren, het is de toepassing van "supercomputers" op rekenproblemen die ofwel te groot zijn voor standaardcomputers of te lang duren om te voltooien. De Top500 is een lijst die twee keer per jaar wordt gepubliceerd en waarin enkele van de snelste en krachtigste computers ter wereld worden gerangschikt. Landen en grote organisaties besteden miljoenen aan middelen om dit systeem in gebruik te nemen, zodat wetenschappers de nieuwste technologie kunnen gebruiken en complexe problemen kunnen oplossen.

Jaren geleden verbeterden computers hun prestaties door de snelheid van de processor te verhogen. Nadat we te maken kregen met een vertraging in dit soort benadering, besloten de ontwikkelaars dat om de prestaties van computers te blijven verbeteren, meerdere kernen (of rekeneenheden) bij elkaar moesten worden gepakt. De aggregatie van meerdere computerbronnen en de mechanismen om deze bronnen te controleren, is wat we in de informatica 'parallelisme' noemen. Meerdere kernen die meerdere taken uitvoeren, klinkt als een goede aanpak om de prestaties van een computer te verbeteren … maar dit roept een grote vraag op: hoe kunnen we deze bronnen efficiënter gebruiken?

Deze vragen houden computerwetenschappers bezig, er zijn meerdere manieren om een computer te vertellen hoe ze dingen moeten doen, er zijn zelfs nog meer manieren om meerdere computers te vertellen hoe ze dingen moeten doen. Dit project heeft tot doel een betaalbaar platform te ontwikkelen waar iedereen kan experimenteren met een zeer parallelle machine, bestaande modellen kan testen om in je eigen projecten toe te passen, nieuwe en creatieve manieren kan ontwikkelen om computerproblemen op te lossen of het gewoon kan gebruiken om anderen over computers te leren. We hopen dat u net zoveel plezier zult beleven aan het werken met DEMAC als wij.

DEMAC

Het Delaware Modular Assembly Cluster (DEMAC) is een uitbreidbare reeks embedded systemen (computers op kaartformaat) en een set 3D-geprinte frames om de boards te omsluiten en extra hardware die stroom, koeling en netwerktoegang biedt.

Elk apparaat of embedded systeem is een kleine computer, een Parallella Board dat de middelen van een dual-core ARM-processor, een 16-core coprocessor genaamd Epiphany en een embedded FPGA combineert met de flexibiliteit van een complete open-source stack. De houder is een zelfgemaakt 3D-geprint frame dat een goedkope implementatie en een opschaalbare structuur mogelijk maakt. Het is ontworpen om 4 eenheden van een standaardformaat rack te passen (zoals die je aantreft in computerserverruimtes).

Dit instructable omvat:

- Een lijst met benodigde materialen

- Instructies om de frames in 3D te printen

- Instructies om de onderdelen te monteren en aan te sluiten

- Een handleiding voor het downloaden en installeren van de vereiste software

- Een beschrijving van hoe u verbinding kunt maken met en kunt communiceren met het cluster

- Een "Waarom doen we dit?" sectie

Wie zijn we?

Wij zijn CAPSL (Computer Architecture and Parallel Laboratory), van de Universiteit van Delaware. Wij zijn van mening dat de toekomst van de berekening een sterke basis moet hebben in de Dataflow-theorie (die we later in deze instructable zullen uitleggen als je geïnteresseerd bent).

Benodigdheden

Deze lijst beschrijft de materialen die nodig zijn om een cluster met 4 borden te bouwen

- 4 Parallella-borden (u kunt ze krijgen van DigiKey of andere leveranciers, u kunt meer informatie vinden op hun website

- 4 micro-SD-kaarten met minimaal 16Gb (hier is een zeer goedkope 10-pack of zoiets als deze meer flexibele combo's)

- 4 micro-USB-kabels min. lengte 30 cm (1 ft) (ik raad deze aan)

- USB-oplader [met ten minste 4 type A-poorten] (ik raad deze aan met 6 poorten, of een met dezelfde vormfactor, omdat de powercase ervoor is ontworpen)

- Koelventilator [max. afmeting 100 mm x 100 mm x 15 mm] (ik raad deze aan omdat hij goedkoop is en werkt, maar andere met vergelijkbare afmetingen en kabelconfiguratie werken)

- Voeding voor koelventilator (Als uw configuratie voor meer dan 8 kaarten is, raad ik deze of iets dergelijks aan [AC 100 V/ 240 V tot DC 12 V 10 A 120 W] met een mooie metalen behuizing en kan ook worden bevestigd naar de schakelaar) (Als u slechts twee ventilatoren of minder gaat aansluiten, kunt u elke 12 V gebruiken met een uitgangsvoeding van minimaal 1 A die u mogelijk hebt rondslingeren)

- 5 Ethernet-kabels (4 kan zo kort zijn, afhankelijk van de afstand van de switch tot de kaarten, en één moet lang genoeg zijn om de switch met uw computer of de modem te verbinden om toegang te krijgen tot het clusternetwerk)

>> Belangrijke opmerking: Een koelsysteem is vereist, anders kunnen de planken oververhit raken! <<<

3D-geprinte onderdelen

- 4 bordtrays (Frame_01)

- 1 printplaat (Frame_02)

- 1 ventilatorbehuizing (Frame_03_B & Frame_03_T)

- 1 voedingsbehuizing (Frame_04)

Stap 1: Over DEMAC

Over DEMAC
Over DEMAC

DEMAC maakt deel uit van een groter geheel, een flexibel en schaalbaar platform waarmee we nieuwe programmeeruitvoeringsmodellen (PXM) voor parallelle berekening kunnen ontwikkelen en testen. Een PXM is meer dan een manier om berekeningen te beschrijven, het vertegenwoordigt de ruggengraat die zorgt voor een overeenkomst tussen de manier waarop een programma wordt uitgedrukt en hoe het wordt vertaald naar een gemeenschappelijke taal die door de machine kan worden uitgevoerd. We beschrijven een reeks elementen waarmee de gebruiker programma's kan genereren en een manier om de uitvoering van het programma te organiseren. Het programma kan worden geoptimaliseerd voor een specifieke architectuur door de gebruiker of een geautomatiseerd hulpmiddel op basis van deze gemeenschappelijke achtergrond.

U kunt meer over dit project te weten komen aan het einde van deze instructable, u kunt ook hier klikken voor meer informatie over DEMAC of hier voor meer informatie over CAPSL)

Stap 2: 3D-print DEMAC

3D-afdrukken DEMAC!
3D-afdrukken DEMAC!
3D-afdrukken DEMAC!
3D-afdrukken DEMAC!
3D-afdrukken DEMAC!
3D-afdrukken DEMAC!

In dit gedeelte vindt u een handleiding voor het 3D-printen van de frames die de andere componenten omsluiten en structurele ondersteuning bieden. Zelfs als u een meester in 3D-printen bent, zijn hier enkele tips die u kunt overwegen bij het afdrukken van deze frames. Alle frames kunnen worden geprint met een nozzle van 0,4 mm met een hoogte van 0,3 of 0,2 laag (u kunt ook adaptief gebruiken). Ik heb alles geprint met PLA, maar het maakt niet echt uit of je andere materialen wilt gebruiken (zolang ze structurele stabiliteit bieden en hogere of gelijke temperaturen kunnen verdragen dan PLA).

STL-bestanden:

www.thingiverse.com/thing:4493780

cults3d.com/nl/3d-model/divers/demac-a-mo…

www.myminifactory.com/object/3d-print-dema…

Bordlade (Frame_01)

Geen extra ondersteuning nodig. Deze is vrij eenvoudig, plaats hem gewoon met het platte oppervlak naar het afdrukoppervlak gericht.

Bordbehuizing (Frame_02)

Deze heeft mogelijk wat ondersteuning nodig in de middenbalken. Je kunt stellen dat een goed afgestelde machine/snijmachine die bruggen kan printen zonder extra ondersteuning. Probeer eerst wat bridge-stresstests als u zonder ondersteuningen wilt afdrukken, aangezien het idee was dat ze die niet nodig zouden hebben. Aan de andere kant bieden de zijkanten en wanden van de kolommen voldoende ondersteuning om deze zonder extra ondersteuningsstructuren te kunnen printen.

Ventilatorbehuizing (Frame_03_B & Frame_03_T)

Geen extra ondersteuning nodig. Plaats gewoon beide delen met het vlakke oppervlak naar het afdrukoppervlak gericht.

Voedingsbehuizing (Frame_04)

Net als bij Frame_02 heeft deze mogelijk wat ondersteuning nodig in de middelste balken. Je kunt deze ook proberen af te drukken zonder aanvullend ondersteunend materiaal (zoals het bedoeld was). De kolommen lateraal en wanden bieden voldoende ondersteuning om deze te printen zonder extra ondersteuningsstructuren.

Uitgang Koelbehuizing (Frame_05_B & Frame_05_T)

Geen extra ondersteuning nodig. Plaats gewoon beide delen met het vlakke oppervlak naar het afdrukoppervlak gericht.

Stap 3: Monteer DEMAC

Stel DEMAC samen!
Stel DEMAC samen!

Nu u over alle benodigde onderdelen beschikt, is het tijd om te beginnen met het samenstellen van het cluster.

Vergeet niet om het steunmateriaal dat u op de frames heeft, te verwijderen.

Stap 4: Plaats de ventilator op de behuizing

Plaats de ventilator op de behuizing
Plaats de ventilator op de behuizing
Plaats de ventilator op de behuizing
Plaats de ventilator op de behuizing

Schuif de ventilator eenvoudig in Frame_03_B (met de kabel in de rechter benedenhoek), het onderste deel moet binnen de kleine gebogen wanden passen die de ventilator op zijn plaats houden.

Plaats Frame_03_T met de kleine gebogen wanden naar beneden gericht op Frame_03_B (met de ventilator al op zijn plaats). Zorg ervoor dat het breedste deksel van Frame_03_T naar de bredere (achterkant) van Frame_03_B gericht is. De frames moeten klikken en de deksels moeten ze op hun plaats houden.

Stap 5: Sluit je aan bij de Board-behuizing met de Power-behuizing

Sluit je aan bij de Board-behuizing met de Power-behuizing
Sluit je aan bij de Board-behuizing met de Power-behuizing
Sluit je aan bij de Board-behuizing met de Power-behuizing
Sluit je aan bij de Board-behuizing met de Power-behuizing

Plaats Frame_02 bovenop Frame_04, deze twee zijn ontworpen om in elkaar te klikken. Er zit een kleine deuk in het onderste deel van Frame_02 die past op de connectoren bovenop Frame_04. Oefen lichte kracht uit om ze te verbinden.

Stap 6: Installeer de koeleenheid

Installeer de koeleenheid
Installeer de koeleenheid

Frame_03 (B&T) zijn ontworpen om samen te klikken met Frame_02, plaats de ventilator naar de planken gericht (luchtstroom moet naar binnen gaan Frame_02). Er zijn kleine deuken in de kolommen van Frame_02 die moeten overeenkomen met de markeringen in Frame_03_B. Oefen lichte druk uit op de zijvlakken van de structuur totdat de frames klikken.

Stap 7: Plaats de borden op de bordtrays

Plaats de borden op de bordtrays
Plaats de borden op de bordtrays

Frame_01 heeft 4 pinnen die overeenkomen met de gaten in het Parallella-bord. Het bord moet gemakkelijk in de lade passen. Afhankelijk van de kalibratie van uw 3D-printer kunnen ze te groot of te klein zijn, u kunt een beetje vloeibare siliconenlijm gebruiken om ze op hun plaats te houden of ze een beetje aandrukken met een tang om de diameter te verkleinen.

>> Belangrijke opmerking: vergeet niet om de koellichamen op het bord te plaatsen <<<

Stap 8: Schuif de bordladen in de bordbehuizing

Schuif de Board Trays in de Board Behuizing
Schuif de Board Trays in de Board Behuizing

Frame_01 biedt sleuven die passen in Frame_02-rails voor elk niveau. Houd er rekening mee dat er maar één kant open is om de bordlade te ontvangen. Er is ook een kleine hobbel die helpt om Frame_01 op zijn plaats te houden (eerlijk gezegd, deze zouden in een toekomstige versie wat verbetering kunnen gebruiken).

Schuif alle 4 bordladen met de planken al op hun plaats, 1 per niveau.

Stap 9: Plaats de voeding in de voedingsbehuizing

Plaats de voeding in de voedingsbehuizing
Plaats de voeding in de voedingsbehuizing

Plaats de USB-voeding in Frame_04 met de USB-poorten naar buiten gericht. Aan de andere kant zit een kleine opening voor de stroomkabel die de hub voedt.

Stap 10: Sluit de ventilator aan op de koelvoeding

De ventilator moet nu worden aangesloten op de 12 V-voeding die de koeleenheid van energie voorziet.

>> Belangrijke opmerking: zorg ervoor dat het koelsysteem altijd werkt terwijl u de kaarten op de voeding hebt aangesloten <<<

Stap 11: Configureer het besturingssysteem

1. Download het aanbevolen besturingssysteem (Parabuntu) hier

Er zijn twee revisies van de chips (z7010 [P1600/P1601] en z7020 [P1602/A101040] waarvoor verschillende bestanden nodig zijn.

Voor beide revisies is er een headless-versie (geen grafische gebruikersinterface) en een versie die HDMI-ondersteuning en een grafische gebruikersinterface biedt)

Als u de HDMI-uitgang wilt gebruiken, vergeet dan niet om een mini-HDMI-kabel aan te schaffen.

U kunt via het netwerk communiceren met de headless-versie.

Meer informatie en gedetailleerde uitleg vindt u hier op de officiële website.

Hier zijn de stappen om het besturingssysteem te installeren met behulp van een op Linux gebaseerde distributie. U kunt opdrachten in de terminal gebruiken (zonder het $-symbool) voor de volgende stappen of andere procedures op de website bekijken.

2. Installeren

- Plaats de micro-SD-kaart in uw gewone computer - Unzip de Ubuntu-afbeelding. Wijzig [releasename] voor de afbeeldingsnaam.

$ gunzip -d [releasenaam].img.gz

3. Controleer het apparaatpad van uw SD-kaart

Het exacte apparaatpad naar uw SD-kaart hangt af van uw Linux-distributie en computerconfiguratie. Gebruik de onderstaande opdracht om het juiste pad te krijgen. Als het niet duidelijk is uit de uitvoer welk pad het juiste is, probeer dan de opdracht met en zonder geplaatste SD-kaart. In Ubuntu kan het geretourneerde pad zoiets zijn als '/dev/mmcblk0p1'.

$ df -h

4. Ontkoppel de SD-kaart U moet alle partities op de SD-kaarten ontkoppelen voordat u de kaart kunt branden. Het [sd-partitie-pad] komt van het 'df'-commando in stap 3.

$ umount [sd-partitie-pad]

5. Brand de Ubuntu-schijfkopie op de micro-SD-kaart

Brand de afbeelding op de SD-kaart met behulp van het hulpprogramma 'dd' dat wordt weergegeven in het onderstaande opdrachtvoorbeeld. Wees voorzichtig en zorg ervoor dat u het pad correct specificeert, aangezien dit commando onomkeerbaar is en alles in het pad zal overschrijven! Een voorbeeldopdracht in Ubuntu zou zijn: 'sudo dd bs=4M if=my_release.img of=/dev/mmcblk0'. Even geduld, dit kan even duren (vele minuten), afhankelijk van de computer en de SD-kaart die wordt gebruikt.

$ sudo dd bs=4M if=[releasename].img of= [sd-partitie-pad]

6. Zorg ervoor dat alle schrijfbewerkingen naar de SD-kaart zijn voltooid

$ synchronisatie

7. Steek de SD-kaart in de SD-kaartsleuf in het bord

Stap 12: Sluit het bord aan op de voeding

Gebruik de miniUSB-naar-USB-A-kabel om een van de kaarten op de USB-hub aan te sluiten. U kunt de poorten en kabels labelen of een volgorde voor de verbindingen definiëren voor het geval u later een bord moet loskoppelen.

Stap 13: Router instellen

Router instellen
Router instellen

Als u de headless OS-installatie uitvoert terwijl u zich op een groot netwerk bevindt, moet u een router gebruiken en deze verbinden met internet, de Parallella-borden en uw pc.

Als u geen verbinding kunt maken met de router, kunt u het bord ook rechtstreeks op uw computer aansluiten met behulp van de Ethernet-kabel. Deze procedure kan een beetje lastiger zijn en wordt niet behandeld in deze instructable.

Zodra alles is aangesloten, opent u de interface van uw router om erachter te komen welk IP-adres standaard aan uw Parallella wordt gegeven. Zoek naar een tabblad met de tekst Netwerk. Zoek vervolgens een sectie met de naam DHCP Client List. Daar zou je je Parallella-bord en zijn IP-adres moeten zien.

Met dit IP-adres kunt u SSH naar de Parallella sturen en een statisch IP-adres instellen.

Stap 14: Verbinding maken met Parallella Board met SSH

Opmerking: voor deze sectie is [default_IP] het dynamische IP-adres dat u in de DHCP-clientlijst hebt gevonden.

Controleer de verbinding met het bord

$ ping [default_IP]

SSH voor de eerste keer op het bord (standaardwachtwoord is parallella)

$ ssh parallella@[default_IP]

Stap 15: Netwerk instellen

- Wijzig hostnaam: bewerk /etc/hostname

Hier kunt u elke gewenste naam toewijzen, we raden u aan NOPA## te gebruiken

Waar ## het bordnummer identificeert (bijv. 01, 02, …)

- Stel andere boards IP-adressen in: bewerk /etc/hosts

Stel statisch IP-adres in: voeg de onderstaande tekst toe voor /etc/network/interfaces.d/eth0

#De primaire netwerkinterfaceauto eth0

iface eth0 inet statisch

adres 192.168.10.101 #IP moet binnen het bereik van de router zijn

netmasker 255.255.255.0

gateway 192.168.10.1 #Dit moet het adres van de router zijn

naamserver 8.8.8.8

naamserver 8.8.4.4

Nadat u het IP-adres aan het bord hebt toegewezen, kunt u de verbinding opnieuw starten met het commando

$ ifdown eth0; ifup eth0

of herstart het bord

Stap 16: Keygen en wachtwoordloze toegang op borden instellen

Stel een privé-openbaar sleutelpaar in op elk knooppunt (inclusief het hoofdknooppunt). Maak een tijdelijke map, genereer een nieuwe sleutel en maak er een geautoriseerde sleutel van, en voeg alle NOPA's toe aan de bekende hosts zoals hieronder getoond.

mkdir tmp_sshcd tmp_ssh ssh-keygen -f./id_rsa

#Druk tweemaal op enter om een leeg wachtwoord in te stellen en te bevestigen

cp id_rsa.pub geautoriseerde_sleutels

voor i in `seq 0 24`; do j=$(echo $i | awk '{printf "%02d\n", $0}');

ssh-keyscan NOPA$J >> bekende_hosts; gedaan

Stap 17: Sshfs installeren

- Door sshfs te gebruiken, kunnen bestanden worden gedeeld tussen de borden op het cluster. Voer de volgende opdracht uit:

$ sudo apt-get install -y sshfs

- Controleren op / maken van zekeringgroep

Controleer of de zekeringgroep bestaat:

$ kat /etc/groep | grep 'zekering'

Als de groep bestaat, voert u de volgende opdracht uit:

$ bash sudo usermod -a -G zekering parallella

- Als de groep niet bestaat, maak deze dan aan en voeg de gebruiker eraan toe

$ sudo groupadd zekering

$ sudo usermod -a -G zekering parallella

- Uncomment de regel user_allow_other in het bestand fuse.config

$ sudo vim /etc/fuse.conf

Stap 18: NFS-map configureren

- Wijzig het bestand /etc/fstab

$ sudo vim /etc/fstab

- Vervang de inhoud door de onderstaande tekst

# [bestandssysteem] [koppelpunt] [type] [opties]

sshfs#parallella@NOPA01:/home/parallella/DEMAC_nfs /home/parallella/DEMAC_nfs fuse comment=sshfs, noauto, users, exec, rw, uid=1000, gid=1000, allow_other, reconnect, transform_symlinks, BatchMode=yes, nonempty, _netdev, identityfile=/home/parallella/.ssh/id_rsa, default_permissions 0 0

Stap 19: Verbind het bord met de schakelaar

Plaats de switch onder het cluster of ergens in de buurt, gebruik Ethernet-kabels om het bord dat je al hebt geconfigureerd op de switch aan te sluiten. U kunt ook de switch en uw computer op de router aansluiten om toegang te krijgen tot het cluster.

Je zou in staat moeten zijn om te pingen en te ssh-en naar het bord dat nu met een statisch IP-adres op de switch is aangesloten.

U kunt ook het IP-adres en de hostnaam toevoegen aan uw /etc/hosts-bestand. U kunt de hostnaam gebruiken om verbinding te maken in plaats van het hele IP-adres te typen.

Stap 20: Herhaal stap 11 tot 19 voor elk bord

Volg de procedure om het besturingssysteem en het netwerk voor elk bord te configureren.

>> Belangrijke opmerking: Gebruik verschillende hostames en IP voor elk bord! Ze moeten uniek zijn via het netwerk! <<<

Stap 21: Randapparatuur aansluiten

Randapparatuur aansluiten!
Randapparatuur aansluiten!

Controleer of de ventilator werkt:

Zorg ervoor dat de ventilator stroom krijgt en dat de luchtstroom naar binnen in de behuizing van het bord gaat. De verbinding moet stabiel en onafhankelijk zijn van andere elementen. Houd er rekening mee dat de planken oververhit kunnen raken als ze niet goed worden gekoeld.

Zorg ervoor dat de kaarten zijn aangesloten op de schakelaar:

Op dit punt zou u elk bord afzonderlijk moeten hebben geconfigureerd. De borden moeten ook op de schakelaar worden aangesloten. De handleiding van de switch moet informatie bevatten die kan worden gebruikt om te controleren of het opstartproces correct is voltooid. Er kunnen enkele LED's zijn die de status aangeven.

Sluit de borden aan op de voeding:

Gebruik de micro-USB-naar-USB-A-kabel om elk van de kaarten op de USB-hub aan te sluiten. U kunt de poorten labelen of een volgorde definiëren voor het geval u een enkele kaart moet loskoppelen.

Stap 22: Kracht toepassen

1. De ventilator zou moeten werken.

2. De kaarten moeten worden aangesloten op de Ethernet-switch.

3. Controleer of de kaarten zijn aangesloten op de USB-hub.

4. Voorzie de USB-hub van stroom.

5. Schakel DEMAC in!

6. Winst!

Stap 23: Softwarebronnen

MPI (Message Passing Interface)

MPI is een communicatieprotocol voor het programmeren van parallelle computers. Zowel point-to-point als collectieve communicatie worden ondersteund.

www.open-mpi.org/

OpenMP (Open Multi-Processing)

De Application Programming Interface (API) OpenMP (Open Multi-Processing) ondersteunt multi-platform shared-memory multiprocessing-programmering in C, C++ en Fortran, op veel platforms. Het bestaat uit een set compilerrichtlijnen, bibliotheekroutines en omgevingsvariabelen die het runtime-gedrag beïnvloeden.

www.openmp.org/

Parallella-software

De ontwikkelaars bieden een open-source softwarestack, inclusief een SDK om te communiceren met de accelerator.

www.parallella.org/software/

U vindt er ook handleidingen en meer gedetailleerde informatie.

Ze hebben ook GitHub-repositories:

github.com/parallella

Voel je vrij om enkele van de voorbeelden te downloaden en uit te voeren, een van mijn favorieten is Game of Life gebaseerd op de beroemde Conway's Game of Life.

Disclaimer: definities kunnen worden gekopieerd van wikipedia

Aanbevolen: