PyFFTW 多线程不工作

PyFFTW multithreading not working

我正在 运行我的代码基于 FFTW3 库的 PyFFTW 包装器。在PyFFTW的plan函数调用中,有一个参数"thread"指定使用的线程数。我使用一个基本的判断器,Activity Monitor,来判断多线程是否工作。事实证明,即使我指定 thread=4,下面的代码 运行s 在一个 CPU 上也是如此。我的笔记本电脑是 Mac,有 8 个内核。这是我的代码。

import pyfftw
n_cpu = 4
flags = ('FFTW_MEASURE','FFTW_DESTROY_INPUT')
x_buffer = pyfftw.n_byte_align_empty((8192,8192,), 16, 'complex128')
f_buffer = pyfftw.n_byte_align_empty((8192,8192,), 16, 'complex128')
fftObj  = pyfftw.FFTW(x_buffer, f_buffer,  axes=(-2,-1), direction='FFTW_FORWARD',  flags=flags, thread=n_cpu)
fftObj()

当我 运行 fftObj() 时,计算机似乎 运行 在一个 CPU 上(CPU 使用率 99% 而预期应该是 400%)。我想要的是将 FFT 任务分布在 CPU 我的笔记本电脑上。

除了尝试 pyfftw 之外,我还尝试使用 OpenMP 在 C 中编写一些其他代码,并且我从 Activity 监视器中看到 CPU 使用率超过 100%。这意味着多个 CPU 上的 C 代码 运行 和我的机器确实具有多核功能。

我在打开 pyfftw 的多线程时是否遗漏了什么?还是我理解错了参数的意思?

有个.

参数是 threads 而不是 thread。多余和无效的论点可能应该被拾起。想在 github 上留下问题吗?