我正在使用带有 ipython 3.6.1 的 anaconda 套件及其加速包。这两个函数 fft 和 ifft 中有一个cufft子包。据我了解,这些都在系统内存中接收一个 numpy 数组并输出到一个 numpy 数组,即所有 gpu 内存以及系统和 gpu 内存之间的传输都是自动处理的,并且 gpu 内存在函数结束时被释放。这似乎一切都很好,似乎对我有用。但是,我想在同一个数组上运行多个 fft/ifft 调用,并且每次只从数组中提取一个数字。将数组保存在 gpu 内存中以最小化系统 <-> gpu 传输会很好。我是否正确,这是不可能使用这个包?如果是这样,是否有另一个包可以做同样的事情。我注意到了reikna项目,但这似乎在 anaconda 中不可用。
我正在做的事情(并且希望在 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)
提前致谢!