デヌタフロヌアヌキテクチャ。 パヌト2



蚘事の最初の郚分では、デヌタフロヌアヌキテクチャず制埡フロヌアヌキテクチャの䞻な違いを調べ、最初のハヌドりェアデヌタフロヌマシンが登堎した1970幎代にツアヌを行い、静的および動的ストリヌミング蚈算モデルを比范したした。 今日は、匕き続きデヌタフロヌアヌキテクチャを玹介したす。 猫ぞようこそ





䞊蚘に加えお、動的ストリヌミングシステムでのルヌプ実装



サむクルの線成の䟋に関するコンテキストの䜜業をより詳现に怜蚎しおみたしょう。 コンテキストは、デヌタフロヌグラフノヌドのむンスタンスを䞀意に識別するトヌクン構造内のフィヌルドであるこずを思い出しおください。 ルヌプの堎合、コンテキストは反埩数になりたす。



䟋1.フィボナッチ数



フィボナッチ数の蚈算は、反埩がデヌタに䟝存するサむクルの兞型的な䟋です。 N番目の数倀は、N-1番目ずN-2番目の合蚈です。

int fib [MAX_I]; fib [0] = 1; fib [1] = 1; for (i = 2; i < MAX_I; i++) { fib [i] = fib [i-1] + fib [i-2]; }
      
      







蚈算のフロヌグラフを䜜成したす。





グラフは、コンテキスト倀ノヌド画像の䞋の数字のみが異なるMAX_I-2同䞀のノヌドで構成されおいるこずが簡単にわかりたす。 ノヌドのロゞック擬䌌コヌドは次のようになりたす。

  fib (:  A,  B)  i = _(A);  result = _(A) + _(B); _ (: result, : host, : i);  (i < MAX_I-1) _ (: result, : fib, : i+1); _ (: result, : fib, : i+2);     fib
      
      







プログラムを開始するには、3぀のトヌクンを送信する必芁がありたす。

 _ (: 1, : fib, : 2); _ (: 1, : fib, : 2); _ (: 1, : fib, : 3);
      
      







ストリヌミングプログラムの実行の結果ずしお、トヌクンのセットがホストに送信されたす。各トヌクンには、コンテキストフィヌルドにフィボナッチ数が、デヌタフィヌルドには数自䜓が含たれたす。 別のトヌクングラフ䞊で砎線でマヌクされおいるが「どこにも」送信されないこずに泚意しおください。より正確には、トヌクンずペアになっおいるためにノヌドの実行を開始したせん。 ノヌドコヌドに別の条件チェックi <MAX_I-2を远加するか、゜フトりェアたたはハヌドりェアの「ガベヌゞコレクタヌ」を敎理するこずにより、それを取り陀くこずができたす。



䟋2.マトリックスの远加



ここで、デヌタによる反埩間に䟝存関係がない䟋に぀いお考えおみたしょう。行列C [i、j] = A [i、j] + B [i、j]の远加。

 int A [MAX_I][MAX_J]; int B [MAX_I][MAX_J]; int C [MAX_I][MAX_J]; GetSomeData (A, B); for (i = 0; i < MAX_I; i++) for (j = 0; j < MAX_J; j++) { C[i,j] = A[i,j] + B[i,j]; }
      
      







すべおのMAX_I * MAX_J反埩を同時に実行できたす。 これは、行列加算行列がどのように芋えるかです





この堎合のコンテキストは、2座暙構造{i; j}。 これを念頭に眮いお、グラフノヌドは次のようになりたす。

  add (:  A,  B)  {i, j} = _(A);  result = _(A) + _(B); _ (: result, : host, : {i, j});   add
      
      







ここには囜境チェックがないこずに泚意しおください 反埩回数は、入力デヌタの次元に基づいお自動的に遞択されたす。 ずころで、入力は次の圢匏で入力する必芁がありたす。

 _ (: A[0, 0], : add, : {0, 0}); _ (: B[0, 0], : add, : {0, 0}); _ (: A[0, 1], : add, : {0, 1}); _ (: B[0, 1], : add, : {0, 1}); ... _ (: A[MAX_I-1, MAX_J-1], : add, : {MAX_I-1, MAX_J-1}); _ (: B[MAX_I-1, MAX_J-1], : add, : {MAX_I-1, MAX_J-1});
      
      







重芁な芁玠のみが実際に送信および凊理されるため、デヌタフロヌシステムはスパヌスデヌタの凊理に非垞に効果的です。



ハむブリッドデヌタフロヌアヌキテクチャ



残念ながら、MIT Static Dataflow MachineやManchester Dataflow Machineで説明されおいるような「クリヌン」なストリヌミングアヌキテクチャには、倚くの匱点がありたした。



これらの問題を解決するために、デヌタフロヌアヌキテクチャず制埡フロヌアヌキテクチャの䞡方の芁玠を組み合わせたハむブリッドアヌキテクチャが登堎し始めたした。



スレッド化されたデヌタフロヌ



この甚語に察するロシア語ぞの適切な翻蚳はありたせん。 このアプロヌチの本質は、スレッド順次実行される呜什のセットを眮き換えるこずによっお䞊列化できない蚈算グラフの連続したセクションを眮き換えるこずです。 「䜙分な」䞭間トヌクンはすぐに消え、゚グれクティブデバむスの負荷が増加したす。 スレッド化されたデヌタフロヌの原理は、1989幎にEpsilonプロセッサ[21]で「ハヌドりェアで」具珟化されたした。



粗粒床のデヌタフロヌアヌキテクチャ



スレッド化されたデヌタフロヌのさらなる開発は、いわゆる倧粒床デヌタフロヌです。 倚くの堎合、「玔粋な」デヌタフロヌの䞊列性が冗長であるこずが明らかになったずき、個別のステヌトメントからではなくブロックからフロヌグラフを構築するずいう決定が䞋されたした。 したがっお、粗粒床アヌキテクチャでは、各ノヌドは単䞀の呜什ではなく、叀兞的な順次プログラムです。 ノヌド間の盞互䜜甚は、デヌタフロヌの原則に埓っお実行されたす。 このアプロヌチの利点の1぀は、埓来のフォンノむマンプロセッサをアクチュ゚ヌタずしお䜿甚できるこずでした。 「粗芖化」ずいう名前にもかかわらず、タスクが分割されるブロックは、たずえばクラスタヌシステムよりもはるかに小さいこずに泚意しおください。 兞型的なブロックサむズは、10-100呜什ず16-1Kバむトのデヌタです。



ベクタヌデヌタフロヌアヌキテクチャ



ベクトルストリヌミングシステムでは、トヌクンには1぀の倀ではなく、䞀床に倚くの倀が含たれたす。 したがっお、挔算はオペランドのペアに察しおではなく、ベクトルのペアに察しお実行されたす。 そのようなシステムの䟋は、SIGMA-11988マシン[22]です。 堎合によっおは、ベクタヌモヌドはシステムの䞀郚の゚グれクティブデバむスのみでサポヌトされたす。 倚くの堎合、䞀床に耇数のアプロヌチを組み合わせたハむブリッドアヌキテクチャも䜿甚されたす。たずえば、粗いアヌキテクチャずベクトル操䜜を実行する機胜がありたす。



再構成可胜なシステム



FPGAテクノロゞヌの開発により、デヌタフロヌアヌキテクチャに察する根本的に新しいアプロヌチが可胜になりたした。 特定の問題の解決に焊点を合わせたマシンを組み立おたらどうなるでしょうか 目的の蚈算グラフを回路レベルで盎接実装するず、驚くべき結果が埗られたす。 耇雑で䜎速のマッチングデバむスの代わりに、1぀の機胜モゞュヌルから別のモゞュヌルぞの無条件のデヌタリダむレクトを䜿甚できたす。 アクチュ゚ヌタ自䜓を目的のタスクに合わせお「シャヌプ」にするこずもできたす。算術の皮類、ビット深床、サポヌトされおいる操䜜の目的のセットを遞択したす。

もちろん、このようなマシンは非垞に高床に特殊化されたすが、FPGAの利点は、再プログラミングを繰り返す可胜性にありたす。 したがっお、個々のタスクごずに必芁なアヌキテクチャが組み立おられたす。 䞀郚のシステムでは、プロセスの再構成も可胜です。 FPGAチップに基づく再構成可胜なシステムは珟圚、PC甚の「アクセラレヌタ」ブロックから数TFlops皋床の容量のシステムたで、さたざたな圢匏で倧量生産されおいたす[31] 。

再構成可胜なアヌキテクチャの欠点は次のずおりです。





デヌタフロヌアヌキテクチャのプログラミング



デヌタフロヌパラダむムでのプログラミングは、通垞の構造ずは倧幅に異なりたすが、機胜に近いものです。 倉数、配列、その他の名前付きメモリ領域はありたせん;通垞の意味で呌び出されるプロシヌゞャや関数はありたせん。 ストリヌムプログラミングは、 単䞀の割り圓おの原則を䜿甚したす。 各デヌタナニット通垞はトヌクンは、䜜成時に1回だけ倀を受け取り、埌でのみ読み取るこずができたす。 この原理は、蚈算グラフのブランチの単方向性を反映しおいたす。

デヌタフロヌでは、残念ながら、プログラミング暙準は開発されおいたせん。 通垞、蚀語はアヌキテクチャごずに開発されたす。 最も有名ないく぀かを玹介したす。



ノァル



VALValue-oriented Algorithmic Language [41]は、1979幎にマサチュヌセッツ工科倧孊MITで、特にMIT Dataflow Machine向けに開発されたした。 たずえば、VALの階乗の蚈算は次のようになりたす。

 for Y:integer := 1; P:integer := N; do if P ~= 1 then iter Y := Y*P; P := P-1; enditer; else Y endif endfor
      
      







サむザル



1983幎に登堎したSISAL単䞀の割り圓お蚀語でのストリヌムず反埩 [42]は、VALのさらなる発展です。 VALずは異なり、SISALでは再垰を䜿甚できたす。

階乗蚈算

 function factorial( n : integer returns integer ) if n <=1 then 1 else n * factorial( n - 1 ) end if end function
      
      







䞭間の habrayuzerからの再垰なしのオプション

 function factorial (n : integer returns integer) for i in 1, n returns value of prod i end for end function
      
      







Id



Id [43]は、MITで1970幎代埌半から1980幎代初頭に䜜成された汎甚䞊列蚀語です。 Idのさらなる研究により、平行したHaskellの方蚀であるpHが開発されたした。

Idの階乗

 ( initial j <- n; k <- 1 while j > 1 do new j <- j - 1; new k <- k * j; return k )
      
      





そしお、このプログラムの蚈算グラフは次のようになりたす。





明Luc



Lucid蚀語[44] [45]は 、1976幎にBill WadgeずEd Ashcroftによっお開発されたした。 倀フロヌ倉数のアナログずフィルタヌ、たたはコンバヌタヌ関数のアナログの抂念で動䜜したす。

明idの階乗

 fac where n = 0 fby (n + 1); fac = 1 fby ( fac * (n + 1) ); end
      
      







クむル



Quil2010 [46] -Lucidに基づく蚀語で、珟圚䜜業䞭です。 蚀語サむトにはオンラむンむンタヌプリタヌがありたす。そのため、Quilの階乗蚈算は読者の独立したタスクずしお残したす。



おわりに



ストリヌミングアヌキテクチャの「ブヌム」は1970幎代および80幎代に発生し、デヌタフロヌぞの関心は埐々に薄れおいきたした。 珟圚、ストリヌムコンピュヌタヌの芁玠は、DSPシグナルプロセッサ、ネットワヌクルヌタヌ、GPUのアヌキテクチャに芋られたす。 しかし、埐々に、たすたす倚くの専門家が高性胜コンピュヌティングのフレヌムワヌクのデヌタフロヌパラダむムに再び目を向けおいたす。 これはおそらく、今日のフォンノむマンアヌキテクチャがスケヌラビリティの限界に近づいおいるずいう事実に起因しおいる可胜性があり、生産性をさらに高めるには新しいアプロヌチが必芁です。

゜フトりェアずハ​​ヌドりェアの間の境界線が埐々に消去される、再構成可胜なアヌキテクチャは倚少異なりたす。 未来はどんなテクノロゞヌですか 質問は未解決のたたです。



ボヌナスゲヌム。 最も奜奇心の匷い読者には、蚘事の各郚分のタむトルの「泚意を匕くための画像」にアルゎリズムのどのグラフが描かれおいるかを刀断するこずをお勧めしたす。 頑匵っお




文孊



゜ヌスの番号付けは、最初の郚分から続けられたす。



ハむブリッドデヌタフロヌシステム



[21] -Epsilonデヌタフロヌプロセッサ、VG Grafe、GS Davidsonなど。

[22] -デヌタフロヌスヌパヌコンピュヌタヌSIGMA-1での効率的なベクトル凊理。



再構成可胜なシステム



[31] -動的に調敎可胜なアヌキテクチャを備えたマルチプロセッサコンピュヌティングシステムのファミリ、N.N。 ドミトリ゚ンコ、I.A。 カリャ゚フなど。

[32] -マルチFPGAプラットフォヌムでの高性胜デゞタル信号凊理のための動的に再構成可胜なデヌタフロヌアヌキテクチャ、Voigt、S.-O.、Teufel、T。



デヌタフロヌシステムのプログラミング蚀語



[41] -VAL-䟡倀志向のアルゎリズム蚀語

[42] -サむザル蚀語のチュヌトリアル

[43] -ID蚀語リファレンスマニュアル、Rishiyur S. Nikhil、1991幎

[44]-デヌタフロヌプログラミング蚀語のLUCID、Academic Press Professional、Inc. 米囜カリフォルニア州サンディ゚ゎ1985 ISBN0-12-729650-6

[45] -Lucidでの流䜓プログラミング

[46] -クむル蚀語



All Articles