此报价来自FFTW 手册:
[...] 第三,在创建要并行化的计划之前,您应该调用:
void fftw_plan_with_nthreads(int nthreads);
nthreads 参数表示您希望 FFTW 使用的线程数(或者实际上是最大数)。[...]
使用 OpenMP,要将 FFTW 配置为使用所有当前正在运行的 OpenMP 线程(由 omp_set_num_threads(nthreads) 或
OMP_NUM_THREADS
环境变量设置),您可以这样做 :)fftw_plan_with_nthreads(omp_get_num_threads()
。
我认为最后一个命令是错误的。应该是fftw_plan_with_nthreads(omp_get_max_threads())
。omp_get_num_threads()
将返回当前线程数。但这可能是1
因为有人在一个线程上创建 fftw_plan。omp_get_num_threads()
不会返回 的值OMP_NUM_THREADS
并且不是 的倒数omp_set_num_threads(nthreads)
。
我是对的还是我误解了 FFTW 或 OpenMP API?