📄 papiclock.m
字号:
clc;clear;close all;
% Simple script that uses PAPI FOR MATLAB to determine the flops of FFT for
% real vectors, FFT for complex vectors, IFFT for complex vectors
%
% FFT and IFFT flops
%--------------------------------------------------------------------------
Lmax = 2048;
Lmin = 1;
volte = 5;
FFTrv = zeros(Lmax,volte);
FFTiv = zeros(Lmax,volte);
IFFTiv = zeros(Lmax,volte);
for L=Lmin:Lmax
disp('Current length');
disp(L);
% vectors initialization
a = rand(L,1);
b = rand(L,1)+i*rand(L,1);
for ii=1:volte
% FFT real vector
flops(0);
fft(a);
ops = flops;
FFTrv(L,ii) = ops;
end
for ii=1:volte
% FFT complex vector
flops(0);
fft(b);
ops = flops;
FFTiv(L,ii) = ops;
end
for ii=1:volte
% IFFT complex vector
flops(0);
ifft(b);
ops = flops;
IFFTiv(L,ii) = ops;
end
end
% Flops of complex sum and product
%--------------------------------------------------------------------------
dimx = 100;
dimy = 100;
a = rand(dimx,dimy)+i*rand(dimx,dimy);
b = rand(dimx,dimy)+i*rand(dimx,dimy);
flops(0);
a.*b;
ops = flops;
complexproductops = ops/(dimx*dimy);
flops(0);
a+b;
ops = flops;
complexsumops = ops/(dimx*dimy);
% Some other tests
%--------------------------------------------------------------------------
L1 = 500;
a1 = rand(L1,1);
b1 = rand(L1,1)+i*rand(L1,1);
L2 = 800;
a2 = rand(L2,1);
b2 = rand(L2,1)+i*rand(L2,1);
myvector = zeros(200,1);
ii=1;
% fft di reale con altri
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(a1);ops=flops;myvector(ii)=ops;ii=ii+1;
% fft di complesso con altri
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);fft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
% ifft di complesso con altri
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b2);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
flops(0);ifft(b1);ops=flops;myvector(ii)=ops;ii=ii+1;
%--------------------------------------------------------------------------
save papifftexecutiontimes FFTrv FFTiv IFFTiv complexproductops complexsumops myvector
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -