首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FFTW OpenMP并行化?

FFTW OpenMP并行化?
EN

Stack Overflow用户
提问于 2020-12-18 07:23:11
回答 1查看 112关注 0票数 2

我在使用FFTW创建并行的OMP DFT时遇到了一些问题。我使用--enable-openmp进行了编译,并具有以下代码示例:

代码语言:javascript
复制
#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中使用了以下标志:

代码语言:javascript
复制
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快速傅立叶变换的代码示例?我到底做错了什么?Reference FFTW doc

EN

回答 1

Stack Overflow用户

发布于 2020-12-21 00:18:45

  1. -fopenmp是(也是?)链接器标志。将其从CXXFLAGS移动(或复制,以安全起见)到LDFLAGS。我希望这会有所帮助。
  2. 不太重要:-I /usr/include对链接器没有影响;将其移至CXXFLAGS (或在不必要时删除)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65349754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档