私はFFTW 3.1.2をFortranで使用して、実際から複雑な複雑なFFTを実行します。それは1つのスレッドで完全に動作します。共有メモリコンピュータ上のマルチスレッドFFTW 3.1.2
残念ながら私はマルチスレッドFFTW を32 CPU共有メモリコンピュータで使用するといくつかの問題があります。私は2つの計画を持っています: 複雑な9つのFFTと1つの複雑な9つの複雑なFFT(各実フィールドのサイズ :512 * 512)。私は、Fortran使用して、私は私の のコードは次のライブラリにリンク(ifort
を使用して)コンパイル:
-lfftw3f_threads -lfftw3f -lm -lguide -lpthread -mp
プログラムが正しくコンパイルするようだと、通常、非ゼロの整数値を返しますsfftw_init_threads
機能、65527.
しかし、プログラムが完璧に動作しても、2 以上のスレッドでは1よりも遅くなります。 top
コマンドは、奇妙なCPU負荷 が100%より大きい(そしてn_threads * 100よりはるかに大きい)ことを示しています。 htop
コマンドは、 の100%の負荷で1つのプロセッサ(数字1とします)が動作していることを示していますが、 の数値を含む他のすべてのプロセッサは、0%の負荷、0%メモリおよび0時間。
ここで何が起こっているのか誰かが考えているなら...ありがとう!