Pyfftw медленнее, чем Matlab FFT
Я пытаюсь сравнить Pyfftw (в Python 3.6) с Matlab R2017A FFT.
import time
import numpy
import pyfftw
import multiprocessing
nthread = multiprocessing.cpu_count()
print(nthread)
n=2**20
a = pyfftw.empty_aligned(n, dtype='complex128')
print("fft_object = pyfftw.builders.fft(a)")
fft_object = pyfftw.builders.fft(a) #this instruction spend much time
print("generate numbers")
a[:]= 5*numpy.random.rand(n)
print(a)
print("start fft")
start = time.clock()
y=fft_object()
end4 = time.clock() - start
print(end, time:")
print(end4)
print("result")
print(y)
print(len(y))
в то время как если я использую Matlab:
x=5*rand(2^20,1);tic;fft(x);toc
этот запрос только время для вычисления алгоритма fft, то есть приблизительно то же самое время вызова питона для fft_object().
Заранее спасибо за вашу поддержку.
1 ответ
Вы могли бы взглянуть на коды на основе графического процессора (если у вас есть соответствующее оборудование):
http://pypi.python.org/pypi/pyfft
http://pypi.python.org/pypi/scikits.cuda
Они основаны на PyCuda и PyOpenCL. У меня нет большого опыта с этим, поэтому вам нужно немного покопаться, чтобы найти то, что подходит вам лучше всего.