ipython 3.6.1 とその高速化パッケージで anaconda スイートを使用しています。この 2 つの関数 fft と ifft にはcufftサブパッケージがあります。これらは、私が理解している限り、numpy 配列を取り込み、numpy 配列に出力します。システム ram の両方で、つまり、すべての gpu メモリと、システムと gpu メモリ間の転送は自動的に処理され、関数が終了すると gpu メモリが解放されます。これはすべてとてもいいようで、私にとってはうまくいくようです。ただし、同じ配列で複数の fft/ifft 呼び出しを実行し、そのたびに配列から数値を 1 つだけ抽出したいと考えています。システム <-> GPU 転送を最小限に抑えるために、配列を GPU メモリに保持するとよいでしょう。このパッケージを使用してこれを行うことはできないということでよろしいですか? もしそうなら、同じことをする別のパッケージはありますか?レイナに気づいたプロジェクトですが、アナコンダでは利用できないようです。
私がやっている(そしてGPUで効率的にやりたい)ことは、numpy.fftを使ってここに簡単に示されています
import math as m
import numpy as np
import numpy.fft as dft
nr = 100
nh = 2**16
h = np.random.rand(nh)*1j
H = np.zeros(nh,dtype='complex64')
h[10] = 1
r = np.zeros(nr,dtype='complex64')
fftscale = m.sqrt(nh)
corr = 0.12j
for i in np.arange(nr):
r[i] = h[10]
H = dft.fft(h,nh)/fftscale
h = dft.ifft(h*corr)*fftscale
r[nr-1] = h[10]
print(r)
前もって感謝します!