-
Antoine Cyril David Hoffmann authoredAntoine Cyril David Hoffmann authored
profiler.m 6.42 KiB
function [] = profiler(data)
%% load profiling
% filename = sprintf([BASIC.RESDIR,'outputs_%.2d.h5'],00);
% outfilename = ['/misc/HeLaZ_outputs',filename(3:end)];
CPUTI=[]; DTSIM=[]; RHSTC=[]; POITC=[]; SAPTC=[]; COLTC=[];
GRATC=[]; NADTC=[]; ADVTC=[]; GHOTC=[]; CLOTC=[]; CHKTC=[];
DIATC=[]; EXBTC=[]; STETC=[]; TS0TC=[];
for i = 1:numel(data.outfilenames)
outfilename = data.outfilenames{i};
CPUTI = [ CPUTI; double(h5readatt(outfilename,'/data/input','cpu_time'))];
DTSIM = [ DTSIM; h5readatt(outfilename,'/data/input/basic','dt')];
RHSTC = [ RHSTC; h5read(outfilename,'/profiler/Tc_rhs')];
POITC = [ POITC; h5read(outfilename,'/profiler/Tc_poisson')];
SAPTC = [ SAPTC; h5read(outfilename,'/profiler/Tc_Sapj')];
try
EXBTC = [ EXBTC; h5read(outfilename,'/profiler/Tc_ExBshear')];
catch
EXBTC = 0.*SAPTC;
end
COLTC = [ COLTC; h5read(outfilename,'/profiler/Tc_coll')];
GRATC = [ GRATC; h5read(outfilename,'/profiler/Tc_grad')];
NADTC = [ NADTC; h5read(outfilename,'/profiler/Tc_nadiab')];
ADVTC = [ ADVTC; h5read(outfilename,'/profiler/Tc_adv_field')];
GHOTC = [ GHOTC; h5read(outfilename,'/profiler/Tc_ghost')];
CLOTC = [ CLOTC; h5read(outfilename,'/profiler/Tc_clos')];
CHKTC = [ CHKTC; h5read(outfilename,'/profiler/Tc_checkfield')];
DIATC = [ DIATC; h5read(outfilename,'/profiler/Tc_diag')];
STETC = [ STETC; h5read(outfilename,'/profiler/Tc_step')];
TS0TC = [ TS0TC; h5read(outfilename,'/profiler/time')];
end
CPUTI = CPUTI(end);
DTSIM = mean(DTSIM);
N_T = 13;
missing_Tc = STETC - RHSTC - ADVTC - GHOTC - CLOTC - EXBTC ...
-COLTC - POITC - SAPTC - CHKTC - DIATC - GRATC - NADTC;
total_Tc = STETC;
TIME_PER_FCT = [diff(RHSTC); diff(ADVTC); diff(GHOTC);...
diff(CLOTC); diff(COLTC); diff(POITC); diff(SAPTC); diff(EXBTC); ...
diff(CHKTC); diff(DIATC); diff(GRATC); diff(NADTC); diff(missing_Tc)];
TIME_PER_FCT = reshape(TIME_PER_FCT,[numel(TIME_PER_FCT)/N_T,N_T]);
TIME_PER_STEP = sum(TIME_PER_FCT,2);
TIME_PER_CPU = trapz(TS0TC(2:end),TIME_PER_STEP);
rhs_Ta = mean(diff(RHSTC));
adv_field_Ta = mean(diff(ADVTC));
ghost_Ta = mean(diff(GHOTC));
clos_Ta = mean(diff(CLOTC));
coll_Ta = mean(diff(COLTC));
poisson_Ta = mean(diff(POITC));
Sapj_Ta = mean(diff(SAPTC));
ExB_Ta = mean(diff(EXBTC));
checkfield_Ta = mean(diff(CHKTC));
grad_Ta = mean(diff(GRATC));
nadiab_Ta = mean(diff(NADTC));
diag_Ta = mean(diff(DIATC));
miss_Ta = mean(diff(missing_Tc));
total_Ta = mean(diff(total_Tc));
names = {...
'Mrhs';
'Advf';
'Ghst';
'Clos';
'Capj';
'Pois';
'Sapj';
'ExBs';