1

私はこの種のコードを持っています。私が興味を持っているのは、ループ間のデータ依存関係を見つけて、ループを並行して実行できるかどうかを推測できるようにすることです。これを手伝ってくれるツールはありますか?

void some_func()
{
 for( ... )
 {
  ...
 }
 for( ... )
 {
  ...
 }
 for( ... )
 {
  ...
 }
}
4

3 に答える 3

1

DMS Software Reengineering ToolkitとそのCフロントエンドによって計算されたデータフローの結果については、を参照してください。(私たちのC ++フロントはまだこれを完全には行いません)。

1つまたは2つのループに対してのみこれを実行したい場合は、おそらくこれらの依存関係を確認するための費用のかかる方法です。あなたは明らかにこれを手で行うことができます、そしてそうですそれは苦痛です。

于 2012-05-26T13:23:37.623 に答える
0

私はまだこれを試していませんがbp、役立つかもしれません。ドキュメントから:

並行して正しく実行されるソフトウェアを同時に開発するには、通常、これらを設計するときに多くの知識と注意が必要です。bpは、プログラムの一部を自動的に並列化しようとします。コンパイラーが実行する価値があると判断した場合は、シーケンシャルコードをマルチスレッドコードに置き換えます。

于 2012-05-26T10:28:48.913 に答える
0

Cプログラムのデータ依存関係をグラフィカル環境で表示するこの実験ツールParToolsを確認できます。これにより、Cプログラムの実行プロファイルとデータの依存関係をインタラクティブに分析して、手動の並列化プロセスで適切な並列化候補を見つけて選択することが容易になります。このフローは特定の並列化手法を想定していないため、幅広く適用できます。

于 2013-04-17T09:20:06.577 に答える