2017-08-22 8 views
0

ipython 3.6.1とそのアクセラレーションパッケージでanacondaスイートを使用しています。この2つの関数fftとifftには、cufftサブパッケージがあります。これらは、私が理解する限り、システムRAMとシステムとgpuメモリ間のすべてのgpuメモリと転送が自動的に処理され、関数が終了するとgpuメモリが解放され、numpyアレイに出力されてnumpy配列に出力されます。これは非常に素晴らしく、私にとってはうまくいくようです。しかし、私は同じ配列上で複数のfft/ifft呼び出しを実行したいと思いますし、そのたびに配列から1つの数値だけを抽出します。システム< - > gpuの転送を最小限に抑えるために、gpuメモリに配列を保持するといいでしょう。このパッケージを使用してこれを実行できないことを修正しましたか?もしそうなら、同じことをする別のパッケージがありますか?私はreiknaプロジェクトに気付きましたが、アナコンダでは利用できないようです。fft/ifft呼び出し間のgpuメモリ内のアレイを保持するための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) 

感謝を使用して、ここに示されています!

答えて

0

だから、私はArrayfireだとわかりました。

関連する問題