Schrijf kleine assemblagecode in een raster van CPU's die waarden aan hun buren doorgeven, zodat de invoerstroom naar het doel wordt omgezet zonder deadlock.
Hoe te spelen
Je programmeert een raster van zeer kleine computers. Elk node voert zijn eigen korte lijst instructies uit en kan alleen communiceren met de buren direct ernaast, door waarden via poorten door te geven — dus een getal dat het raster moet oversteken, moet handmatig worden doorgegeven, node voor node.
Elk node heeft een accumulator en een handvol instructies: waarde verplaatsen, optellen, aftrekken, springen.
Een node kan lezen van of schrijven naar de buur boven, onder, links of rechts, of naar de invoer- en uitvoerstroom.
Poorten blokkeren. Een node die naar rechts schrijft, wacht simpelweg tot de node rechts ervan van links leest.
Dat betekent dat twee nodes in de tijd moeten overeenkomen, niet alleen in waarde.
Als een hele cyclus voorbijgaat zonder dat iemand vooruitgang boekt en iemand nog steeds wacht, is het raster in deadlock.
De puzzel is opgelost wanneer de uitvoerstroom overeenkomt met het doel dat het niveau vereist.
Bediening
Desktop: typ code in het tekstvak van elk node, kies een niveau uit de dropdown en druk op Run
Telefoon & tablet: werkt, maar een externe toetsenbord wordt sterk aanbevolen voor het schrijven van de code
Spelmodi
Dagelijks: één gedeelde puzzel gebaseerd op de datum van vandaag
Oefenen: wissel van nieuwe gerandomiseerde invoer met de New-knop
Tips & strategie
Ontwerp de route vóór de rekenkundige bewerkingen. De meeste fouten zijn waarden die niet op de juiste plek komen, niet sommen die fout uitkomen.
Twee nodes die op elkaar wachten, is de klassieke deadlock. Als beide naar elkaar schrijven voordat er gelezen wordt, beweegt er niemand.
Houd het verkeer waar mogelijk in één richting. Een raster met een consistente richting is veel makkelijker te doorgronden dan één met kruisende waarden.
Gebruik een node als pure relais wanneer je dat nodig hebt. Niets doen behalve een waarde doorgeven is een legitieme en vaak noodzakelijke taak.
Lees het geblokkeerde node, niet het verkeerde antwoord. Wanneer de uitvoer stopt, is het informatieve aspect welk node wacht en op wie.
Wat je leert
Node Network is een parallel programmering puzzel over berichtuitwisseling en deadlockvermijding over een mesh van processors.
Vaardigheden: parallelle en concurrente programmering, berichtuitwisseling, deadlockvermijding
Geschikt voor: ongeveer klas 9–12 (14+)
Voor ouders & leerkrachten: concurrentie en deadlock, in de praktijk.
Oorsprong
Een rooster van zeer kleine computers, die elk hun eigen korte instructielijst uitvoeren en alleen kunnen praten met de buren direct naast zich, is TIS-100 — Zachtronics, juli 2015 — dat zijn puzzels situeerde op een fictieve, beschadigde machine uit de jaren 1970.
De beperking die wordt aangeleerd, is echt en centraal in parallel rekenen: zonder gedeeld geheugen moet een waarde die het rooster over moet, met de hand worden doorgegeven, knooppunt na knooppunt, via message passing.
En via doorgeven met de hand kom je deadlock tegen — twee knooppunten die elk op de ander wachten, allebei voorgoed stil. Het is een bug die je op een whiteboard niet echt kunt uitleggen, omdat de hele moeilijkheid is dat elk knooppunt zich afzonderlijk correct gedraagt.
Over Node Network
Node Network is een parallel programmering puzzel over berichtuitwisseling en deadlockvermijding over een mesh van processors. Het is een origineel, gratis browserspel dat in-house is ontwikkeld voor PlayPendium.