1

GCC を使用して Linux マシンで FFTW (3.3) をコンパイルしようとしています。私はマルチスレッドを使用していませんでしたが、すべてうまくいきました。ここで、OpenMP とマルチスレッドの使用に切り替えたいと考えています。したがって、次の手順に従って、スレッドで使用するために FFTW3 を再コンパイルします。

http://www.fftw.org/doc/Installation-on-Unix.html#Installation-on-Unix

sudo ./configure CFLAGS=-enable-threads
sudo make
sudo make install

次に fftw3_threads.h ライブラリを検索すると、何も見つかりません。

find / -name fftw3_*
.... nothing

これは、コンパイルしてopenmpを有効にしようとしても同じです

sudo ./configure CFLAGS=-enable-openmp
sudo make
sudo make install

コンパイラは失敗しません。すべてが機能しているようです。ただし、いずれかのライブラリをインクルードしようとすると、コードがコンパイルされません。

#include <fftw3_threads.h>
#include <fftw3_omp.h>

「そのようなファイルまたはディレクトリがないというエラー」が表示されます

それで、いくつかの質問:

1.) CFLAGS を一覧表示するときに「-」記号が 1 つしか必要ないのはなぜですか? FFTW マニュアルに「--」で始まるすべてのフラグがリストされているのはなぜですか。(これはFFTW関連の質問ではないかもしれません)。

2.) 私は何を間違っていますか?

3.) マニュアルを見ると、「デフォルトでは、スレッド ルーチンはコンパイルされていません。」コードから「インクルード」を除外すると、コンパイルされ、これらのメソッドはエラーを生成しません。

int dummy = fftw_init_threads();
fftw_plan_with_nthreads(omp_get_max_threads()); // setup for multithreading

障害が発生するはずなのに、そうですか?

4

1 に答える 1

3

enable-openmp と enable-threads は CFLAGS ではありません。代わりにこれを試してください:

sudo ./configure --enable-openmp
sudo make
sudo make install
于 2013-03-12T12:05:47.023 に答える