Gibt es Parallelität in einem beliebigen Algorithmus und wie man ihn am besten nutzt?

Die Parallelisierung der Datenverarbeitung wird derzeit hauptsächlich verwendet, um die Rechenzeit zu reduzieren, indem Daten in Teilen auf vielen verschiedenen Computergeräten gleichzeitig verarbeitet und dann die Ergebnisse kombiniert werden. Die parallele Ausführung ermöglicht es, das von Lord Rayleigh im Jahr 1871 formulierte Grundgesetz zu „umgehen“, wonach (in Bezug auf die Wärmeableitung von Prozessoren) ihre Wärmeableitungsleistung proportional zur vierten Potenz der Prozessortaktfrequenz ist (eine Verdoppelung der Frequenz erhöht die Wärmeableitung um das 16-fache) und sie tatsächlich durch ein lineares von zu ersetzen die Anzahl der parallelen Computer - unter Beibehaltung der Taktfrequenz). Nichts ist umsonst gegeben - das Problem, das Potenzial der Parallelität in Algorithmen aufzudecken (normalerweise für den nicht eingeweihten Beobachter verborgen, [1]), liegt nicht auf der Oberfläche,und die Effizienz seiner (Parallelitäts-) Nutzung - umso mehr.

Nachfolgend finden Sie eine Darstellung des Parallelitätserkennungsprozesses für den einfachsten Fall der Auswertung des Ausdrucks axb + a / c (a, b, c - Eingabedaten).

a) - "Operator Cloud" (die Reihenfolge der Ausführung ist nicht definiert), b) - vollständig sequentielle Ausführung, nicht definiert), b) - vollständig sequentielle Ausführung, c) - parallele Ausführung

, . ( ) ( – ., ). .1 “ ”, ( ) .

(- ), .   , . () .   NP- [2], ( ) ( -). , “ ” (Data Science).

AlgoWiki [3].

,  , c ILP (Instruction-Level Parallelism,  ,   EPIC (Explicitly Parallel Instruction Computing, ).   , .

() ( , ). (). “ - ”, ( ) , – () ). ,   (- ).

( ) - (), [4]. ( ).

( ) O(N2) , N – ( ), ( )   . ( ). .. , .   , .

      , , .    

. ax2+bx+c=0.

Die Abbildung zeigt die tierparallele Form des Algorithmus zum Lösen der vollständigen quadratischen Gleichung in reellen Zahlen in kanonischer Form (die Zahlen der Ebenen des LPF befinden sich rechts).
- - ( )

( “ ”,  6 4- ). ( ) – 1- 4, 2,3,4  - 5- 6 . , ( ) ( ) ! – ( ).

( ) , - D-F SPF@home. http://vbakanov.ru/dataflow/content/installdf.exe http://vbakanov.ru/spf@home/content/installspf.exe ( - http://vbakanov.ru/dataflow/dataflow.htm http://vbakanov.ru/spf@home/spf@home.htm).

  Die Abbildung zeigt ein Diagramm des Instrumentenkomplexes (* .set und * .gv - die Programmdatei bzw. die Datei des Informationsgraphen des analysierten Programms, * .mvr, * .med - Dateien der Metriken der Eckpunkte und Bögen des Algorithmusgraphen, * .cls, * .ops - Dateien mit Parametern von Taschenrechnern bzw. Programmoperatoren * .lua - eine Textdatei in Lua-Sprache, die Methoden zur Reorganisation enthält
- (*.set *.gv  â€“   , *.mvr, *.med – , *.cls, *.ops – , *.lua – Lua,

  (set-)   – gv- ( “ - ”, ( ) , – () ). ,   (- ).

  () . “” .

Lua (Lua ANSI C, , - , ).

++,   GUI Win’32- (   ) GIT-. (  ).

(Lua- “” API- SPF@home).

( D-F SPF@home ).

D-F (Data-Flow) , . 1   “Data-Flow” ( ), (), ; . - ,   ,   , “” . D-F ,   .

D-F , , . ( set-  D-F, ):

, . D-F , - SPF@home. SPF@home gv- ( ), , Lua- ( API- , ):

CreateTiersByEdges("EdgesData.gv")  --     EdgesData.gv 
--    “”
-- CreateTiersByEdges_Bottom("EdgesData.gv")  --     EdgesData.gv 
--    “”
--
OpsOnTiers={} --   1D- OpsOnTiers 
for iTier=1,GetCountTiers() do --   
   OpsOnTiers[iTier]={} --  iTier-  2D- OpsOnTiers
   for nOp=1,GetCountOpsOnTier(iTier) do --       iTier  
      OpsOnTiers[iTier][nOp]=GetOpByNumbOnTier(nOp,iTier) --    nOp
end end --   for  iTier  for  nOp

gv- mvr med-, cls ops- . ( “-”, ) . , .

SPF@home “ ” , /    ( ). med-.

,   c ILP (Instruction-Level Parallelism,  ), SPF@home .

.. Lua-, . ( ) :

I.     “” ( ).

II.     ( ).

III.       .

( ) ;    (   ).

, (, ) , , ( – ).

:

1)  ( ) .

2)  .

- . ( , , , ). “” API- “” (   ,   ).

“” ( ) ( ). “” “” ( ; “” ””).

( ) - “ ”, , “” . ( ).   “” Windows- WinExec, ShellExecute CreateProcess, (, METIS -), Lua.

.6 ( ) “Bulldozer”, , “” “”.

In Abb.  zeigt Balkendiagramme der Breiten der Ebenen realer IPFs aus Bildschirmkopien, wenn das SPF @ home-System in Betrieb ist (das arithmetische Mittel der Breiten wird durch eine gepunktete Linie angezeigt, a) und ein symbolisches Diagramm der Aktion der Bulldozer-Methode - b).
.   SPF@home (-   , a) “Bulldozer” - )

, ( 1,5-2 ) , (- ).   

.. ( Lua) (., c , , .).

SPF@home ( ) . , .  ( ) ( , , ). , .

, ( ) .

 

1.  .., .. . — .: -, 2002. — 608 c.

2.  ., . . : — , ,  2012. — 420 c.

3.  AlgoWiki. . URL: http://algowiki-project.org ( 31.07.2020).

4.   ..  . . — .: -, 2018. — 390 .

5.  Roberto Ierusalimschy. Programming in Lua. Third Edition.  PUC-Rio, Brasil, Rio de Janeiro, 2013. — 348 p.




All Articles