clear all close all %Compare native FFT2 with cuda implementation FFTsize=[256 512 1024 2048 3072]; sim_runs=10; time_fft2_matlab=zeros(sim_runs,length(FFTsize)); time_fft2_cuda=zeros(sim_runs,length(FFTsize)); cuda_error=zeros(sim_runs,length(FFTsize)); matlab_error=zeros(sim_runs,length(FFTsize)); for ii=1:length(FFTsize) for iii=1:sim_runs a=rand(FFTsize(ii))+i*rand(FFTsize(ii)); tic;b_matlab=fft2(a); time_fft2_matlab(iii,ii)=toc; tic;b_cuda=fft2_cuda(a); time_fft2_cuda(iii,ii)=toc; x=abs(a-ifft2_cuda(b_cuda)); cuda_error(iii,ii)=mean(x(:)); x=abs(a-ifft2(b_matlab)); matlab_error(iii,ii)=mean(x(:)); end disp(['IFFT2(FFT2(X[' num2str(FFTsize(ii)) ' by ' num2str(FFTsize(ii)) '])) with a cuda error of ' num2str(mean(cuda_error(:,ii))) ' and a matlab error of ' num2str(mean(matlab_error(:,ii))) ]) end x=a-ifft2_cuda(b_cuda); figure subplot(2,2,1) hist(real(x(:)),1113) title(['Cuda error histogram for square matrix of size ' num2str(FFTsize(ii))]) xlabel('Error values (real part)') ylabel('Count') subplot(2,2,2) hist(imag(x(:)),1113) xlabel('Error values (imaginary part)') ylabel('Count') x=a-ifft2(b_matlab); subplot(2,2,3) hist(real(x(:)),1113) title(['Matlab error histogram for square matrix of size ' num2str(FFTsize(ii))]) xlabel('Error values (real part)') ylabel('Count') subplot(2,2,4) hist(imag(x(:)),1113) xlabel('Error values (imaginary part)') ylabel('Count')