Intel VTune Amplifierの優れた経験を持つ方にこのことについて教えていただければ幸いです。プロファイラ出力のスレッド同時処理オーバーヘッド時間の意味は何ですか?
最近私のプログラムに対してインテルVTuneアンプを使用した他の人からパフォーマンス分析レポートを受け取りました。それは、スレッドの同時性領域にの高いオーバーヘッド時間があると伝えます。
オーバーヘッド時間の意味は?彼らは知りません(私に尋ねました)、私はIntel VTune Amplifierにアクセスできない。
曖昧なアイデアがあります。 pthread condition
が不安定である(または、私はひどくなかった)ので、私は以下のようなループ表情で作品を行うには、多くのルーチンを変更するように、このプログラムは、ターゲットプラットフォームに多くのスレッドスリープ呼び出しがあります。
while (true)
{
mutex.lock();
if (event changed)
{
mutex.unlock();
// do something
break;
}
else
{
mutex.unlock();
usleep(3 * 1000);
}
}
これはオーバーヘッドとしてフラグを設定することができます時間?
アドバイスはありますか?
私は約オーバーヘッド時間インテルのサイトからヘルプドキュメントを見つけました。 http://software.intel.com/sites/products/documentation/hpc/amplifierxe/en-us/win/ug_docs/olh/common/overhead_time.html#overhead_time
抜粋:
オーバーヘッド時間は、共有リソースの解放で始まり、そのリソースの受信で終わる期間です。理想的には、リソースを獲得するためにスレッドが待機する時間が短縮されるため、オーバーヘッド時間の長さは非常に短いです。ただし、並列アプリケーションのすべてのCPU時間が実際の有料作業を行うのに費やされるとは限りません。並列実行時(インテル®スレッディング・ビルディング・ブロック、OpenMP *)が非効率的に使用されている場合、並列実行時間内でCPU時間を無駄にする時間が多大な時間を費やす可能性があります。たとえば、これは、再帰的な並列アルゴリズムでの作業分割の粒度が低いために発生する可能性があります。作業負荷のサイズが小さすぎると、作業を分割してハウスキーピング作業を実行するオーバーヘッドが大きくなります。
まだ混乱しています..「あなたは不要/頻繁なロックを行った」という意味ですか?
正確なデザインはわかりませんが、IMHOではこのオーバーヘッドのコンテキスト切り替え時間も追加することがあります。 –