Commit 2468664e authored by Pedro Gonnet's avatar Pedro Gonnet
Browse files

forgot the matlab script to build the task plot.


Former-commit-id: 8205bc7dc9dd95b427bb0b876d8a21163b8c983c
parent 94b7b931
%% Some global stuff
tpms = 1/2.4e6;
ms_max = 82;
%% Plot the task timelines for tasks allocation
% Load the data
tasks = importdata( 'SedovBlast_fixed_16.dump' );
tasks(:,6) = ( tasks(:,6) - tasks(:,5) ) * tpms;
start = min( tasks(:,5) );
tasks(:,5) = ( tasks(:,5) - start ) * tpms;
% for k=0:max(tasks(:,1))
% temp = tasks( tasks(:,1)==k , : );
% start = min( temp(:,5) );
% temp(:,5) = ( temp(:,5) - start ) * tpms;
% tasks( tasks(:,1)==k , :) = temp;
% end
tasks_sorts = tasks( tasks(:,2)==1 , : );
tasks_pairs = tasks( tasks(:,2)==3 | ( tasks(:,2)==4 & tasks(:,4)==0 ) , : );
tasks_selfs = tasks( tasks(:,2)==2 | ( tasks(:,2)==4 & tasks(:,4)==1 ) , : );
tasks_ghosts = tasks( tasks(:,2)==5 , : );
tasks_kick2s = tasks( tasks(:,2)==6 , : );
nr_cores = max( tasks(:,1) ) + 1;
% Init the plot
clf;
subplot('position',[ 0.05 , 0.1 , 0.9 , 0.8 ]);
hold on;
% Plot the pairs
for k=1:size(tasks_pairs,1)
rectangle( 'Position' , [ tasks_pairs(k,5) , tasks_pairs(k,1)+0.5 , tasks_pairs(k,6) , 1 ] , ...
'EdgeColor' , [ 0 0.8 0 ] , 'LineWidth' , 1 , 'FaceColor' , [ 0 1 0 ] );
end
% Plot the selfs
for k=1:size(tasks_selfs,1)
rectangle( 'Position' , [ tasks_selfs(k,5) , tasks_selfs(k,1)+0.5 , tasks_selfs(k,6) , 1 ] , ...
'EdgeColor' , [ 0 0 0.8 ] , 'LineWidth' , 1 , 'FaceColor' , [ 0 0 1 ] );
end
% Plot the sorts
for k=1:size(tasks_sorts,1)
rectangle( 'Position' , [ tasks_sorts(k,5) , tasks_sorts(k,1)+0.5 , tasks_sorts(k,6) , 1 ] , ...
'EdgeColor' , [ 0.8 0 0 ] , 'LineWidth' , 1 , 'FaceColor' , [ 1 0 0 ] );
end
% Plot the ghosts
for k=1:size(tasks_ghosts,1)
rectangle( 'Position' , [ tasks_ghosts(k,5) , tasks_ghosts(k,1)+0.5 , tasks_ghosts(k,6) , 1 ] , ...
'EdgeColor' , [ 0.9 0.9 0 ] , 'LineWidth' , 1 , 'FaceColor' , [ 1 1 0 ] );
end
% Plot the kick2s
for k=1:size(tasks_kick2s,1)
rectangle( 'Position' , [ tasks_kick2s(k,5) , tasks_kick2s(k,1)+0.5 , tasks_kick2s(k,6) , 1 ] , ...
'EdgeColor' , [ 1 0.5 0 ] , 'LineWidth' , 1 , 'FaceColor' , [ 1 0.5 0 ] );
end
% Set the axes and stuff.
hold off;
xlabel('time (ms)');
ylabel('core ID');
set(gca,'YTick',1:(max(tasks(:,1))+1))
title('SWIFT tasks');
axis([ 0 , ms_max , 0.5 , max(tasks(:,1))+1.5 ]);
% Print this plot
set( gcf , 'PaperSize' , 2.3*[ 16 4 ] );
set( gcf , 'PaperPosition' , 2.3*[ 0.25 0.25 16 4 ] );
print -depsc2 tasks_dynamic.eps
!epstopdf tasks_dynamic.eps
%% Make a fake task ordering a la OpenMP.
% Init the core timers
timers = zeros( nr_cores , 1 );
for k=1:nr_cores
timers(k) = min( tasks( tasks(:,1)==k , 5 ) );
end;
delta = 0.0035;
% Loop through the sort tasks and put them at the front of the shortest queue
for k=1:size(tasks,1)
if ( tasks(k,2)==1 )
[ tic, ind ] = min( timers );
tasks(k,5) = tic;
tasks(k,1) = ind-1;
timers(ind) = timers(ind) + tasks(k,6) + delta;
end
end
% Re-set the timers
timers = ones( nr_cores , 1 ) * max( timers );
% Loop through the self density tasks and put them at the front of the shortest queue
for k=1:size(tasks,1)
if tasks(k,2)==2 && tasks(k,3)==1
[ tic, ind ] = min( timers );
tasks(k,5) = tic;
tasks(k,1) = ind-1;
timers(ind) = timers(ind) + tasks(k,6) + delta;
end
end
% Re-set the timers
timers = ones( nr_cores , 1 ) * max( timers );
% Loop through the pair density tasks and put them at the front of the shortest queue
for k=1:size(tasks,1)
if tasks(k,2)==3 && tasks(k,3)==1
[ tic, ind ] = min( timers );
tasks(k,5) = tic;
tasks(k,1) = ind-1;
timers(ind) = timers(ind) + tasks(k,6) + delta;
end
end
% Re-set the timers
timers = ones( nr_cores , 1 ) * max( timers );
% Loop through the ghost tasks and put them at the front of the shortest queue
for k=1:size(tasks,1)
if tasks(k,2)==5
[ tic, ind ] = min( timers );
tasks(k,5) = tic;
tasks(k,1) = ind-1;
timers(ind) = timers(ind) + tasks(k,6) + delta;
end
end
% Re-set the timers
timers = ones( nr_cores , 1 ) * max( timers );
% Loop through the self force tasks and put them at the front of the shortest queue
for k=1:size(tasks,1)
if tasks(k,2)==2 && tasks(k,3)==2
[ tic, ind ] = min( timers );
tasks(k,5) = tic;
tasks(k,1) = ind-1;
timers(ind) = timers(ind) + tasks(k,6) + delta;
end
end
% Re-set the timers
timers = ones( nr_cores , 1 ) * max( timers );
% Loop through the pair force tasks and put them at the front of the shortest queue
for k=1:size(tasks,1)
if tasks(k,2)==3 && tasks(k,3)==2
[ tic, ind ] = min( timers );
tasks(k,5) = tic;
tasks(k,1) = ind-1;
timers(ind) = timers(ind) + tasks(k,6) + delta;
end
end
% Re-set the timers
timers = ones( nr_cores , 1 ) * max( timers );
% Loop through the kick tasks and put them at the front of the shortest queue
for k=1:size(tasks,1)
if tasks(k,2)==6
[ tic, ind ] = min( timers );
tasks(k,5) = tic;
tasks(k,1) = ind-1;
timers(ind) = timers(ind) + tasks(k,6) + delta;
end
end
% Print this plot
set( gcf , 'PaperSize' , 2.3*[ 20 4 ] );
set( gcf , 'PaperPosition' , 2.3*[ 0.25 0.25 20 4 ] );
print -depsc2 tasks_static.eps
!epstopdf tasks_static.eps
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment