我正在编写可以比较numpy.fft.fft2
和pycuda
但结果不匹配的代码。此外pycuda
,每次的结果都是模棱两可的。
数据文件:https ://nofile.io/f/bjGRQGRVSCG/gauss.npy
from pyfft.cuda import Plan
import numpy as np
from pycuda.tools import make_default_context
import pycuda.gpuarray as gpuarray
import pycuda.driver as cuda
import time
import matplotlib.pyplot as plt
cuda.init()
context = make_default_context()
data = np.load('gauss.npy')
data_complex = data.astype(np.complex64)
start_time = time.time()
plan = Plan((32,32))
gpu_data = gpuarray.to_gpu(data_complex)
plan.execute(gpu_data)
result = gpu_data.get()
print("--- %s seconds (FFT calculation pycuda)---" % (time.time() - start_time))
start_time_3 = time.time()
result_np = np.fft.fft2(data)
#print(result_np)
print("--- %s seconds (FFT calculation numpy.fft.fft)---" % (time.time() - start_time))
context.pop()
#plt.plot(result)
#plt.plot(result_np)
我开始怀疑我们是否甚至可以使用 pycuda 执行 2D FFT?