Parallell beräkning

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 5 oktober 2014; kontroller kräver 12 redigeringar .

Parallell beräkning  är ett sätt att organisera datorberäkning , där program utvecklas som en uppsättning interagerande beräkningsprocesser som arbetar parallellt (samtidigt). Termen omfattar alla frågor om parallellitet i programmering , såväl som skapandet av effektiva hårdvaruimplementationer . Teorin för parallell beräkning är en del av den tillämpade teorin om algoritmer [1] .

Det finns olika sätt att implementera parallell beräkning. Till exempel kan varje beräkningsprocess implementeras som en operativsystemprocess , eller så kan beräkningsprocesser vara en uppsättning exekveringstrådar inom en enda OS-process. Parallella program kan exekveras fysiskt antingen sekventiellt på en enda processor  - alternerande i sin tur exekveringsstegen för varje beräkningsprocess, eller parallellt - allokera en eller flera processorer (placerade i närheten eller distribuerade i ett datornätverk ) till varje beräkningsprocess.

Den största svårigheten med att utforma parallella program är att säkerställa den korrekta sekvensen av interaktioner mellan olika beräkningsprocesser, såväl som koordineringen av resurser som delas mellan processer.

Sätt att synkronisera parallell kommunikation

I vissa samtidiga programmeringssystem döljs överföringen av data mellan komponenter för programmeraren (till exempel genom att använda löftemekanismen ), medan det i andra måste anges uttryckligen. Explicita interaktioner kan delas in i två typer:

Meddelandebaserade parallella system är ofta lättare att förstå än system med delat minne och betraktas generellt som en överlägsen metod för parallell programmering. Det finns en mängd olika matematiska teorier för studier och analys av system för meddelandeförmedling, inklusive aktörsmodellen och olika typer av processkalkyler . Meddelanden kan effektivt implementeras på symmetriska multiprocessorer både med delat koherent minne och utan det.

Distribuerad minnesparallellism och meddelandeöverförande parallellism har olika prestandaegenskaper. Vanligtvis (men inte alltid) är overheaden för processminne och uppgiftsväxlingstiden lägre för system med meddelande som skickas, men meddelandet som skickas i sig är mer overhead än proceduranrop. Dessa skillnader åsidosätts ofta av andra faktorer som påverkar prestandan.

Naturligtvis är det i ett sådant system också möjligt att enbart använda meddelandeöverföringsmetoden, det vill säga att köra en separat process på varje processor i varje nod. I det här fallet kommer antalet processer (och trådar) att vara lika med antalet processorer på alla noder. Denna metod är enklare (i ett parallellt program behöver du bara öka antalet processer), men det är mindre effektivt, eftersom processorerna i samma nod kommer att utbyta meddelanden med varandra som om de var på olika maskiner [5] .

Typiska uppgifter som tillåter parallell beräkning

Samtidighetsprogramvaruverktyg

Se även

Anteckningar

  1. Mikhalevich, 1989 , sid. ett.
  2. RedBook, 1999 , sid. ett.
  3. RedBook, 1999 , sid. 2.
  4. RedBook, 1999 , sid. 5.
  5. RedBook, 1999 , sid. fyra.

Litteratur

Länkar