c++ - FFTW OpenMP 并行化?
问题描述
我在使用 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 文档。
解决方案
-fopenmp
是(也是?)链接器标志。将它(或复制,以确保安全)CXXFLAGS
从LDFLAGS
. 我希望这会有所帮助。- 不太重要:
-I /usr/include
对链接器没有影响;将其移至CXXFLAGS
(或在不必要时删除)
推荐阅读
- android - 如何从适配器 kotlin 增加通知徽章的计数器
- angular - 将 bingsmaps 与 Angular 集成:未定义 Microsoft 错误
- c++ - Qt5 QListView 在水平行而不是垂直列表中设置项目
- html - 我可以改变 Flexbox 的收缩方式吗?
- php - 类表单控件不允许隐藏文本框隐藏在 html 中
- sapui5 - 根据条件操作表格行中的图标
- c++ - c++ 上的向量作为类的成员
- macos - 将数据从一个单元格中分离出来,没有分隔符到列
- flutter - TextFormField 在选择图像后忽略任何文本更改
- node.js - 环回nodejs服务器未启动