问题标签 [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 回答
665 浏览

python - 用 pyfftw 替换 numpy.fft 例程,没有按预期工作

我有一些使用 numpy.fft 包的工作 python 代码,这是一个片段:

我试图重写此代码以使用该pyfftw包。我想出的是以下代码,它应该可以工作:

问题是,此代码不会产生与使用numpy.fft包相同的结果。请参阅所附图像。

numpy fft 包 pyfftw 包

0 投票
1 回答
159 浏览

python - pyfftw 释放对数组的引用而不破坏计划

我有一大组大型数组需要一个接一个地反复进行傅里叶变换,而且它们不能同时全部放入内存中。典型的数组大小为 (350,250000),但变化很大。一般程序是

这需要很快,所以理想情况下我会事先为所有数组制定计划,并在循环中重用它们。这一点尤其重要,因为即使构建一个计划FFTW_ESTIMATE对于我来说在循环内执行它也太慢了(当构建它时比执行计划慢 10 倍以上pyfftw.FFTW(array, farray, flags=['FFTW_ESTIMATE,FFTW_DESTROY_INPUT'], threads=nthread, axes=[-1]))。但是,每个计划都包含对构造它时使用的数组的引用,这意味着将所有计划保存在内存中导致我也将所有数组保存在内存中,这是我负担不起的。

是否可以让 pyfftw 释放它对数组的引用?毕竟,无论如何,我打算将它们重新指向循环内完全兼容的新数组。如果没有,还有其他方法可以解决这个问题吗?我想我可以为单行或多行制定计划,但这很容易导致减速。

PS。我使用FFTW_ESTIMATE而不是FFTW_MEASURE尽管计划多次重用该计划FFTW_MEASURE,因为这些数组大小需要永远,并且当我指定时间限制时,性能并不比 for 好FFTW_ESTIMATE

编辑:实际上,构建计划的缓慢只发生在我第一次构建这种形状的计划时(我猜是因为智慧),所以不存储计划的方法毕竟有效。不过,如果可以在没有数组引用的情况下存储计划,那就太好了。

0 投票
1 回答
1710 浏览

python - ImportError:没有名为 pyfftw 的模块

我使用 Ubuntu 13.10 和 python 2.7。运行代码时出现此错误。我安装了 FFTW,但不确定为什么会出现此错误。这是我的代码:

这是我得到错误的地方。任何帮助都会很棒。谢谢

0 投票
2 回答
2712 浏览

python - pyFFTW 安装 -> 找不到 -lfftw3_threads

我正在尝试在我的 Opensuse 13.1 x86_64 上安装 pyFFTW 几天,并且一直遇到一些问题:由于缺少一些 fftw 库,我第一次无法安装 pyFFTW。我发现最好从源代码安装fftw,然后我就做了。

这解决了缺少库的问题,但是当我尝试从源代码构建 pyFFTW 或使用 pip 进行安装时,会出现不同的问题:

我发现一些人有类似的问题,但不是真正的解决方案。我在这个线程中找到了一个提示,但我不知道在安装过程中我可以在哪里更改编译器标志。此外,我在 fftw 配置过程的日志中发现:

有任何想法吗?

谢谢!

编辑:

我尝试使用 --enable-shared 并启用作为配置标志

然后我做了一些研究,发现 ./configure 可以有一个 --enable-float 标志,这将错误消息减少为:

由于后缀 l 似乎代表我发现的 long-double,我可以使用 --enable-long-double。但现在我被困在:

我当前的 ./configure 看起来是这样的:

任何人都知道,如何让这个图书馆到位?

0 投票
2 回答
2152 浏览

python-2.7 - 为 pyFFTW 安装链接 fftw 库时出错

我尝试将 pyFFTW 0.9.2 安装到 OSX 小牛,但遇到以下错误:

pyFFTW 安装 -> 找不到 -lfftw3_threads中所述,我尝试编译安装 fftw 3.3.4 3 次。但这对我不起作用。

我是怎么做的:

然后我在 pyFFTW 文件夹中运行 python (2.7) 安装文件,我得到了上面的错误。

我感谢您的帮助。

0 投票
2 回答
2299 浏览

python-3.x - 进行 FFT 的最快方法

我有以下使用各种接口进行 2D FFT 的非常基本的示例。

这会产生以下结果:

显然,pyfftw.FFTW界面是最快的,但不起作用(我不确定我做错了什么)。

这需要相当长的时间pyfftw.interfaces.scipy_fftpack.fft2pyfftw.interfaces.numpy_fft.fft2但我已确定该时间主要处于规划阶段,这只是第一次发生。在我的情况下,只有一个 FFT2 和一个 IFFT2 将被执行(每个进程),所以计划让我很生气。如果其中任何一个在不忘记智慧的情况下再次运行,它们也会在大约 0.33 秒内运行(但在我的情况下不会发生)。

所以,问题是:1.我做错了什么pyfftw.FFTW导致数据错误?- 或 - 2. 如何更改或的计划方案和pyfftw.interfaces.scipy_fftpack.fft2时限pyfftw.interfaces.numpy_fft.fft2

0 投票
1 回答
1379 浏览

pip - 如何在 python3x 上安装 pyfft?

我尝试pyfft使用安装python -m pip install pyfft,我得到了

我正在使用 Python 3.4.1

0 投票
1 回答
482 浏览

enthought - pyFFTW 安装到 Enthought Canopy

我正在尝试将 PyFFTW 安装到 Enthought Canopy 我在运行 Mavericks 的 Mac 上 初始命令和输出低于问题似乎是它发现 fftw3.h 和 gcc 失败后有人可以帮忙吗?谢谢

Canopy 64bit) iz9mbpro:User iz9$ pip install pyfftw 下载/解压 pyfftw 下载 pyFFTW-0.9.2.tar.gz (336kB): 336kB 下载 Running setup.py (path:/Users/iz9/Library/Enthought/Canopy_64bit/User /build/pyfftw/setup.py) pyfftw 包的 egg_info

致命错误:找不到“fftw3.h”文件#include“fftw3.h”^ 1 个警告和1 个错误生成。错误:命令 'gcc' 失败,退出状态 1 命令 /Users/iz9/Library/Enthought/Canopy_64bit/User/bin/python -c "import setuptools, tokenize; 的完整输出;file ='/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/setup.py';exec(compile(getattr(tokenize, 'open', open)( file ).read().replace(' \r\n', '\n'),文件, 'exec'))" install --record /var/folders/sc/wm52xk5528b2m95ztnh15clj5lkhmb/T/pip-29rHyR-record/install-record.txt --single- version-externally-managed --compile --install-headers /Users/iz9/Library/Enthought/Canopy_64bit/User/include/site/python2.7:运行安装

运行构建

运行 build_py

创建构建

创建 build/lib.macosx-10.6-x86_64-2.7

创建 build/lib.macosx-10.6-x86_64-2.7/pyfftw

复制 pyfftw/ init .py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw

复制 pyfftw/_version.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw

复制 pyfftw/np_fft.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw

创建 build/lib.macosx-10.6-x86_64-2.7/pyfftw/builders

复制 pyfftw/builders/ init .py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/builders

复制 pyfftw/builders/_utils.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/builders

复制 pyfftw/builders/builders.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/builders

创建 build/lib.macosx-10.6-x86_64-2.7/pyfftw/interfaces

复制 pyfftw/interfaces/ init .py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/interfaces

复制 pyfftw/interfaces/_utils.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/interfaces

复制 pyfftw/interfaces/cache.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/interfaces

复制 pyfftw/interfaces/numpy_fft.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/interfaces

复制 pyfftw/interfaces/scipy_fftpack.py -> build/lib.macosx-10.6-x86_64-2.7/pyfftw/interfaces

运行 build_ext

跳过'/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/pyfftw/pyfftw.c' Cython 扩展(最新)

构建“pyfftw.pyfftw”扩展

创建 build/temp.macosx-10.6-x86_64-2.7

创建 build/temp.macosx-10.6-x86_64-2.7/Users

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library/Enthought

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library/Enthought/Canopy_64bit

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library/Enthought/Canopy_64bit/User

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library/Enthought/Canopy_64bit/User/build

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw

创建 build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/pyfftw

gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -DNDEBUG -g -O3 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk - I/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/include -I/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/pyfftw -I/Applications/Canopy.app/appdata/ canopy-1.4.1.1975.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/numpy/core/include -I/Applications/Canopy.app/appdata/canopy-1.4.1.1975.macosx- x86_64/Canopy.app/Contents/include/python2.7 -I/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/include -I/Users/iz9/Library/Enthought/Canopy_64bit/User/build/ pyfftw/pyfftw -I/Applications/Canopy.app/appdata/canopy-1.4.1.1975.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/numpy/core/include -I/Applications/天篷。app/appdata/canopy-1.4.1.1975.macosx-x86_64/Canopy.app/Contents/include/python2.7 -c /Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/pyfftw/pyfftw.c - o build/temp.macosx-10.6-x86_64-2.7/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/pyfftw/pyfftw.o

在 /Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/pyfftw/pyfftw.c:256 包含的文件中:

在 /Applications/Canopy.app/appdata/canopy-1.4.1.1975.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h 包含的文件中:4:

在 /Applications/Canopy.app/appdata/canopy-1.4.1.1975.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h 包含的文件中:17:

在 /Applications/Canopy.app/appdata/canopy-1.4.1.1975.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h 中包含的文件中:1760:

/Applications/Canopy.app/appdata/canopy-1.4.1.1975.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2 :警告:“使用已弃用的 NumPy API,通过”“#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION”禁用它 [-W#warnings]

警告“使用已弃用的 NumPy API,通过“禁用它”\

^

/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/pyfftw/pyfftw.c:260:10:致命错误:找不到“fftw3.h”文件

包括“fftw3.h”

生成 1 个警告和 1 个错误。

错误:命令“gcc”失败,退出状态为 1


清理... 命令 /Users/iz9/Library/Enthought/Canopy_64bit/User/bin/python -c "import setuptools, tokenize; file ='/Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw/ setup.py';exec(compile(getattr(tokenize, 'open', open)( file ).read().replace('\r\n', '\n'), file , 'exec'))"安装 --record /var/folders/sc/wm52xk5528b2m95ztnh15clj5lkhmb/T/pip-29rHyR-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/iz9/Library/ Enthought/Canopy_64bit/User/include/site/python2.7 在 /Users/iz9/Library/Enthought/Canopy_64bit/User/build/pyfftw 中失败,错误代码 1 在 /Users/iz9/.pip/pip 中存储失败的调试日志。日志

0 投票
1 回答
4126 浏览

numpy - 正确使用 pyfftw 加速 numpy

我正在尝试从 Matlab 飞跃到 numpy,但我迫切需要我的 fft 的速度。现在我知道 pyfftw,但我不知道我是否正确使用它。我的方法是这样的

我很欣赏通过 pyfftw 调用 scipy 和 numpy fft 的构建器函数和标准接口。不过,这些都表现得非常缓慢。通过首先创建 fft_object 的实例,然后在全局范围内使用它,我能够获得与 numpy 的 fft 调用一样快或略快的速度。

话虽如此,我的工作假设是智慧被隐含地储存起来。真的吗?我需要明确说明吗?如果是这样,最好的方法是什么?

另外,我认为 timeit 是完全不透明的。我是否正确使用它?它是否存储了我所说的重复的智慧?提前感谢您提供的任何帮助。

0 投票
1 回答
1408 浏览

python - PyFFTW多线程不起作用

我正在运行基于 FFTW3 库的 PyFFTW 包装器的代码。在 PyFFTW 的计划函数调用中,有一个参数“thread”来指定要使用的线程数。我使用一个基本判断,活动监视器来判断多线程是否有效。事实证明,即使我指定 thread=4,以下代码也可以在一个 CPU 上运行。我的笔记本电脑是 8 核的 Mac。这是我的代码。

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

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

打开 pyfftw 的多线程有什么我错过的吗?还是我误解了参数的含义?

有一个相关的问题