1

FFTW (FFT ライブラリ) のスレッド化されたバージョンを使用して、デュアル CPU マシンで一部のコードを高速化しようとしています。これは、スレッドが 1 つだけの時間の出力です。

131.838u 1.979s 2:13.91 99.9%

ここに2つのスレッドがあります:

166.261u 30.392s 1:52.67 174.5%

ユーザー時間と CPU 負荷のパーセンテージは、かなり効果的にスレッド化されていることを示しているようですが、ウォールクロック時間 (これは私が本当に気にかけていることです) は、スレッドを処理するのに約 28 秒余分にかかっていることを示しています (私はそう思います)。 . それは状況を説明する正確な方法ですか?もしそうなら、それはかなり正常ですか、それとも何かが間違って設定されている可能性がありますか? 光をありがとう。

4

1 に答える 1

4

私は FFTW をかなり使用してきましたが、3 つ以上のプロセッサを使用する場合を除き、ほとんどの場合、シングル スレッド バージョンを使用する方がクリーンなソリューションであることがわかりました。スレッド間の通信が少ないため、高速です。少なくとも、それが私の経験です。

チェックアウトするいくつかのこと:

  1. 知恵を適切に構成し、それを使用していますか? ウィズダムが作成されると、トランスフォームの実行速度が大幅に向上します。使用していない場合は、使用する必要があります。
  2. ライブラリを 1 つのスレッドから呼び出していますか、それとも 2 つのスレッドから呼び出していますか? それは常に私の問題でした。ライブラリへの複数のスレッド呼び出しをロックするのが面倒でした。
  3. あなたのトランスフォームの大きさは?最初は小さなもので試してみて、どうなるか見てからスケールアップしますか?
于 2009-07-06T23:20:58.150 に答える