2

並列環境で動作するようにシリアルコードを書き直そうとしています。また、並列化できるプロセスを明確にできるように、すべてのプロセスの詳細を示す図を作成しようとしています。そのような図の慣例があるのか​​、そして人々がそれらについて私にアドバイスを与えることができるのかどうか疑問に思いました。私は、これらのプロセスがより大きなプロセスをどのように構成するか(つまり、関数がどのように構成されるか)をどのように示すことができるかについて、特に混乱しています。また、ループ、特に独立したループと直列に実行する必要のあるループの違いをどのように表示できるかについても少しわかりません。

4

2 に答える 2

1

主に知っておく必要があるのは、データの依存関係です。コードの2つのブロック間にデータの依存関係はありません->それらは並列化できます。

粒度の問題があります。配列をデータフロー項目と考えると、ほとんどの場合、同じ配列を参照する2つのコード間に依存関係があります。ループが配列をどのように横切るかによって決定される範囲で配列を分割することによって、これを解決します。これは特にループに当てはまります。

これらの依存関係がどのように表示されるかは別の問題です。簡単に言うと、「コードブロックAはデータ項目Pを読み取り/書き込みし、QはコードブロックBと競合してPを書き込み、Qを読み取ります」と言うことができます。または、データフローを示すグラフを描くこともできます。(コードのサブグラフ上でデータフローを分離できる場合は、並列化できます)。

于 2013-02-11T23:41:09.653 に答える
-1

既存のコードの動作を調べる代わりに、並列処理をサポートするアーキテクチャにコードを再配置する必要があります。データフローアーキテクチャを見てみましょう。

于 2013-02-17T12:04:47.663 に答える