2017-01-16 7 views
0

マルチコアARMプロセッサ用のマルチスレッドプログラミングを実行しようとしています。私はプロファイリングのためにvalgrindを使用します。 main関数の関数呼び出しのコールグラフから見ることができます。関数間のデータ依存関係をどのように解釈するのですか?私の関数のうち2つはメイン関数から分岐しており、それらの間にデータ依存関係がなく、並列に実行できることを意味すると仮定していましたが、そうではありません。誰かが例やどこでそれについて知っておくべきだろうか?vagrindを使用したコールグラフによる関数間のデータ依存性の分析

答えて

0

Callgrind(およびその視覚化ツールkcachegrind)は、ではありません。は、プログラムのどの部分を並行して実行できるかを示します。 Callgrindはプロファイラです。プログラムのどの部分がCPUを消費しているのか、キャッシュミスが多いのかを示します。 kcachegrindは、この消費量を表示するコールグラフを視覚化します。 メインと他の機能の間に矢印が表示されている場合は、 メインがこれらの関数を呼び出したことを意味します。

私は、プログラムを解析し、実行可能なものを決定するツールを知らない。 を並列に実行する。

しかし、Valgrindにはマルチスレッド プログラムの競合状態を検出できる2つのツールがあります。アルゴリズムを並列化すると、これらのツールはバグ(共有変数への保護されていないアクセスなど)を検出する可能性があります。

関連する問題