任意のアルゴリズムに並列性があり、それを最良の方法で使用する方法

現在、データ処理の並列化は、多くの異なるコンピューティングデバイスで部分的にデータを同時に処理し、その結果を組み合わせることにより、計算時間を短縮するために主に使用されています。並列実行により、1871年にレイリー卿によって策定された基本法則を「バイパス」することができます。これによれば、(プロセッサの熱放散に適用される)それらの熱放散電力はプロセッサクロック周波数の4乗に比例し(周波数を2倍にすると熱放散は16倍になります)、実際には並列コンピュータの数-クロック周波数を維持しながら)。無料で提供されるものはありません-アルゴリズムの並列処理の可能性を明らかにする(通常は初心者のオブザーバーには隠されている[1])タスクは表面にありません。そして、その(並列処理)使用の有効性-さらにそうです。

以下は、式axb + a / c(a、b、c-入力データ)を評価する最も単純なケースの並列処理検出プロセスの図です。

a)-「オペレータークラウド」(実行シーケンスは定義されていません)、b)-完全に順次実行、定義されていません)、b)-完全に順次実行、c)-並列実行

, . ( ) ( – ., ). .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.

この図は、完全な2次方程式を正規の形式で実数で解くためのアルゴリズムの層並列形式を示しています(LPFの層の番号は右側にあります)
- - ( )

( “ ”,  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).

  この図は、インストルメンタルコンプレックスの図を示しています(* .setおよび* .gv-それぞれ、分析されたプログラムのプログラムファイルおよび情報グラフのファイル* .mvr、* .med-アルゴリズムグラフの頂点および円弧のメトリックのファイル、* .cls、* .ops-それぞれ計算機とプログラム演算子のパラメータのファイル* .lua-再編成の方法を含むLua言語のテキストファイル
- (*.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”, , “” “”.

図では  は、SPF @ホームシステムが動作しているときのスクリーンコピーからの実際のIPFの層の幅の棒グラフを示しています(幅の算術平均は点線で示されています、a)および「ブルドーザー」法のシンボリックスキーム-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