问题标签 [pyfftw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1146 浏览

python - PyFFTW 比 SciPy FFT 慢?

我尝试了用户在 Stackoverflow 上提出的解决方案:henry-gomersall 以重复加速基于 FFT 的卷积,但得到了不同的结果。

PyFFTW 约为。比其他用户体验不同的 SciPy FFT 慢 7 倍。这段代码有什么问题?Python 2.7.9,PyFFTW 0.9.2。

0 投票
0 回答
688 浏览

python - 使用 Python FFTW 与 Numpy FFT 的 2D 卷积运行时

我一直在玩 Python 的 FFT 函数,以便在 2D 晶格上卷积 2D 内核。由于对 Numpy 代码的性能速度不满意,我尝试实现 PyFFTW3,并惊讶地发现运行时间增加了。是否有任何直接的方法可以通过 PyFFTW3 或其他包(即 Scipy.signal)进一步优化此计算?

下面比较了 Numpy 与 PyFFTW3 脚本。

0 投票
2 回答
4555 浏览

python - 我找不到python包fftw3

我正在尝试在 python 上使用 fftw3 来快速计算 ffts(使用我所有的内核!)问题是......我找不到 python 的 fftw3 包......我知道它存在是因为我需要使用的函数当且仅当它已安装时。

这是我使用的模块:https ://github.com/keflavich/image_tools/blob/master/fft_psd_tools/convolve_nd.py

正如预期的那样,如果我尝试导入它,这就是我得到的:

我试过这个:

而且我还尝试用谷歌搜索它的位置或安装说明,但一无所获!

我也知道 fftw 是一个 C 库,并且 pyfftw 作为该包的 python 包装器存在,但我使用的函数使用 fftw3。

我希望有人能指出这个模块的位置!

PS 我正在运行 Ubuntu 14.04,我正在使用 python 2.7。我也尝试在 python 3 中导入它,但它也不存在。

0 投票
1 回答
222 浏览

python - pyFFTW 是否允许保留输入数组

我想知道是否有可能强制pyFFTW(FFTW 周围的包装器)输入向量在前向 r2c 变换期间保留。

至少在原始 FFTW中,FFTW_PRESERVE_INPUT似乎是一个默认选项(在此处查看算法限制标志:http ://www.fftw.org/doc/Planner-Flags.html )

使用 pyFFTW 的FFTW.__call__()可以传递多个标志,但此处仅列出“FFTW_DESTROY_INPUT” : http ://hgomersall.github.io/pyFFTW/pyfftw/pyfftw.html#pyfftw.FFTW

可能这不仅仅是文档中的失误,因为在源代码中,在文件builders/builders.py中有一个有点可怕的声明(第 166 行):

overwrite_input:输入数组是否可以在转换过程中被覆盖。

此外,在函数_Xfftn定义中的文件builders/_utils.py中的代码中,仅存在 destory 标志: if overwrite_input: flags.append('FFTW_DESTROY_INPUT')

最终的问题是:知道 FFTW_PRESERVE_INPUT 不能与 pyFFTW 一起传递,我至少可以依靠在原始 FFTW 中这个标志 FFTW_PRESERVE_INPUT 是默认的事实吗?回想一下上面引用的评论:“是否可以覆盖输入数组” pyFFTW 包装器的作者是否知道更多内容并且默认的 FFTW_PRESERVE_INPUT 不起作用?

$ rpm -q fftw fftw-3.3.4-6.fc23.x86_64

>>> pyfftw.__version__ '0.10.1

0 投票
1 回答
653 浏览

python - pyFFTW 在导入时找不到 libfftw3l.so

在我的 Raspbian 系统中,我已经成功安装了 pyFFTW,但是在导入包时出现了问题。

实际上,我已经从源代码安装了 FFTW。


我已经深入研究了 __init__.py 并且有一个相对导入行:

中没有模块 pyfftw。文件夹,但我想这一行指示./pyfftw.cpython-34m.so文件,该文件可能包含 FFTW 的 C 代码。

如何告诉这个 pyfftw.cpython-34m.so 文件它应该在哪里寻找正确的路径?

0 投票
1 回答
68 浏览

python - 非立方网格上的 FFT 速度

为了求解微分方程,我需要反复进行 3d 函数的傅里叶变换/傅里叶逆变换。就像是:

f 的形状是高度非立方的。是否存在基于维度顺序的性能差异,例如 (512, 32, 128) vs (512, 128, 32) 等?

我正在寻找任何可用的加速。我已经尝试过玩弄智慧。我认为如果最大尺寸最后出现(例如 32、128、512)这样 fFS.shape = (32, 128, 257) 可能是最快的,但情况似乎并非如此。

0 投票
1 回答
1179 浏览

c++ - 如何使用 fftw Guru 界面

我曾经用于fftw_plan_dft多维傅里叶变换。

现在我想将 64 位整数传递给 fftw,看来我需要使用 fftw guru 接口。

但我不明白是什么howmany_rank意思howmany_dims。的手册fftw_plan_guru_dft说:

这两个函数分别为交错和拆分格式规划了一个复杂数据、多维 DFT。变换维度由(rank, dims)在维度(howmany_rank, howmany_dims)的多维向量(循环)上给出。dims 和 howmany_dims 应该分别指向长度为 rank 和 howmany_rank 的 fftw_iodim 数组。

我知道什么是“维度的多维向量(循环)(howmany_rank,howmany_dims)”是什么意思。你能给我一个例子或解释一下如何使用这个大师界面吗?

0 投票
1 回答
1216 浏览

python - 安装 pyfftw windows 失败

我在 Windows 上使用 python 2.7 Anaconda。当我尝试在 Windows 上安装 pyfttw 时:

我收到以下错误消息(来自 pip.log):

你有什么提示吗?

0 投票
0 回答
415 浏览

python - 使用 Arrayfire 和 Python 对多维数组进行一维 FFT

使用 pyfftw 库,可以轻松地在多维形状数组的单轴上执行一维 FFT,(M, 2**N)而无需显式循环第零索引,如下所示:

afft = pyfftw.interfaces.numpy_fft.fft(a, axis=1).

切换到 arrayfire 以便我的代码可以在 GPU 上运行,我正在使用以下内容来做同样的事情(使用import arrayfire as af):

虽然这是并行执行的,但它似乎不是最好的做事方式,也会让我的代码看起来很糟糕。

af.fft有没有办法以与函数类似的方式pyfftw或使用 numpy 切片的 arrayfire 版本来消除循环?

0 投票
0 回答
634 浏览

python - PyFFTW 只使用一个核心——为什么以及如何改变它?

我在使用 pyFFTW 时遇到了困难。我正在使用 macOS 10.12 并使用自制软件安装了 python3、numpy 和 fftw,然后使用 pip3 安装了 pyFFTW。

事实上,我可以使用 pyFFTW 和文档中的示例,但是:它始终只使用一个内核,从活动监视器可以看出。

我使用这两个示例进行测试:这个来自https://hgomersall.github.io/pyFFTW/sphinx/tutorial.html。我还将示例放大到长度为 2^14 的向量以查看效果,遗憾的是没有。

这个来自PyFFTW multithreading not working。请注意,我更正了示例以使用正确的修饰符“线程”。

我很感激任何提示,我可以如何有意义地调试我的安装并使多线程工作。