データ従属性とは? わかりやすく解説

データ従属性

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/25 13:20 UTC 版)

並列計算」の記事における「データ従属性」の解説

データ従属性 (data dependency) を理解することが、並列アルゴリズム実装法を知る基礎一つとなる。計算計算の間に従属関係があるということは実行順序性生じということである。したがってプログラムは、従属性のある計算連鎖のうちで最長のものより高速実行することはできない(これをクリティカルパスと呼ぶ)。幸運なことに、多くアルゴリズムにはそのような従属関係長い連鎖存在せず計算のほとんどの部分並列実行できるPiPjというプログラム断片があるとする。Bernstein's conditionsは、2つ部分独立していて並列実行できる条件示している。Piへの入力変数集合Ii表しOi出力変数集合とする。Pjについても同様に表す。P iPj独立であるための条件以下の通りである。 I jO i = ∅ {\displaystyle I_{j}\cap O_{i}=\emptyset } I iO j = ∅ {\displaystyle I_{i}\cap O_{j}=\emptyset } O iO j = ∅ {\displaystyle O_{i}\cap O_{j}=\emptyset } 最初条件成り立たない場合フロー従属性 (flow dependency) が存在し最初の文の結果次の文で使う場合などに相当する第二条件は反従属性 (anti-dependency) を意味し最初の文が書き換える変数の元の値を次の文の式で必要としている場合などに相当する第三条件出力従属性 (output dependency) を表す。2つ変数が同じメモリ上の位置にある場合それぞれの更新は元のプログラム順序関係通り行われる(後から書き込んだ方が残る)必要がある。 例として以下の関数考える。 1: function Dep(a, b)2: c := a·b3: d := 2·c4: end function Dep(a,b) の3行目は、2行目の前に実行できないし、並行して実行することもできない。何故なら3行目は2行目の結果利用しているからである。これは上述第一条件反しており、フロー従属性があると言える。 1: function NoDep(a, b)2: c := a·b3: d := 2·b4: e := a+b5: end function こちらの例では、各命令には従属関係はないので、並列実行可能である。 Bernstein’s conditionsでは、異なプロセス間でメモリ共有されない仮定している。そのため、アクセス順序性確保する手段として、セマフォなどの同期機構が必要となる。

※この「データ従属性」の解説は、「並列計算」の解説の一部です。
「データ従属性」を含む「並列計算」の記事については、「並列計算」の概要を参照ください。

ウィキペディア小見出し辞書の「データ従属性」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「データ従属性」の関連用語

データ従属性のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



データ従属性のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの並列計算 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS