簡體   English   中英

FFTW OpenMP 並行化?

[英]FFTW OpenMP Parallelization?

我在使用 FFTW 創建並行 OMP DFT 時遇到了一些麻煩。 我使用 --enable-openmp 編譯並具有以下代碼示例:

#include <fftw3.h>

int NUMBER_OF_THREADS = 40;
fftw_init_threads();
fftw_plan_with_nthreads(NUMBER_OF_THREADS);

std::vector<std::complex<double>> buf(num_trials);
fftw_plan p = fftw_plan_dft_1d(num_trials, reinterpret_cast<fftw_complex*>(buf.data()), reinterpret_cast<fftw_complex*>(buf.data()), -1, FFTW_MEASURE);

// plan is called here sequentially some number of times
for (dummy in dummy) {
   fftw_execute(p);
}

fftw_destroy_plan(p);

不幸的是,代碼似乎沒有並行化。 我在 Makefile 中使用了以下標志:

CXXFLAGS = -fopenmp -O3 -std=c++17 -funroll-loops -march=native -Wno-unused -Wall -I. -g
LDFLAGS = -I /usr/local/include -L /usr/local/lib -lfftw3_omp -lfftw3 -lm

是否有詳細說明如何使用 OpenMP FFTW 的可用代碼示例? 我在這里做錯了什么? 參考 FFTW 文檔

  1. -fopenmp是(也是?)一個 linker 標志。 將其從CXXFLAGS移動(或復制,以確保安全)到LDFLAGS 我希望這會有所幫助。
  2. 不太重要: -I /usr/include對 linker 沒有影響; 將其移至CXXFLAGS (或在不需要時刪除)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM