From 9c283d83692207a80314734801a47739cc2b5bc8 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Wed, 11 Jul 2018 19:28:31 +0200 Subject: [PATCH] extend the example with heterogeneous parallel task --- examples/s4u/exec-ptask/s4u-exec-ptask.cpp | 6 ++++ examples/s4u/exec-ptask/s4u-exec-ptask.tesh | 32 +++++++++++++++------ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/examples/s4u/exec-ptask/s4u-exec-ptask.cpp b/examples/s4u/exec-ptask/s4u-exec-ptask.cpp index d2ffff9688..ef3bac115e 100644 --- a/examples/s4u/exec-ptask/s4u-exec-ptask.cpp +++ b/examples/s4u/exec-ptask/s4u-exec-ptask.cpp @@ -71,6 +71,12 @@ static void runner() computation_amounts[i] = 1e9; // 1 Gflop simgrid::s4u::this_actor::parallel_execute(hosts_count, hosts.data(), computation_amounts, nullptr /* no comm */); + XBT_INFO("Then, build a parallel task involving only heterogeneous computations and no communication"); + computation_amounts = new double[hosts_count](); + for (int i = 0; i < hosts_count; i++) + computation_amounts[i] = 5 * (i + 1) * 1e8; // 500Mflop, 1Gflop, 1.5Gflop + simgrid::s4u::this_actor::parallel_execute(hosts_count, hosts.data(), computation_amounts, nullptr /* no comm */); + XBT_INFO("Then, build a parallel task with no computation nor communication (synchro only)"); computation_amounts = new double[hosts_count](); communication_amounts = new double[hosts_count * hosts_count](); diff --git a/examples/s4u/exec-ptask/s4u-exec-ptask.tesh b/examples/s4u/exec-ptask/s4u-exec-ptask.tesh index 77a383b283..0b1364324e 100644 --- a/examples/s4u/exec-ptask/s4u-exec-ptask.tesh +++ b/examples/s4u/exec-ptask/s4u-exec-ptask.tesh @@ -1,16 +1,30 @@ #!/usr/bin/env tesh -$ ${bindir:=.}/s4u-exec-ptask$EXEEXT ${platfdir}/energy_platform.xml --energy --cfg=host/model:ptask_L07 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" +$ ${bindir:=.}/s4u-exec-ptask$EXEEXT ${platfdir}/energy_platform.xml --energy --cfg=host/model:ptask_L07 --cfg=tracing:yes --cfg=tracing/uncategorized:yes --log=instr_resource.t:debug --log=no_loc "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" > [ 0.000000] (0:maestro@) Configuration change: Set 'host/model' to 'ptask_L07' +> [ 0.000000] (0:maestro@) Configuration change: Set 'tracing' to 'yes' +> [ 0.000000] (0:maestro@) Configuration change: Set 'tracing/uncategorized' to 'yes' > [ 0.000000] (0:maestro@) Switching to the L07 model to handle parallel tasks. > [ 0.000000] (1:test@MyHost1) First, build a classical parallel task, with 1 Gflop to execute on each node, and 10MB to exchange between each pair +> [300.000000] (0:maestro@) UNCAT HOST [0.000000 - 300.000000] MyHost1 power_used 3333333.333333 +> [300.000000] (0:maestro@) UNCAT HOST [0.000000 - 300.000000] MyHost2 power_used 3333333.333333 +> [300.000000] (0:maestro@) UNCAT HOST [0.000000 - 300.000000] MyHost3 power_used 3333333.333333 +> [300.000000] (0:maestro@) UNCAT LINK [0.000000 - 300.000000] bus bandwidth_used 100000.000000 > [300.000000] (1:test@MyHost1) We can do the same with a timeout of one second enabled. > [301.000000] (1:test@MyHost1) Then, build a parallel task involving only computations and no communication (1 Gflop per node) -> [311.000000] (1:test@MyHost1) Then, build a parallel task with no computation nor communication (synchro only) -> [311.000000] (1:test@MyHost1) Finally, trick the ptask to do a 'remote execution', on host MyHost2 -> [321.000000] (1:test@MyHost1) Goodbye now! -> [321.000000] (0:maestro@) Total energy consumption: 157960.888889 Joules (used hosts: 157960.888889 Joules; unused/idle hosts: 0.000000) -> [321.000000] (0:maestro@) Simulation done. -> [321.000000] (0:maestro@) Energy consumption of host MyHost1: 30560.888889 Joules -> [321.000000] (0:maestro@) Energy consumption of host MyHost2: 64200.000000 Joules -> [321.000000] (0:maestro@) Energy consumption of host MyHost3: 63200.000000 Joules +> [311.000000] (0:maestro@) UNCAT HOST [301.000000 - 311.000000] MyHost1 power_used 100000000.000000 +> [311.000000] (0:maestro@) UNCAT HOST [301.000000 - 311.000000] MyHost2 power_used 100000000.000000 +> [311.000000] (0:maestro@) UNCAT HOST [301.000000 - 311.000000] MyHost3 power_used 100000000.000000 +> [311.000000] (1:test@MyHost1) Then, build a parallel task involving only heterogeneous computations and no communication +> [326.000000] (0:maestro@) UNCAT HOST [311.000000 - 326.000000] MyHost1 power_used 33333333.333333 +> [326.000000] (0:maestro@) UNCAT HOST [311.000000 - 326.000000] MyHost2 power_used 66666666.666667 +> [326.000000] (0:maestro@) UNCAT HOST [311.000000 - 326.000000] MyHost3 power_used 100000000.000000 +> [326.000000] (1:test@MyHost1) Then, build a parallel task with no computation nor communication (synchro only) +> [326.000000] (1:test@MyHost1) Finally, trick the ptask to do a 'remote execution', on host MyHost2 +> [336.000000] (0:maestro@) UNCAT HOST [326.000000 - 336.000000] MyHost2 power_used 100000000.000000 +> [336.000000] (1:test@MyHost1) Goodbye now! +> [336.000000] (0:maestro@) Total energy consumption: 165494.222222 Joules (used hosts: 165494.222222 Joules; unused/idle hosts: 0.000000) +> [336.000000] (0:maestro@) Simulation done. +> [336.000000] (0:maestro@) Energy consumption of host MyHost1: 32094.222222 Joules +> [336.000000] (0:maestro@) Energy consumption of host MyHost2: 67200.000000 Joules +> [336.000000] (0:maestro@) Energy consumption of host MyHost3: 66200.000000 Joules -- 2.20.1