問題タブ [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.
python - PyFFTWはSciPy FFTよりも遅いですか?
ここでユーザーが Stackoverflow で提示したソリューションを試してみました: henry-gomersall を使用して FFT ベースの畳み込みの高速化を繰り返しましたが、異なる結果が得られました。
PyFFTW は約です。他のユーザーの経験とは異なり、SciPy FFT よりも 7 倍遅くなります。このコードのどこが間違っていますか? Python 2.7.9、PyFFTW 0.9.2。
python - Python パッケージ fftw3 が見つかりません
Pythonでfftw3を使用してfftを非常に高速に計算しようとしています(すべてのコアを使用して!)問題は... Pythonのfftw3パッケージが見つかりません...必要な関数が使用するため、それが存在することを知っていますインストールされている場合のみ。
これは私が使用するモジュールです: https://github.com/keflavich/image_tools/blob/master/fft_psd_tools/convolve_nd.py
予想通り、これをインポートしようとすると、次のようになります。
そして、私はこれを試しました:
また、その場所やインストール手順をグーグルで検索してみましたが、何も見つかりませんでした!
また、fftw は C ライブラリであり、そのパッケージの python ラッパーとして pyfftw が存在することも認識していますが、使用する関数は fftw3 を利用しています。
誰かがこのモジュールの場所を教えてくれることを願っています!
PS Ubuntu 14.04 を実行しており、python 2.7 を使用しています。Python 3でもインポートしようとしましたが、そこにもありません。
python - pyFFTW は入力配列を保持できますか
フォワードr2c変換中に保持される入力ベクトルをpyFFTW(FFTWのラッパー)に強制する可能性があるかどうかを知りたいです。
少なくとも元の 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 がデフォルトであるという事実に少なくとも依存できますか? 上記のコメントを思い出してください。
$ rpm -q fftw
fftw-3.3.4-6.fc23.x86_64
>>> pyfftw.__version__
'0.10.1
python - インポート中にpyFFTWがlibfftw3l.soを見つけられない
Raspbian システムに pyFFTW を正常にインストールしましたが、パッケージのインポート中に問題が発生しました。
実際、ソースからFFTWをインストールしています。
私は __init__.py を掘り下げましたが、相対インポート行があります:
にはモジュール pyfftw がありません。フォルダーですが、この行は./pyfftw.cpython-34m.soファイルを示していると思います。これはおそらく FFTW の C コードをラップしています。
この pyfftw.cpython-34m.so ファイルに正しいパスを探す場所を伝えるにはどうすればよいですか?
python - 非立方体メッシュでの FFT 速度
微分方程式を解くために、3D 関数のフーリエ変換/逆フーリエ変換を繰り返し実行する必要があります。何かのようなもの:
f の形状は非常に非立方体です。(512, 32, 128) と (512, 128, 32) など、次元の順序に基づいてパフォーマンスの違いはありますか?
利用可能なスピードアップを探しています。私はすでに知恵をいじってみました。fFS.shape = (32, 128, 257) になるように、最大の次元が最後 (たとえば 32, 128, 512) になると最速になると思いましたが、そうではないようです。
c++ - fftw Guru インターフェイスの使用方法
fftw_plan_dft
以前は多次元フーリエ変換に使用していました。
64 ビット整数を fftw に渡したいのですが、fftw guru インターフェイスを使用する必要があるようです。
howmany_rank
しかし、私は何がhowmany_dims
意味するのか理解していません。のマニュアルにfftw_plan_guru_dft
は次のように書かれています。
これら 2 つの関数は、それぞれインターリーブ形式と分割形式の複合データの多次元 DFT を計画します。変換次元は、次元 (howmany_rank, howmany_dims) の多次元ベクトル (ループ) 上の (rank, dims) によって与えられます。dims と howmany_dims は、それぞれ長さが rank と howmany_rank の fftw_iodim 配列を指す必要があります。
「次元の多次元ベクトル(ループ)(howmany_rank、howmany_dims)」の意味を知っています。例を挙げたり、この教祖インターフェースの使い方を説明したりできますか?
python - Python で Arrayfire を使用した多次元配列に対する 1D FFT
(M, 2**N)
pyfftw ライブラリを使用すると、次のようにゼロ番目のインデックスを明示的に循環させることなく、形状の多次元配列の 1 つの軸に対して 1D FFT を簡単に実行できます。
afft = pyfftw.interfaces.numpy_fft.fft(a, axis=1)
.
コードを GPU で実行できるように arrayfire に切り替えて、次を使用して同じことを行います ( を使用import arrayfire as af
):
これは並行して実行されますが、物事を行うための最良の方法とは思えず、私のコードを見るのも恐ろしいものになります。
af.fft
関数と同様の方法でpyfftw
、またはnumpyスライスのarrayfireバージョンを使用してループを排除する方法はありますか?