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

2024-05-13 23:38:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是带有ipython3.6.1及其加速包的anaconda套件。在这两个函数fft和ifft中有一个cufft子包。据我所知,这些设备接收一个numpy数组并输出到一个numpy数组,两者都在系统ram中,即所有gpu内存和系统与gpu内存之间的传输被自动处理,gpu内存在函数结束时被释放。这看起来很不错,对我也很管用。但是,我希望在同一个数组上运行多个fft/ifft调用,每次只从数组中提取一个数字。最好将数组保留在gpu内存中,以最小化系统<;->;gpu传输。使用这个软件包是不可能的吗?如果是这样的话,有没有其他的软件包也能做到这一点呢。我注意到了reikna项目,但在Python中似乎没有。在

我正在做的事情(并希望在gpu上高效地做)在这里用数字.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)

提前谢谢!在


Tags: 函数内存importfftnumpygpu系统as