-
Antoine Cyril David Hoffmann authoredAntoine Cyril David Hoffmann authored
profiler.m 3.75 KiB
%% load profiling
% filename = sprintf([BASIC.RESDIR,'outputs_%.2d.h5'],00);
filename_ = ['/misc/HeLaZ_outputs',filename(3:end)];
CPUTIME = double(h5readatt(filename_,'/data/input','cpu_time'));
DT_SIM = h5readatt(filename_,'/data/input','dt');
rhs_Tc = h5read(filename_,'/profiler/Tc_rhs');
adv_field_Tc = h5read(filename_,'/profiler/Tc_adv_field');
ghost_Tc = h5read(filename_,'/profiler/Tc_ghost');
clos_Tc = h5read(filename_,'/profiler/Tc_clos');
coll_Tc = h5read(filename_,'/profiler/Tc_coll');
poisson_Tc = h5read(filename_,'/profiler/Tc_poisson');
Sapj_Tc = h5read(filename_,'/profiler/Tc_Sapj');
checkfield_Tc= h5read(filename_,'/profiler/Tc_checkfield');
diag_Tc = h5read(filename_,'/profiler/Tc_diag');
step_Tc = h5read(filename_,'/profiler/Tc_step');
Ts0D = h5read(filename_,'/profiler/time');
missing_Tc = step_Tc - rhs_Tc - adv_field_Tc - ghost_Tc -clos_Tc ...
-coll_Tc -poisson_Tc -Sapj_Tc -checkfield_Tc -diag_Tc;
total_Tc = step_Tc;
TIME_PER_FCT = [diff(rhs_Tc); diff(adv_field_Tc); diff(ghost_Tc);...
diff(clos_Tc); diff(coll_Tc); diff(poisson_Tc); diff(Sapj_Tc); ...
diff(checkfield_Tc); diff(diag_Tc); diff(missing_Tc)];
TIME_PER_FCT = reshape(TIME_PER_FCT,[numel(TIME_PER_FCT)/10,10]);
TIME_PER_STEP = sum(TIME_PER_FCT,2);
TIME_PER_CPU = trapz(Ts0D(2:end),TIME_PER_STEP);
rhs_Ta = mean(diff(rhs_Tc));
adv_field_Ta = mean(diff(adv_field_Tc));
ghost_Ta = mean(diff(ghost_Tc));
clos_Ta = mean(diff(clos_Tc));
coll_Ta = mean(diff(coll_Tc));
poisson_Ta = mean(diff(poisson_Tc));
Sapj_Ta = mean(diff(Sapj_Tc));
checkfield_Ta = mean(diff(checkfield_Tc));
diag_Ta = mean(diff(diag_Tc));
NSTEP_PER_SAMP= mean(diff(Ts0D))/DT_SIM;
%% Plots
if 1
%% Area plot
fig = figure;
p1 = area(Ts0D(2:end),TIME_PER_FCT,'LineStyle','none');
for i = 1:10; p1(i).FaceColor = rand(1,3); end;
legend('Compute RHS','Adv. fields','ghosts comm', 'closure', 'collision','Poisson','Nonlin','Check+sym', 'Diagnos.', 'Missing')
xlabel('Sim. Time [$\rho_s/c_s$]'); ylabel('Step Comp. Time [s]')
xlim([Ts0D(2),Ts0D(end)]);
title(sprintf('Proc. 1, total sim. time ~%.0f [h]',CPUTIME/3600))
hold on
FIGNAME = 'profiler';
save_figure
else
%% Normalized Area plot
fig = figure;
p1 = area(Ts0D(2:end),100*TIME_PER_FCT./diff(total_Tc),'LineStyle','none', 'FaceColor','flat');
for i = 1:10; p1(i).FaceColor = rand(1,3); end;
legend('Compute RHS','Adv. fields','ghosts comm', 'closure', 'collision','Poisson','Nonlin','Check+sym', 'Diagnos.', 'Missing')
xlabel('Sim. Time'); ylabel('Step Comp. Time [\%]')
ylim([0,100]); xlim([Ts0D(2),Ts0D(end)]);
hold on
yyaxis right
p2 = plot(Ts0D(2:end),diff(total_Tc),'--r','LineWidth',1.0);
ylabel('Step Comp. Time [s]')
ylim([0,1.1*max(diff(total_Tc))])
set(gca,'ycolor','r')
FIGNAME = 'profiler';
save_figure
end
if 0
%% Histograms
fig = figure;
histogram(diff(rhs_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(adv_field_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(ghost_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(clos_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(coll_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(poisson_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(Sapj_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(checkfield_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
histogram(diff(diag_Tc)/NSTEP_PER_SAMP,'Normalization','probability');hold on
grid on;
legend('Compute RHS','Adv. fields','Ghosts comm', 'closure', 'collision','Poisson','Nonlin','Check+sym', 'Diagnos.', 'Missing')
xlabel('Step Comp. Time [s]'); ylabel('')
FIGNAME = 'profiler';
save_figure
end