Skip to content
Snippets Groups Projects
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';