Anaconda包用于在fft / ifft调用之间保持gpu内存中的数组

时间:2017-08-22 11:48:15

标签: python numpy anaconda cufft

我正在使用带有ipython 3.6.1的anaconda套件及其加速包。这两个函数fft和ifft中有一个cufft子包。据我所知,这些都是一个numpy数组并输出到numpy数组,两者都在系统ram中,即所有gpu-memory和系统与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)

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以我发现Arrayfire似乎很容易使用。