0

この引用はFFTWマニュアルからのものです:

[...] 3 番目に、並列化したいプランを作成する前に、以下を呼び出す必要があります。

void fftw_plan_with_nthreads(int nthreads);

nthreads 引数は、FFTW で使用するスレッドの数 (実際には最大数) を示します。[...]

OpenMP で、現在実行中のすべての OpenMP スレッド (omp_set_num_threads(nthreads) または OMP_NUM_THREADS環境変数によって設定) を使用するように FFTW を構成するには、次のようにします fftw_plan_with_nthreads(omp_get_num_threads()

最後のコマンドが間違っていると思います。である必要がありますfftw_plan_with_nthreads(omp_get_max_threads())omp_get_num_threads()現在のスレッド数を返します。しかし、それはおそらく1、1 つのスレッドで fftw_plan を作成しているためです。omp_get_num_threads()は の値を返さOMP_NUM_THREADSず、 の逆ではありませんomp_set_num_threads(nthreads)

私は正しいですか、それともFFTWまたはOpenMP APIのどちらかを誤解していますか?

4

0 に答える 0