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
障害が発生するはずなのに、そうですか?