Parallel Computing

Parallel Computing definitie

Parallel computing is een type computerarchitectuur waarin meerdere processors gelijktijdig meerdere kleinere berekeningen uitvoeren, uitgesplitst naar een groter, complex probleem.

Diagram van LLNL toont de Algemene parallelle computerarchitectuur die wordt gebruikt om grotere, complexe problemen op te splitsen in kleinere berekeningen.
FAQs

Wat is Parallel Computing?

Parallel computing verwijst naar het proces van het opsplitsen van grotere problemen in kleinere, onafhankelijke, vaak vergelijkbare delen die gelijktijdig kunnen worden uitgevoerd door meerdere processors die communiceren via gedeeld geheugen, waarvan de resultaten na voltooiing worden gecombineerd als onderdeel van een algemeen algoritme. Het primaire doel van parallel computing is om de beschikbare rekenkracht te vergroten voor snellere applicatieverwerking en probleemoplossing.

parallelle computerinfrastructuur wordt gewoonlijk ondergebracht in een enkel datacenter waar meerdere processors in een serverrek zijn geïnstalleerd; rekenaanvragen worden in kleine stukjes verdeeld door de toepassingsserver die vervolgens gelijktijdig op elke server worden uitgevoerd.

Er zijn over het algemeen vier soorten parallel computing, beschikbaar bij zowel proprietary als open source parallel computing leveranciers — bit-level parallellism, instructie-level parallellism, task parallellism, of superword-level parallellism:

  • Bit-level parallellism: verhoogt de processor woordgrootte, waardoor de hoeveelheid instructies die de processor moet uitvoeren om een bewerking uit te voeren op variabelen groter dan de lengte van het woord vermindert.
  • parallellisme op Instructieniveau: de hardwarebenadering werkt op dynamisch parallellisme, waarbij de processor in run-time beslist welke instructies parallel moeten worden uitgevoerd; de softwarebenadering werkt op statisch parallellisme, waarbij de compiler beslist welke instructies parallel moeten worden uitgevoerd
  • Taakparallellisme: een vorm van parallellisatie van computercode tussen meerdere processors die meerdere taken tegelijkertijd uitvoert op dezelfde data
  • superword-Level parallellisme: een vectorisatietechniek die parallellisme van inline code

kan benutten parallelle toepassingen worden meestal geclassificeerd als ofwel fijnkorrelig parallellisme, waarbij subtaken meerdere keren per seconde communiceren; grof-korrelig parallellisme, waarbij subtaken niet meerdere keren per seconde communiceren; of beschamend parallellisme, waarbij subtaken communiceren zelden of nooit. Mapping in parallel computing wordt gebruikt om beschamend parallelle problemen op te lossen door een eenvoudige operatie toe te passen op alle elementen van een reeks zonder communicatie tussen de subtaken.

de popularisatie en evolutie van parallel computing in de 21e eeuw kwam als reactie op het schalen van processorfrequenties op de stroommuur. Toename van de frequentie verhoogt de hoeveelheid vermogen die wordt gebruikt in een processor, en het schalen van de processorfrequentie is niet langer mogelijk na een bepaald punt; daarom begonnen programmeurs en fabrikanten met het ontwerpen van parallelle systeemsoftware en het produceren van energiezuinige processors met meerdere kernen om het probleem van het energieverbruik en oververhitting van centrale verwerkingseenheden aan te pakken.

het belang van parallel computing blijft groeien met het toenemende gebruik van multicore processors en GPU ‘ s. GPU ’s werken samen met CPU’ s om de doorvoer van gegevens en het aantal gelijktijdige berekeningen binnen een toepassing te verhogen. Met behulp van de kracht van parallellisme, kan een GPU meer werk dan een CPU voltooien in een bepaalde hoeveelheid tijd.

grondbeginselen van parallelle computerarchitectuur

parallelle computerarchitectuur bestaat in een groot aantal parallelle computers, ingedeeld naar het niveau waarop de hardware parallellisme ondersteunt. Parallelle computerarchitectuur en programmeertechnieken werken samen om deze machines effectief te gebruiken. De klassen van parallelle computerarchitecturen omvatten:

  • Multi-core computing: Een multi-core processor is een computer processor geïntegreerde schakeling met twee of meer afzonderlijke processorkernen, die elk programma instructies parallel uitvoert. Cores zijn geà ntegreerd op meerdere matrijzen in een enkele chip pakket of op een enkele geïntegreerde schakeling sterven, en kunnen architecturen zoals multithreading, superscalar, vector, of VLIW implementeren. Multi-core architecturen worden gecategoriseerd als ofwel homogeen, die alleen identieke kernen, of heterogeen, die kernen die niet identiek zijn omvat.
  • symmetrische multiprocessing: multiprocessor computer hardware en software architectuur waarin twee of meer onafhankelijke, homogene processors worden bestuurd door een enkel besturingssysteem instantie die alle processors gelijk behandelt, en is aangesloten op een enkel, gedeeld hoofdgeheugen met volledige toegang tot alle gemeenschappelijke bronnen en apparaten. Elke processor heeft een eigen cachegeheugen, kan worden aangesloten met behulp van on-chip mesh-netwerken, en kan werken aan elke taak, ongeacht waar de gegevens voor die taak zich in het geheugen bevindt.
  • Distributed computing: Gedistribueerde systeemcomponenten bevinden zich op verschillende computers in het netwerk die hun acties coördineren door te communiceren via pure HTTP -, RPC-achtige connectoren en berichtwachtrijen. Belangrijke kenmerken van gedistribueerde systemen zijn onafhankelijke storing van componenten en concurrency van componenten. Gedistribueerde programmering wordt meestal gecategoriseerd als client-server, three-tier, n-tier of peer-to-peer architecturen. Er is veel overlap in gedistribueerde en parallelle computing en de termen worden soms door elkaar gebruikt.
  • Massively parallel computing: verwijst naar het gebruik van talrijke computers of computerprocessors om gelijktijdig een reeks berekeningen parallel uit te voeren. Eén aanpak omvat het groeperen van verschillende processors in een strak gestructureerde, gecentraliseerde computercluster. Een andere benadering is grid computing, waarbij veel op grote schaal verspreide computers samenwerken en via Internet communiceren om een bepaald probleem op te lossen.

andere parallelle computerarchitecturen omvatten gespecialiseerde parallelle computers, clustercomputers, grid computing, vectorprocessoren, toepassingsspecifieke geïntegreerde schakelingen, algemene computing op graphics processing units (GPGPU) en herconfigureerbare computing met in het veld programmeerbare poortarrays. Hoofdgeheugen in een parallelle computerstructuur is ofwel gedistribueerd geheugen of gedeeld geheugen.

Parallel Computing Software Solutions and Techniques

gelijktijdige programmeertalen, API ‘ s, bibliotheken en parallel programmeermodellen zijn ontwikkeld om parallel computing op parallelle hardware te vergemakkelijken. Sommige parallelle computing software oplossingen en technieken omvatten:

  • Application checkpointing: een techniek die fouttolerantie biedt voor computersystemen door het registreren van alle huidige variabele toestanden van de toepassing, waardoor de toepassing kan herstellen en herstarten vanaf dat punt in het geval van een storing. Checkpointing is een cruciale techniek voor zeer parallelle computersystemen waarbij high performance computing wordt uitgevoerd over een groot aantal processors.
  • automatische parallellisatie: verwijst naar de conversie van sequentiële code in multi-threaded code om meerdere processors tegelijkertijd te gebruiken in een shared-memory multiprocessor (SMP) machine. Automatische parallellisatie technieken omvatten Parse, analyseren, schema, en code generatie. Typische voorbeelden van veelvoorkomende parallelizing compilers en tools zijn Paradigm compiler, Polaris compiler, Rice Fortran D compiler, SUIF compiler en Vienna Fortran compiler.
  • parallelle programmeertalen: parallelle programmeertalen worden doorgaans geclassificeerd als gedistribueerd geheugen of gedeeld geheugen. Terwijl gedistribueerde geheugen programmeertalen gebruik maken van bericht doorgeven om te communiceren, gedeelde geheugen programmeertalen communiceren door het manipuleren van gedeelde geheugen variabelen.

verschil tussen Parallel Computing en Cloud Computing

Cloud computing is een algemene term die verwijst naar de levering van schaalbare diensten, zoals databases, gegevensopslag, netwerken, servers en software, via het Internet op een als-nodig, pay-as-you-go basis.

cloudcomputingdiensten kunnen publiek of privé zijn, worden volledig beheerd door de provider en vergemakkelijken toegang op afstand tot gegevens, werk en toepassingen vanaf elk apparaat op elke plaats die een internetverbinding tot stand kan brengen. De drie meest voorkomende dienstencategorieën zijn Infrastructuur as as Service (IaaS), Platform as a Service (Paas) en Software as a Service (SaaS).

Cloud computing is een relatief nieuw paradigma in softwareontwikkeling dat een bredere toegang tot parallel computing via grote, virtuele computerclusters mogelijk maakt, waardoor de gemiddelde gebruiker en kleinere organisaties parallelle verwerkingskracht en opslagopties kunnen benutten die doorgaans voor grote ondernemingen zijn gereserveerd.

verschil tussen parallelle verwerking en parallelle verwerking

parallelle verwerking is een methode in de berekening waarbij afzonderlijke delen van een totale complexe taak worden opgesplitst en tegelijkertijd op meerdere CPU ‘ s worden uitgevoerd, waardoor de tijd voor verwerking wordt verkort.

Het verdelen en toewijzen van elke taak aan een andere processor wordt doorgaans uitgevoerd door computerwetenschappers met behulp van software voor parallelle verwerking, die ook zullen werken om de gegevens opnieuw samen te stellen en te lezen zodra elke processor zijn specifieke vergelijking heeft opgelost. Dit proces wordt uitgevoerd via een computernetwerk of via een computer met twee of meer processors.

parallelle verwerking en parallelle verwerking komen gelijktijdig voor, daarom worden de termen vaak door elkaar gebruikt; wanneer parallelle verwerking echter betrekking heeft op het aantal parallel lopende kernen en CPU ‘ s in de computer, heeft parallelle verwerking betrekking op de manier waarop software zich gedraagt om voor die voorwaarde te optimaliseren.

verschil tussen sequentiële en parallelle Computing

sequentiële computing, ook bekend als seriële computation, verwijst naar het gebruik van een enkele processor om een programma uit te voeren dat is opgesplitst in een reeks afzonderlijke instructies, elk na elkaar uitgevoerd zonder overlapping op een bepaald moment. Software is van oudsher opeenvolgend geprogrammeerd, wat een eenvoudigere aanpak biedt, maar wordt aanzienlijk beperkt door de snelheid van de processor en zijn vermogen om elke reeks instructies uit te voeren. Waar uni-processor machines sequentiële datastructuren gebruiken, zijn datastructuren voor parallelle computeromgevingen gelijktijdig.

het meten van de prestaties bij sequentiële programmering is veel minder complex en belangrijk dan benchmarks bij parallelle berekeningen, aangezien het meestal alleen gaat om het identificeren van knelpunten in het systeem. Benchmarks in parallelle berekeningen kunnen worden bereikt met benchmarking-en prestatieregressietestkaders, die gebruik maken van een verscheidenheid aan meetmethoden, zoals statistische behandeling en meervoudige herhalingen. De mogelijkheid om dit knelpunt te vermijden door gegevens door de geheugenhiërarchie te bewegen is vooral duidelijk in parallelle computing voor data science, Machine learning parallel computing, en parallelle computing artificial intelligence use cases.

sequentiële computing is in feite het tegenovergestelde van parallelle computing. Hoewel parallel computing complexer kan zijn en vooraf hogere kosten met zich meebrengt, weegt het voordeel om een probleem sneller op te lossen vaak op tegen de kosten van het verwerven van parallelle computerhardware.

biedt OmniSci een parallelle computeroplossing?

Het OmniSci platform maakt gebruik van de enorme parallelle rekenkracht van GPU ‘ s voor Big Data-analyse, waardoor big data-analisten en data-wetenschappers de kracht hebben om data science-workflows interactief te bevragen, visualiseren en kracht te geven over miljarden records in milliseconden. Het omnisci platform is ontworpen om de schaalbaarheid en prestatiebeperkingen van legacy analytics tools te overwinnen die worden geconfronteerd met de schaal -, snelheid-en locatiekenmerken van de grote datasets van vandaag.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *