Laten we de belangrijkste verschillen tussen gedistribueerd en parallel computergebruik op een rij zetten, en hoe deze de schaalbaarheid ervan beïnvloeden:
Parallel computergebruik
* Definitie: Een vorm van berekening waarbij meerdere processors tegelijkertijd instructies uitvoeren binnen een enkele gedeelde geheugenruimte of zeer nauw gekoppelde knooppunten. Het doel is om de uitvoering van een enkele grote taak te versnellen door deze in kleinere, onafhankelijke subtaken te verdelen.
* Hardware: Meestal gaat het om multi-coreprocessors, symmetrische multiprocessing (SMP)-systemen of gespecialiseerde hardware zoals GPU's binnen een enkele machine of een klein cluster. De hardware bevindt zich over het algemeen fysiek dicht bij elkaar en communiceert rechtstreeks via gedeeld geheugen of snelle verbindingen.
* Geheugen: Gedeeld geheugen is gebruikelijk. Processoren hebben rechtstreeks toegang tot dezelfde geheugenlocaties. Het doorgeven van berichten is ook mogelijk, maar minder gebruikelijk dan bij gedistribueerde systemen.
* Communicatie: Snel en efficiënt dankzij gedeeld geheugen of verbindingen met hoge bandbreedte.
* Programmeermodel: Maakt vaak gebruik van programmeermodellen met gedeeld geheugen (bijvoorbeeld OpenMP) of het doorgeven van berichten binnen een enkele machine (bijvoorbeeld MPI binnen een enkele server). Focus op efficiënte gegevenstoegang en synchronisatie.
* Focus: Het doel is in de eerste plaats om de *uitvoeringstijd* van een rekenintensieve taak te verminderen.
Gedistribueerd computergebruik
* Definitie: Een vorm van berekening waarbij meerdere onafhankelijke computers (knooppunten) zijn verbonden via een netwerk , samenwerken om een gemeenschappelijk doel te bereiken. Deze knooppunten hebben hun eigen geheugenruimte en besturingssystemen. Het doel is om complexe problemen op te lossen die te groot zijn voor een enkele machine of om diensten op een geografisch verspreide manier aan te bieden.
* Hardware: Betreft een netwerk van computers, dat van alles kan zijn, van personal computers tot servers en gespecialiseerde hardware, vaak geografisch verspreid.
* Geheugen: Elk knooppunt heeft zijn eigen onafhankelijke geheugen. Gegevens moeten expliciet tussen knooppunten worden doorgegeven.
* Communicatie: Is afhankelijk van netwerkcommunicatie (bijvoorbeeld TCP/IP, HTTP, berichtenwachtrijen) om gegevens uit te wisselen en taken te coördineren. Deze communicatie is doorgaans langzamer en gevoeliger voor latentie en fouten dan bij parallelle systemen.
* Programmeermodel: Maakt gebruik van berichtdoorgifte of gedistribueerd gedeeld geheugen (dat via een netwerk wordt geïmplementeerd en complexiteit introduceert) programmeermodellen. Focus op fouttolerantie, dataconsistentie en netwerkcommunicatie.
* Focus: Heeft tot doel de *schaalbaarheid*, *beschikbaarheid*, *fouttolerantie* en de mogelijkheid om grote datasets te verwerken te vergroten. Hoewel prestatieverbetering een doel is, is dit vaak ondergeschikt aan deze andere zorgen.
Belangrijkste verschillen in een tabel:
| Kenmerk | Parallel computergebruik | Gedistribueerde computers |
|-------------------|--------------------------------------- ----------|--------------------------------------------------|
| Hardware | Multi-core, SMP, GPU's binnen één enkele machine | Netwerk van onafhankelijke computers |
| Geheugen | Gedeeld geheugen (vaak) of bericht doorgeven (minder vaak)| Onafhankelijk geheugen per knooppunt |
| Communicatie | Snel, gedeeld geheugen of snelle verbindingen | Langzamer, netwerkcommunicatie (TCP/IP, HTTP) |
| Programmeren | Gedeeld geheugen (OpenMP), MPI (enkele machine) | Berichtdoorgifte (MPI, gRPC, etc.), gedistribueerde raamwerken|
| Primair doel | Verkort de uitvoeringstijd van een enkele taak | Vergroot de schaalbaarheid, beschikbaarheid en fouttolerantie |
| Koppeling | Nauw gekoppeld | Losjes gekoppeld |
| Complexiteit | Lager, vooral met gedeeld geheugen. | Hoger vanwege netwerkproblemen, fouttolerantie. |
Impact op de schaalbaarheid van prestaties
* Schaalbaarheid van parallelle computers:
* Voordelen: Uitstekende schaalbaarheid voor problemen die gemakkelijk kunnen worden verdeeld en geparalleliseerd, vooral bij gebruik van gedeelde geheugenarchitecturen. De snelle communicatie maakt het efficiënt delen en synchroniseren van gegevens mogelijk.
* Beperkingen: Schaalbaarheid wordt beperkt door het aantal cores of processors binnen één machine. De wet van Amdahl heeft een aanzienlijke invloed op de prestaties:het deel van de code dat niet kan worden geparallelliseerd, zal uiteindelijk de algehele versnelling beperken. Ook kan de geheugenbandbreedte een knelpunt worden naarmate het aantal cores toeneemt. Gedeelde geheugentoegang kan ook tot conflicten leiden.
* Gedistribueerde computerschaalbaarheid:
* Voordelen: Kan worden geschaald naar veel grotere problemen en datasets, omdat het niet wordt beperkt door de bronnen van een enkele machine. Horizontale schaalvergroting is mogelijk door meer knooppunten aan het netwerk toe te voegen. Meer tolerant ten opzichte van mislukkingen; als één knooppunt uitvalt, kunnen de andere blijven werken.
* Beperkingen: Schaalbaarheid wordt beperkt door netwerkbandbreedte, latentie en communicatieoverhead. Gegevensoverdracht tussen knooppunten kan traag en duur zijn. Het bereiken van een sterke consistentie tussen gedistribueerde gegevens kan complex zijn en de prestaties beïnvloeden. De complexiteit van het beheer van gedistribueerde systemen (fouttolerantie, dataconsistentie, coördinatie) kan de ontwikkelings- en operationele kosten aanzienlijk verhogen. De coördinatieoverhead kan aanzienlijk worden naarmate het aantal knooppunten groeit.
Samengevat:
* Parallel computergebruik blinkt uit in het versnellen van rekenintensieve taken binnen een enkele machine of een klein, nauw gekoppeld cluster. Ideaal wanneer u voor een specifiek probleem de snelst mogelijke uitvoeringstijd nodig heeft.
* Gedistribueerd computergebruik blinkt uit in het omgaan met grootschalige problemen, het bieden van hoge beschikbaarheid en het beheren van geografisch verspreide gegevens. Het is ideaal wanneer u enorme datasets moet verwerken, fouttolerante systemen moet bouwen of services moet leveren aan een groot aantal gebruikers op verschillende locaties.
De keuze tussen parallel en gedistribueerd computergebruik (of een combinatie van beide) hangt sterk af van het specifieke probleem dat u probeert op te lossen, de beschikbare bronnen en de gewenste prestatiekenmerken. Een gebruikelijke aanpak is het gebruik van parallelle computing *binnen* elk knooppunt van een gedistribueerd systeem om het gebruik van bronnen te maximaliseren. Een gedistribueerde database kan bijvoorbeeld multi-coreprocessors gebruiken om zoekopdrachten binnen elke databaseserver te parallelliseren. |