|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Vad är dynamisk partition i parallell programmering?

    I parallell programmering avser dynamisk partitionering en metod för att dela en arbetsbelastning mellan flera processorer eller trådar * under * genomförandet av ett program, i motsats till statisk partitionering där divisionen görs i förväg. Storleken och tilldelningen av partitioner fixas inte initialt utan justerar baserat på runtime -förhållanden och tillgängliga resurser.

    Här är en uppdelning av viktiga egenskaper:

    * Runtime Assignment: Uppgifter eller data tilldelas processorer när de blir tillgängliga eller när behovet uppstår. Detta står i kontrast till statisk partitionering där varje processor känner till sin tilldelade del från början.

    * Lastbalansering: Ett primärt mål med dynamisk partitionering är att uppnå bättre belastningsbalansering. Om vissa processorer avslutar sina ursprungliga uppgifter snabbare än andra, gör dynamisk uppdelning dem att hämta nytt arbete från en delad pool av uppgifter eller data, förhindra ledig tid och förbättra den totala prestandan.

    * anpassningsförmåga: Dynamisk partitionering anpassar sig väl till oförutsägbara arbetsbelastningar. Om vissa delar av beräkningen tar oväntat längre kan systemet automatiskt omfördela arbetsbelastningen för att lindra flaskhalsar.

    * overhead: Flexibiliteten i dynamisk partitionering kommer till kostnaden för omkostnader. Att hantera uppgiftspoolen, tilldela uppgifter och hantera synkronisering mellan processorer kräver ytterligare beräkning och kommunikation. Denna omkostnad måste noggrant hanteras för att säkerställa att fördelarna med lastbalansering uppväger kostnaden.

    * Implementering: Dynamisk partitionering implementeras ofta med tekniker som:

    * Arbetsstjälning: I tomgångsprocessorer "stjäl" uppgifter från upptagna processorer.

    * Uppgiftsköer: En central kö eller flera köer har uppgifter som väntar på att behandlas. Processorer hämtar uppgifter från dessa köer.

    * Självplanering: Uppgifter tilldelas processorer baserat på en enkel heuristik, ofta utan central samordning.

    Exempel:

    Föreställ dig att bearbeta en stor bild. Vid statisk partitionering kan du dela upp bilden i lika stora block och tilldela varje block till en annan processor. Men om en del av bilden är betydligt mer komplex att bearbeta än andra, kan vissa processorer avsluta mycket tidigare än andra, vilket leder till ledig tid. Dynamisk partitionering skulle göra det möjligt för de snabbare processorerna att ta på sig bearbetningsuppgifter från de långsammare processorsdelarna, vilket förbättrar den totala effektiviteten.

    När man ska använda dynamisk partitionering:

    Dynamisk partitionering är fördelaktig när:

    * Arbetsbelastningen är oförutsägbar eller ojämnt fördelad.

    * Storleken på uppgifterna varierar mycket.

    * Antalet processorer eller trådar är inte känt i förväg.

    * Lastbalansering är avgörande för prestanda.

    När man ska undvika dynamisk partitionering:

    * Kostnaden för att hantera det dynamiska uppdraget uppväger fördelarna med lastbalansering (t.ex. för mycket små uppgifter).

    * Arbetsbelastningen är mycket förutsägbar och jämnt fördelad, vilket gör statisk uppdelning tillräcklig.

    * Kostnaden för kommunikation mellan processorer är hög.

    I huvudsak erbjuder dynamisk partitionering större flexibilitet och anpassningsförmåga än statisk partitionering, men kräver noggrant övervägande av den involverade omkostnaden. Det bästa valet beror starkt på den specifika applikationen och dess egenskaper.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man gör en EXE i Anteckningar
    ·Lägga till en startsida till en webbläsare i C #
    ·Hur Pass ett Container Vector till en funktion
    ·Hur man använder Visual Studio för C + +
    ·Hur man gör en sträng att acceptera Spaces
    ·Hur man använder kryssrutor i MFC
    ·Hur automatiskt att öka en build-numret i Visual C
    ·Hur man åsidosätta en Accessor metod i Objective - C
    ·Hur man kompilerar C + + kod med GNU
    ·Hur Loop Fyll en 2 - dimensionell array i C + +
    Utvalda artiklarna
    ·Hur ta reda på om ett tal är premiärminister i Java …
    ·Visual C 2005 Tutorial
    ·Hur vill kolla webbläsare Skriv in JavaScript
    ·Hur man använder Boolean Script
    ·Hur du ändrar Status Bar SCR Into Status Java-skript
    ·Hur man skapar en Dynamic Link Library för Access
    ·Hur man gör en osynlig knapp i C #
    ·Hur man kompilerar C -kod som ett bibliotek
    ·Hur få antalet retweets i PHP
    ·C Tutorial : Datatyper
    Copyright © Dator Kunskap https://www.dator.xyz