teshsuite/simdag/platforms/simgrid.jed
### Libraries links
examples/lua/simgrid.so
-examples/msg/masterslave/simgrid.so
examples/simdag/simgrid.so
examples/lua/console/simgrid.so
SimGrid-*.tar.gz
examples/msg/io-remote/io-remote
examples/msg/io-storage/io-storage
examples/msg/failures/failures
-examples/msg/masterslave/masterslave
+examples/msg/masterworker/masterworker
examples/msg/process-kill/process-kill
-examples/msg/masterslave-mailbox/masterslave-mailbox
+examples/msg/masterworker-mailbox/masterworker-mailbox
examples/msg/mc/bugged1
examples/msg/mc/bugged1_liveness
examples/msg/mc/bugged1_stateful
examples/msg/ms.trace
examples/msg/ns3/ns3
examples/msg/pmm/pmm
-examples/msg/priority/priority
+examples/msg/task-priority/task-priority
examples/msg/procmig.trace
examples/msg/properties/properties
examples/msg/synchro/synchro
examples/msg/sendrecv/sendrecv
examples/msg/set-maestro/set-maestro
examples/msg/simulation.trace
-examples/msg/start_kill_time/start_kill_time
+examples/msg/process-startkilltime/process-startkilltime
examples/msg/process-suspend/process-suspend
examples/msg/token_ring/token_ring
examples/msg/trace/test_trace_integration
examples/msg/trace-categories/trace-categories
examples/msg/trace-link-srcdst-user-variables/trace-link-srcdst-user-variables
examples/msg/trace-link-user-variables/trace-link-user-variables
-examples/msg/trace-masterslave/trace-masterslave
+examples/msg/trace-masterworker/trace-masterworker
examples/msg/trace-process-migration/trace-process-migration
examples/msg/trace-simple/trace-simple
examples/msg/trace-platform/trace-platform
#########################################
## touched files to track the dependencies of java examples
examples/java/app/bittorrent/java_app_bittorrent_compiled
+examples/java/app/centralizedmutex/java_app_centralizedmutex_compiled
examples/java/app/masterworker/java_app_masterworker_compiled
-examples/java/async/java_async_compiled
+examples/java/app/pingpong/java_app_pingpong_compiled
+examples/java/async/dsend/java_async_dsend_compiled
examples/java/dht/chord/java_dht_chord_compiled
examples/java/dht/kademlia/java_dht_kademlia_compiled
-examples/java/cloud/java_cloud_compiled
+examples/java/cloud/masterworker/java_cloud_masterworker_compiled
examples/java/cloud/migration/java_cloud_migration_compiled
examples/java/energy/consumption/java_energy_consumption_compiled
examples/java/energy/vm/java_energy_vm_compiled
examples/java/process/kill/java_process_kill_compiled
examples/java/process/migration/java_process_migration_compiled
examples/java/process/suspend/java_process_suspend_compiled
-examples/java/mutualExclusion/java_mutualExclusion_compiled
-examples/java/pingPong/java_pingPong_compiled
-examples/java/priority/java_priority_compiled
examples/java/process/startkilltime/java_process_startkilltime_compiled
-examples/java/tracing/java_tracing_compiled
+examples/java/task/priority/java_task_priority_compiled
+examples/java/trace/pingpong/java_trace_pingpong_compiled
/CMakeCache.txt
examples/smpi/mc/smpi_bugged1
examples/smpi/mc/smpi_bugged1_liveness
${srcdir}/MessageTask.java ${srcdir}/Peer.java ${srcdir}/Tracker.java
${srcdir}/TrackerTask.java)
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/app/centralizedmutex)
+set(app_centralizedmutex_sources ${srcdir}/Main.java ${srcdir}/Coordinator.java ${srcdir}/GrantTask.java
+ ${srcdir}/Node.java ${srcdir}/ReleaseTask.java ${srcdir}/RequestTask.java)
+
set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/app/masterworker)
set(app_masterworker_sources ${srcdir}/Main.java ${srcdir}/Master.java ${srcdir}/Worker.java)
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/app/pingpong)
+set(app_pingpong_sources ${srcdir}/Main.java ${srcdir}/PingPongTask.java ${srcdir}/Receiver.java
+ ${srcdir}/Sender.java)
+
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/async/dsend)
+set(async_dsend_sources ${srcdir}/Main.java ${srcdir}/Receiver.java ${srcdir}/Sender.java)
+
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/cloud/masterworker)
+set(cloud_masterworker_sources ${srcdir}/Main.java ${srcdir}/Master.java ${srcdir}/Worker.java)
+
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/cloud/migration)
+set(cloud_migration_sources ${srcdir}/Main.java ${srcdir}/Daemon.java ${srcdir}/Test.java
+ ${srcdir}/TestHostOnOff.java ${srcdir}/XVM.java)
+
set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/dht/chord)
set(dht_chord_sources ${srcdir}/Main.java ${srcdir}/ChordTask.java ${srcdir}/Common.java
${srcdir}/FindSuccessorAnswerTask.java ${srcdir}/FindSuccessorTask.java
${srcdir}/KademliaTask.java ${srcdir}/Node.java ${srcdir}/PingAnswerTask.java
${srcdir}/PingTask.java ${srcdir}/RoutingTable.java)
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/trace/pingpong)
+set(trace_pingpong_sources ${srcdir}/Main.java ${srcdir}/PingPongTask.java ${srcdir}/Receiver.java
+ ${srcdir}/Sender.java)
+
set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/energy/consumption)
set(energy_consumption_sources ${srcdir}/Main.java ${srcdir}/EnergyConsumer.java)
set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/process/suspend)
set(process_suspend_sources ${srcdir}/Main.java ${srcdir}/DreamMaster.java ${srcdir}/LazyGuy.java)
-foreach (example app_bittorrent app_masterworker dht_chord dht_kademlia energy_consumption energy_vm io_file io_storage
- process_kill process_migration process_startkilltime process_suspend)
+set (srcdir ${CMAKE_CURRENT_SOURCE_DIR}/task/priority)
+set(task_priority_sources ${srcdir}/Main.java ${srcdir}/Test.java)
+
+foreach (example app_bittorrent app_centralizedmutex app_masterworker app_pingpong async_dsend
+ cloud_migration cloud_masterworker dht_chord dht_kademlia energy_consumption energy_vm io_file io_storage
+ process_kill process_migration process_startkilltime process_suspend task_priority trace_pingpong)
string (REPLACE "_" "/" example_dir ${example})
if(enable_java)
add_custom_command(
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/${example_dir}/${example}.tesh)
endforeach()
-set(examples_src ${examples_src} PARENT_SCOPE)
-set(tesh_files ${tesh_files} PARENT_SCOPE)
-set(bin_files ${bin_files} ${CMAKE_CURRENT_SOURCE_DIR}/app/bittorrent/generate.py PARENT_SCOPE)
-set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/app/masterworker/README PARENT_SCOPE)
+set(examples_src ${examples_src} PARENT_SCOPE)
+set(tesh_files ${tesh_files} PARENT_SCOPE)
+set(bin_files ${bin_files} ${CMAKE_CURRENT_SOURCE_DIR}/app/bittorrent/generate.py PARENT_SCOPE)
+set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/app/masterworker/README
+ ${CMAKE_CURRENT_SOURCE_DIR}/cloud/migration/README PARENT_SCOPE)
set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/app/bittorrent/bittorrent.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/app/centralizedmutex/centralizedmutex.xml
${CMAKE_CURRENT_SOURCE_DIR}/app/masterworker/masterworker.xml
${CMAKE_CURRENT_SOURCE_DIR}/dht/chord/chord.xml
${CMAKE_CURRENT_SOURCE_DIR}/dht/kademlia/kademlia.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/process/startkilltime/startkilltime.xml PARENT_SCOPE)
+ ${CMAKE_CURRENT_SOURCE_DIR}/process/startkilltime/startkilltime.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/task/priority/priority.xml PARENT_SCOPE)
if(enable_java)
- foreach (example app_bittorrent app_masterworker dht_chord dht_kademlia energy_consumption energy_vm io_file
- io_storage process_kill process_migration process_startkilltime process_suspend)
+ foreach (example app_bittorrent app_centralizedmutex app_masterworker app_pingpong async_dsend
+ cloud_migration cloud_masterworker dht_chord dht_kademlia energy_consumption energy_vm io_file io_storage
+ process_kill process_migration process_startkilltime process_suspend task_priority trace_pingpong)
string (REPLACE "_" "/" example_dir ${example})
ADD_TESH(java-${example} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/${example_dir}/${example}.tesh)
endforeach()
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package mutualExclusion;
+package app.centralizedmutex;
import java.util.LinkedList;
import org.simgrid.msg.Msg;
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package mutualExclusion;
+package app.centralizedmutex;
public class GrantTask extends org.simgrid.msg.Task {}
-/* Copyright (c) 2006-2014, 2016. The SimGrid Team.
+/* Copyright (c) 2012-2014, 2016. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package async;
+package app.centralizedmutex;
import org.simgrid.msg.Msg;
import org.simgrid.msg.NativeException;
-public class AsyncTest {
+public class Main {
public static void main(String[] args) throws NativeException {
Msg.init(args);
- if (args.length < 2) {
- Msg.info("Usage : AsyncTest platform_file deployment_file");
- Msg.info("example : AsyncTest ../platforms/platform.xml asyncDeployment.xml");
- System.exit(1);
- }
+ String platf = args.length > 1 ? args[0] : "../platforms/small_platform.xml";
+ String deploy = args.length > 1 ? args[1] : "./centralizedmutex.xml";
/* construct the platform and deploy the application */
- Msg.createEnvironment(args[0]);
- Msg.deployApplication(args[1]);
+ Msg.createEnvironment(platf);
+ Msg.deployApplication(deploy);
/* execute the simulation. */
Msg.run();
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package mutualExclusion;
+package app.centralizedmutex;
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package mutualExclusion;
+package app.centralizedmutex;
public class ReleaseTask extends org.simgrid.msg.Task {}
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package mutualExclusion;
+package app.centralizedmutex;
import org.simgrid.msg.Task;
public class RequestTask extends Task {
--- /dev/null
+#! tesh
+
+! output sort 19
+
+$ java -classpath ${classpath:=.} app/centralizedmutex/Main ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/app/centralizedmutex/centralizedmutex.xml
+> [0.000000] [jmsg/INFO] Using regular java threads.
+> [Jupiter:app.centralizedmutex.Node:(2) 0.000000] [jmsg/INFO] Send a request to the coordinator
+> [Fafard:app.centralizedmutex.Node:(3) 0.000000] [jmsg/INFO] Send a request to the coordinator
+> [Tremblay:app.centralizedmutex.Coordinator:(1) 0.019014] [jmsg/INFO] Got a request from app.centralizedmutex.Node. Queue empty: grant it
+> [Jupiter:app.centralizedmutex.Node:(2) 0.019014] [jmsg/INFO] Wait for a grant from the coordinator
+> [Fafard:app.centralizedmutex.Node:(3) 0.063737] [jmsg/INFO] Wait for a grant from the coordinator
+> [Tremblay:app.centralizedmutex.Coordinator:(1) 0.063737] [jmsg/INFO] Got a request from app.centralizedmutex.Node. Queue empty: grant it
+> [Tremblay:app.centralizedmutex.Coordinator:(1) 0.134167] [jmsg/INFO] we should shutdown the simulation now
+> [0.134167] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
<?xml version='1.0'?>
<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
<platform version="4">
- <process host="Tremblay" function="mutualExclusion.Coordinator">
+ <process host="Tremblay" function="app.centralizedmutex.Coordinator">
<argument value="2"/> <!-- Amount of CS to serve -->
</process>
- <process host="Jupiter" function="mutualExclusion.Node">
+ <process host="Jupiter" function="app.centralizedmutex.Node">
<argument value="2"/> <!-- initial sleep time -->
<argument value="5"/> <!-- CS time -->
</process>
- <process host="Fafard" function="mutualExclusion.Node">
+ <process host="Fafard" function="app.centralizedmutex.Node">
<argument value="2"/> <!-- initial sleep time -->
<argument value="5"/> <!-- CS time -->
</process>
-/* Master of a basic master/slave example in Java */
+/* Master of a basic master/worker example in Java */
/* Copyright (c) 2006-2014. The SimGrid Team.
* All rights reserved. */
This is a somehow basic master/workers example.
There is 2 kind of processes:
- * Master: creates some tasks, and dispatches them to its slaves
+ * Master: creates some tasks, and dispatches them to its workers
* Worker: get tasks from the master and run them
At the end of the execution:
}
int num = Integer.valueOf(args[0]).intValue();
- //Msg.info("Receiving on 'slave_"+num+"'");
+ //Msg.info("Receiving on 'worker_"+num+"'");
while(true) {
Task task = Task.receive("worker_"+num);
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package pingPong;
+package app.pingpong;
import org.simgrid.msg.Msg;
+import org.simgrid.msg.MsgException;
import org.simgrid.msg.NativeException;
-public class PingPongTest {
- public static void main(String[] args) throws NativeException {
+public class Main {
+ public static void main(String[] args) throws MsgException, NativeException{
Msg.init(args);
- if(args.length < 2) {
- Msg.info("Usage : PingPongTest platform_file deployment_file");
- Msg.info("example : PingPongTest ../platforms/platform.xml pingPongDeployment.xml");
+ if(args.length < 1) {
+ Msg.info("Usage : Main platform_file");
+ Msg.info("example : Main ../platforms/platform.xml");
System.exit(1);
}
- /* construct the platform and deploy the application */
Msg.createEnvironment(args[0]);
- Msg.deployApplication(args[1]);
-
- /* execute the simulation. */
+ new Sender("Jacquelin", "Sender", new String[] {"Boivin"}).start();
+ new Receiver ("Boivin", "Receiver", null).start();
+
Msg.run();
}
}
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package pingPong;
+package app.pingpong;
import org.simgrid.msg.Task;
import org.simgrid.msg.NativeException;
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package pingPong;
+package app.pingpong;
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
import org.simgrid.msg.Task;
import org.simgrid.msg.Process;
import org.simgrid.msg.MsgException;
+import org.simgrid.msg.NativeException;
+import org.simgrid.msg.HostNotFoundException;
public class Receiver extends Process {
final double commSizeLat = 1;
final double commSizeBw = 100000000;
- public Receiver(Host host, String name, String[]args) {
- super(host,name,args);
+ public Receiver(String hostname, String name, String[]args) throws HostNotFoundException, NativeException{
+ super(hostname,name,args);
}
public void main(String[] args) throws MsgException {
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package pingPong;
+package app.pingpong;
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
import org.simgrid.msg.Process;
import org.simgrid.msg.MsgException;
+import org.simgrid.msg.NativeException;
import org.simgrid.msg.HostNotFoundException;
public class Sender extends Process {
private final double commSizeLat = 1;
final double commSizeBw = 100000000;
- public Sender(Host host, String name, String[] args) {
- super(host,name,args);
+ public Sender(String hostname, String name, String[] args) throws HostNotFoundException, NativeException {
+ super(hostname,name,args);
}
public void main(String[] args) throws MsgException {
--- /dev/null
+#! tesh
+
+! output sort 19
+
+$ java -classpath ${classpath:=.} app/pingpong/Main ${srcdir:=.}/../platforms/platform.xml
+> [0.000000] [jmsg/INFO] Using regular java threads.
+> [1.048882] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
+> [Boivin:Receiver:(2) 0.000000] [jmsg/INFO] hello!
+> [Boivin:Receiver:(2) 0.000000] [jmsg/INFO] try to get a task
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] Got at time 1.0488818628325232
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] Was sent at time 0.0
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] Communication time : 1.0488818628325232
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] --- bw 9.533962169004269E7 ----
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] goodbye!
+> [Jacquelin:Sender:(1) 0.000000] [jmsg/INFO] hello!
+> [Jacquelin:Sender:(1) 0.000000] [jmsg/INFO] host count: 1
+> [Jacquelin:Sender:(1) 0.000000] [jmsg/INFO] sender time: 0.0
+> [Jacquelin:Sender:(1) 1.048882] [jmsg/INFO] goodbye!
+++ /dev/null
-set(example java_async)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/AsyncTest.java ${CMAKE_CURRENT_SOURCE_DIR}/FinalizeTask.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Forwarder.java ${CMAKE_CURRENT_SOURCE_DIR}/Master.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Slave.java)
-
-if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR} -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- ADD_TESH(java-async --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/async/async.tesh)
-endif()
-
-
-set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/async.tesh PARENT_SCOPE)
-set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/asyncDeployment.xml PARENT_SCOPE)
-set(examples_src ${examples_src} ${sources} PARENT_SCOPE)
-set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/README PARENT_SCOPE)
+++ /dev/null
-/* Copyright (c) 2006-2014, 2016. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-package async;
-import org.simgrid.msg.Task;
-
-public class FinalizeTask extends Task {
- public FinalizeTask() {
- super("finalize",0,0);
- }
-}
+++ /dev/null
-/* Copyright (c) 2006-2014, 2016. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-package async;
-import org.simgrid.msg.Msg;
-import org.simgrid.msg.Host;
-import org.simgrid.msg.Task;
-import org.simgrid.msg.Process;
-import org.simgrid.msg.MsgException;
-
-public class Forwarder extends Process {
- public Forwarder(Host host, String name, String[]args) {
- super(host,name,args);
- }
-
- public void main(String[] args) throws MsgException {
- if (args.length < 3) {
- Msg.info("Forwarder needs 3 arguments (input mailbox, first output mailbox, last one)");
- Msg.info("Got "+args.length+" instead");
- System.exit(1);
- }
- int input = Integer.valueOf(args[0]).intValue();
- int firstOutput = Integer.valueOf(args[1]).intValue();
- int lastOutput = Integer.valueOf(args[2]).intValue();
-
- int taskCount = 0;
- int slavesCount = lastOutput - firstOutput + 1;
- Msg.info("Receiving on 'slave_"+input+"'");
- while(true) {
- Task task = Task.receive("slave_"+input);
-
- if (task instanceof FinalizeTask) {
- Msg.info("Got a finalize task. Let's forward (asynchronously) that we're done, and then sleep 20 seconds"+
- " so that nobody gets a message from a terminated process.");
-
- for (int cpt = firstOutput; cpt<=lastOutput; cpt++) {
- Task tf = new FinalizeTask();
- tf.dsend("slave_"+cpt);
- }
- waitFor(20);
- break;
- }
- int dest = firstOutput + (taskCount % slavesCount);
-
- Msg.info("Sending \"" + task.getName() + "\" to \"slave_" + dest + "\"");
- task.send("slave_"+dest);
-
- taskCount++;
- }
-
- Msg.info("I'm done. See you!");
- }
-}
-
+++ /dev/null
-/* Copyright (c) 2006-2014, 2016. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-package async;
-import java.util.ArrayList;
-
-import org.simgrid.msg.Msg;
-import org.simgrid.msg.Comm;
-import org.simgrid.msg.Host;
-import org.simgrid.msg.Task;
-import org.simgrid.msg.Process;
-import org.simgrid.msg.MsgException;
-
-public class Master extends Process {
- public Master(Host host, String name, String[]args) {
- super(host,name,args);
- }
-
- public void main(String[] args) throws MsgException {
- if (args.length < 4) {
- Msg.info("Master needs 4 arguments");
- System.exit(1);
- }
-
- int tasksCount = Integer.valueOf(args[0]).intValue();
- double taskComputeSize = Double.valueOf(args[1]).doubleValue();
- double taskCommunicateSize = Double.valueOf(args[2]).doubleValue();
-
- int slavesCount = Integer.valueOf(args[3]).intValue();
-
- Msg.info("Hello! Got "+ slavesCount + " slaves and "+tasksCount+" tasks to process");
- ArrayList<Comm> comms = new ArrayList<Comm>();
-
- for (int i = 0; i < tasksCount; i++) {
- Task task = new Task("Task_" + i, taskComputeSize, taskCommunicateSize);
- Msg.info("Sending \"" + task.getName()+ "\" to \"slave_" + i % slavesCount + "\"");
- Comm comm = task.isend("slave_"+(i%slavesCount));
- comms.add(comm);
- }
-
- while (comms.size() > 0) {
- for (int i = 0; i < comms.size(); i++) {
- try {
- if (comms.get(i).test()) {
- comms.remove(i);
- i--;
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- waitFor(1);
- }
- Msg.info("All tasks have been dispatched. Let's tell (asynchronously) everybody the computation is over,"+
- " and sleep 20s so that nobody gets a message from a terminated process.");
-
- for (int i = 0; i < slavesCount; i++) {
- FinalizeTask task = new FinalizeTask();
- task.dsend("slave_"+(i%slavesCount));
- }
- waitFor(20);
-
- Msg.info("Goodbye now!");
- }
-}
+++ /dev/null
-This is another version of the master/slaves example, using asynchronous communications.
-
-There is 3 kind of processes:
- * Master: creates some tasks, and dispatches them to its slaves
- * Forwarder: get tasks from master, and dispatch them further
- * Slave: get tasks from either master or forwarder, and run them
-
-At the end of the execution:
- - the master sends FinalizeTask to every known slave to stop them,
- using dsend instead of send. That's non-blocking with no way to
- know if/when the communication succeeds. It is intended for
- communications where you don't care to know whether your message got
- received or not. The process then sleeps 20 seconds because we have
- a strange bug for now when the receiver gets a message from a
- terminated process. This should not be the case, actually, that's a
- JAVA specific bug, but I don't really have the time to dig in right
- now.
-
- - On reception of FT, forwarders dsend FT to every slave, and stop
- after a little while.
- - On reception of FinalizeTask, slaves stop.
-
-Other non-blocking primitives will get used here as soon as they are
-added to the bindings.
\ No newline at end of file
+++ /dev/null
-/* Copyright (c) 2006-2007, 2010, 2013-2014, 2016. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-package async;
-import org.simgrid.msg.Msg;
-import org.simgrid.msg.Comm;
-import org.simgrid.msg.Host;
-import org.simgrid.msg.Task;
-import org.simgrid.msg.Process;
-import org.simgrid.msg.HostFailureException;
-import org.simgrid.msg.TaskCancelledException;
-import org.simgrid.msg.TimeoutException;
-import org.simgrid.msg.TransferFailureException;
-
-public class Slave extends Process {
- public Slave(Host host, String name, String[]args) {
- super(host,name,args);
- }
-
- public void main(String[] args) throws TransferFailureException, HostFailureException, TimeoutException {
- if (args.length < 1) {
- Msg.info("Slave needs 1 argument (its number)");
- System.exit(1);
- }
- int num = Integer.valueOf(args[0]).intValue();
- Comm comm = null;
- boolean slaveFinished = false;
- while(!slaveFinished) {
- try {
- if (comm == null) {
- Msg.info("Receiving on 'slave_" + num + "'");
- comm = Task.irecv("slave_" + num);
- } else {
- if (comm.test()) {
- Task task = comm.getTask();
-
- if (task instanceof FinalizeTask) {
- comm = null;
- break;
- }
- Msg.info("Received a task");
- Msg.info("Received \"" + task.getName() + "\". Processing it.");
- try {
- task.execute();
- } catch (TaskCancelledException e) {
-
- }
- comm = null;
- } else {
- waitFor(1);
- }
- }
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- Msg.info("Received Finalize. I'm done. See you!");
- waitFor(20);
- }
-}
\ No newline at end of file
+++ /dev/null
-#! tesh
-
-! output sort 19
-! timeout 30
-$ java -classpath ${classpath:=.} async/AsyncTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/async/asyncDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Using regular java threads.
-> [ 0.000000] (10:async.Slave@Robert) Receiving on 'slave_8'
-> [ 0.000000] (11:async.Slave@Sirois) Receiving on 'slave_9'
-> [ 0.000000] (12:async.Slave@Monique) Receiving on 'slave_10'
-> [ 0.000000] (1:async.Master@Jacquelin) Hello! Got 7 slaves and 5 tasks to process
-> [ 0.000000] (1:async.Master@Jacquelin) Sending "Task_0" to "slave_0"
-> [ 0.000000] (1:async.Master@Jacquelin) Sending "Task_1" to "slave_1"
-> [ 0.000000] (1:async.Master@Jacquelin) Sending "Task_2" to "slave_2"
-> [ 0.000000] (1:async.Master@Jacquelin) Sending "Task_3" to "slave_3"
-> [ 0.000000] (1:async.Master@Jacquelin) Sending "Task_4" to "slave_4"
-> [ 0.000000] (2:async.Forwarder@Jackson) Receiving on 'slave_0'
-> [ 0.000000] (3:async.Forwarder@Casavant) Receiving on 'slave_1'
-> [ 0.000000] (4:async.Slave@iRMX) Receiving on 'slave_2'
-> [ 0.000000] (5:async.Slave@Bousquet) Receiving on 'slave_3'
-> [ 0.000000] (6:async.Slave@Soucy) Receiving on 'slave_4'
-> [ 0.000000] (7:async.Slave@Kuenning) Receiving on 'slave_5'
-> [ 0.000000] (8:async.Slave@Browne) Receiving on 'slave_6'
-> [ 0.000000] (9:async.Slave@Stephen) Receiving on 'slave_7'
-> [ 0.851467] (2:async.Forwarder@Jackson) Sending "Task_0" to "slave_7"
-> [ 1.357014] (3:async.Forwarder@Casavant) Sending "Task_1" to "slave_9"
-> [ 2.000000] (11:async.Slave@Sirois) Received a task
-> [ 2.000000] (11:async.Slave@Sirois) Received "Task_1". Processing it.
-> [ 2.000000] (5:async.Slave@Bousquet) Received a task
-> [ 2.000000] (5:async.Slave@Bousquet) Received "Task_3". Processing it.
-> [ 2.000000] (6:async.Slave@Soucy) Received a task
-> [ 2.000000] (6:async.Slave@Soucy) Received "Task_4". Processing it.
-> [ 2.000364] (6:async.Slave@Soucy) Receiving on 'slave_4'
-> [ 2.000437] (11:async.Slave@Sirois) Receiving on 'slave_9'
-> [ 2.001165] (5:async.Slave@Bousquet) Receiving on 'slave_3'
-> [ 4.000000] (4:async.Slave@iRMX) Received a task
-> [ 4.000000] (4:async.Slave@iRMX) Received "Task_2". Processing it.
-> [ 4.000000] (9:async.Slave@Stephen) Received a task
-> [ 4.000000] (9:async.Slave@Stephen) Received "Task_0". Processing it.
-> [ 4.000728] (4:async.Slave@iRMX) Receiving on 'slave_2'
-> [ 4.000728] (9:async.Slave@Stephen) Receiving on 'slave_7'
-> [ 5.000000] (1:async.Master@Jacquelin) All tasks have been dispatched. Let's tell (asynchronously) everybody the computation is over, and sleep 20s so that nobody gets a message from a terminated process.
-> [ 5.851463] (2:async.Forwarder@Jackson) Got a finalize task. Let's forward (asynchronously) that we're done, and then sleep 20 seconds so that nobody gets a message from a terminated process.
-> [ 6.000000] (7:async.Slave@Kuenning) Received Finalize. I'm done. See you!
-> [ 6.000000] (8:async.Slave@Browne) Received Finalize. I'm done. See you!
-> [ 6.357007] (3:async.Forwarder@Casavant) Got a finalize task. Let's forward (asynchronously) that we're done, and then sleep 20 seconds so that nobody gets a message from a terminated process.
-> [ 7.000364] (6:async.Slave@Soucy) Received Finalize. I'm done. See you!
-> [ 7.000437] (11:async.Slave@Sirois) Received Finalize. I'm done. See you!
-> [ 7.001165] (5:async.Slave@Bousquet) Received Finalize. I'm done. See you!
-> [ 8.000000] (12:async.Slave@Monique) Received Finalize. I'm done. See you!
-> [ 9.000000] (10:async.Slave@Robert) Received Finalize. I'm done. See you!
-> [ 9.000728] (4:async.Slave@iRMX) Received Finalize. I'm done. See you!
-> [ 9.000728] (9:async.Slave@Stephen) Received Finalize. I'm done. See you!
-> [ 25.000000] (1:async.Master@Jacquelin) Goodbye now!
-> [ 25.851463] (2:async.Forwarder@Jackson) I'm done. See you!
-> [ 26.357007] (3:async.Forwarder@Casavant) I'm done. See you!
-> [ 29.000728] (0:maestro@) MSG_main finished; Cleaning up the simulation...
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <process host="Jacquelin" function="async.Master">
- <argument value="5"/> <!-- Amount of tasks to dispatch -->
- <argument value="50000"/> <!-- Computation size of each task -->
- <argument value="10"/> <!-- Communication size of each one -->
- <argument value="7"/> <!-- Amount of slaves waiting for orders -->
- </process>
-
- <process host="Jackson" function="async.Forwarder">
- <argument value="0"/> <!-- Input mailbox -->
- <argument value="7"/> <!-- First output mailbox -->
- <argument value="8"/> <!-- Last output mailbox -->
- </process>
- <process host="Casavant" function="async.Forwarder">
- <argument value="1"/> <!-- Input mailbox -->
- <argument value="9"/> <!-- First output mailbox -->
- <argument value="10"/> <!-- Last output mailbox -->
- </process>
-
- <process host="iRMX" function="async.Slave">
- <argument value="2"/> <!-- Input mailbox -->
- </process>
- <process host="Bousquet" function="async.Slave">
- <argument value="3"/> <!-- Input mailbox -->
- </process>
- <process host="Soucy" function="async.Slave">
- <argument value="4"/> <!-- Input mailbox -->
- </process>
- <process host="Kuenning" function="async.Slave">
- <argument value="5"/> <!-- Input mailbox -->
- </process>
- <process host="Browne" function="async.Slave">
- <argument value="6"/> <!-- Input mailbox -->
- </process>
- <process host="Stephen" function="async.Slave">
- <argument value="7"/> <!-- Input mailbox -->
- </process>
- <process host="Robert" function="async.Slave">
- <argument value="8"/> <!-- Input mailbox -->
- </process>
- <process host="Sirois" function="async.Slave">
- <argument value="9"/> <!-- Input mailbox -->
- </process>
- <process host="Monique" function="async.Slave">
- <argument value="10"/> <!-- Input mailbox -->
- </process>
-</platform>
--- /dev/null
+/* Copyright (c) 2006-2014, 2016. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+package async.dsend;
+
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.Host;
+import org.simgrid.msg.NativeException;
+import org.simgrid.msg.HostNotFoundException;
+
+public class Main {
+ public static void main(String[] args) throws NativeException, HostNotFoundException {
+ Msg.init(args);
+
+ if (args.length < 1) {
+ Msg.info("Usage : Main platform_file");
+ Msg.info("example : Main ../platforms/small_platform.xml");
+ System.exit(1);
+ }
+
+ /* construct the platform and deploy the application */
+ Msg.createEnvironment(args[0]);
+ Host[] hosts = Host.all();
+ new Sender(hosts[0],"Sender").start();
+ for (int i=1; i < hosts.length; i++){
+ new Receiver(hosts[i], "Receiver").start();
+ }
+ /* execute the simulation. */
+ Msg.run();
+ }
+}
--- /dev/null
+/* Copyright (c) 2006-2007, 2010, 2013-2014, 2016. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+package async.dsend;
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.Comm;
+import org.simgrid.msg.Host;
+import org.simgrid.msg.Task;
+import org.simgrid.msg.Process;
+import org.simgrid.msg.HostFailureException;
+import org.simgrid.msg.TaskCancelledException;
+import org.simgrid.msg.TimeoutException;
+import org.simgrid.msg.TransferFailureException;
+
+public class Receiver extends Process {
+ public Receiver (Host host, String name) {
+ super(host,name);
+ }
+
+ public void main(String[] args) throws TransferFailureException, HostFailureException, TimeoutException {
+ Msg.info("Receiving on '"+ getHost().getName() + "'");
+ Task.receive(getHost().getName());
+ Msg.info("Received a task. I'm done. See you!");
+ }
+}
\ No newline at end of file
--- /dev/null
+/* Copyright (c) 2006-2014, 2016. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+package async.dsend;
+import java.util.ArrayList;
+
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.Comm;
+import org.simgrid.msg.Host;
+import org.simgrid.msg.Task;
+import org.simgrid.msg.Process;
+import org.simgrid.msg.MsgException;
+
+public class Sender extends Process {
+ public Sender (Host host, String name){
+ super(host,name);
+ }
+
+ public void main(String[] args) throws MsgException {
+ double taskComputeSize =0;
+ double taskCommunicateSize = 5000000;
+ Host[] hosts = Host.all();
+ int receiverCount = hosts.length - 1;
+
+ Msg.info("Hello! Got "+ receiverCount + " receivers to contact");
+
+ for (int i = 1; i <= receiverCount; i++) {
+ Task task = new Task("Task_" + i, taskComputeSize, taskCommunicateSize);
+ Msg.info("Sending \"" + task.getName()+ "\" to \"" + hosts[i].getName() + "\"");
+ task.dsend(hosts[i].getName());
+ }
+
+ Msg.info("All tasks have been (asynchronously) dispatched."+
+ " Let's sleep for 10s so that nobody gets a message from a terminated process.");
+
+ waitFor(10);
+
+ Msg.info("Goodbye now!");
+ }
+}
--- /dev/null
+#! tesh
+
+! output sort 19
+! timeout 30
+$ java -classpath ${classpath:=.} async/dsend/Main ${srcdir:=.}/../platforms/small_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Using regular java threads.
+> [ 0.000000] (1:Sender@Fafard) Hello! Got 4 receivers to contact
+> [ 0.000000] (1:Sender@Fafard) Sending "Task_1" to "Tremblay"
+> [ 0.000000] (1:Sender@Fafard) Sending "Task_2" to "Bourassa"
+> [ 0.000000] (1:Sender@Fafard) Sending "Task_3" to "Jupiter"
+> [ 0.000000] (1:Sender@Fafard) Sending "Task_4" to "Ginette"
+> [ 0.000000] (1:Sender@Fafard) All tasks have been (asynchronously) dispatched. Let's sleep for 10s so that nobody gets a message from a terminated process.
+> [ 0.000000] (2:Receiver@Tremblay) Receiving on 'Tremblay'
+> [ 0.000000] (3:Receiver@Bourassa) Receiving on 'Bourassa'
+> [ 0.000000] (4:Receiver@Jupiter) Receiving on 'Jupiter'
+> [ 0.000000] (5:Receiver@Ginette) Receiving on 'Ginette'
+> [ 1.947550] (3:Receiver@Bourassa) Received a task. I'm done. See you!
+> [ 2.084248] (5:Receiver@Ginette) Received a task. I'm done. See you!
+> [ 2.432373] (2:Receiver@Tremblay) Received a task. I'm done. See you!
+> [ 2.690554] (4:Receiver@Jupiter) Received a task. I'm done. See you!
+> [ 10.000000] (0:maestro@) MSG_main finished; Cleaning up the simulation...
+> [ 10.000000] (1:Sender@Fafard) Goodbye now!
+++ /dev/null
-set(example java_cloud)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/Cloud.java ${CMAKE_CURRENT_SOURCE_DIR}/FinalizeTask.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Master.java ${CMAKE_CURRENT_SOURCE_DIR}/Slave.java)
-
-if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR} -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- ADD_TESH(java-cloud --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/cloud/cloud.tesh)
-endif()
-
-set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/cloud.tesh PARENT_SCOPE)
-set(examples_src ${examples_src} ${sources} PARENT_SCOPE)
+++ /dev/null
-/* Copyright (c) 2012-2014,2016. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-package cloud;
-
-import org.simgrid.msg.Task;
-
-public class FinalizeTask extends Task {
- public FinalizeTask(double compSize, double commSize) {
- super("Finalize",compSize,commSize);
- }
-}
\ No newline at end of file
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package cloud;
+package cloud.masterworker;
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
import org.simgrid.msg.MsgException;
-public class Cloud {
+public class Main {
public static final double task_comp_size = 10;
public static final double task_comm_size = 10;
public static final int hostNB = 2 ;
Msg.init(args);
if (args.length < 1) {
- Msg.info("Usage : Cloud platform_file");
- Msg.info("Usage : Cloud ../platforms/platform.xml");
+ Msg.info("Usage : Main platform_file");
+ Msg.info("Usage : Main ../platforms/platform.xml");
System.exit(1);
}
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package cloud;
+package cloud.masterworker;
import java.util.ArrayList;
}
public void main(String[] args) throws MsgException {
- int slavesCount = Cloud.hostNB;
+ int workersCount = Main.hostNB;
ArrayList<VM> vms = new ArrayList<VM>();
// Create one VM per host and bind a process inside each one.
- for (int i = 0; i < slavesCount; i++) {
+ for (int i = 0; i < workersCount; i++) {
Msg.info("create VM0"+i);
VM vm = new VM(hosts[i+1],"VM0"+i);
vm.start();
vms.add(vm);
- Slave slave = new Slave(vm,i);
- Msg.info("Put Worker "+slave.getName()+ " on "+vm.getName());
- slave.start();
+ Worker worker= new Worker(vm,i);
+ Msg.info("Put Worker "+worker.getName()+ " on "+vm.getName());
+ worker.start();
}
Msg.info("Launched " + vms.size() + " VMs");
Msg.info("Send a first batch of work to everyone");
- workBatch(slavesCount);
+ workBatch(workersCount);
Msg.info("Suspend all VMs");
for (int i = 0; i < vms.size(); i++) {
/* Msg.info("Add one more process per VM.");
for (int i = 0; i < vms.size(); i++) {
VM vm = vms.get(i);
- Slave slave = new Slave(vm,i + vms.size());
- slave.start();
+ Worker worker = new Worker(vm,i + vms.size());
+ worker.start();
}
- workBatch(slavesCount * 2);
+ workBatch(workersCount * 2);
*/
Msg.info("Migrate everyone to "+hosts[3].getName());
Msg.info("Master done.");
}
- public void workBatch(int slavesCount) throws MsgException {
- for (int i = 0; i < slavesCount; i++) {
- Task task = new Task("Task0" + i, Cloud.task_comp_size, Cloud.task_comm_size);
+ public void workBatch(int workersCount) throws MsgException {
+ for (int i = 0; i < workersCount; i++) {
+ Task task = new Task("Task0" + i, Main.task_comp_size, Main.task_comm_size);
Msg.info("Sending to WRK0" + i);
task.send("MBOX:WRK0" + i);
}
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package cloud;
+package cloud.masterworker;
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
import org.simgrid.msg.Process;
import org.simgrid.msg.MsgException;
-public class Slave extends Process {
+public class Worker extends Process {
private int number;
- public Slave(Host host, int number) {
+ public Worker(Host host, int number) {
super(host,"WRK0" + number,null);
this.number = number;
}
Msg.debug("Received failed. I'm done. See you!");
break;
}
- if (task instanceof FinalizeTask) {
- Msg.info("Received Finalize. I'm done. See you!");
- break;
- }
Msg.info("Received \"" + task.getName() + "\". Processing it.");
try {
task.execute();
! output sort 19
-$ java -classpath ${classpath:=.} cloud/Cloud ${srcdir:=.}/../platforms/platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} cloud/masterworker/Main ${srcdir:=.}/../platforms/platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:maestro@) Using regular java threads.
> [ 0.000000] (0:maestro@) Start2 hosts
> [ 0.000000] (1:Master@Jacquelin) create VM00
+++ /dev/null
-set(example java_cloud_migration)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/Daemon.java ${CMAKE_CURRENT_SOURCE_DIR}/Main.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Test.java ${CMAKE_CURRENT_SOURCE_DIR}/TestHostOnOff.java
- ${CMAKE_CURRENT_SOURCE_DIR}/XVM.java)
-
-if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR} -d ${CMAKE_CURRENT_BINARY_DIR}/../.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- ADD_TESH(java-cloud-migration --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/cloud/migration/migration.tesh)
-endif()
-
-set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/migration.tesh PARENT_SCOPE)
-set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/deploy_simple.xml PARENT_SCOPE)
-set(examples_src ${examples_src} ${sources} PARENT_SCOPE)
-set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/README PARENT_SCOPE)
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
import org.simgrid.msg.HostNotFoundException;
-import org.simgrid.msg.NativeException;
+import org.simgrid.msg.MsgException;
public class Main {
private static boolean endOfTest = false;
return endOfTest;
}
- public static void main(String[] args) throws NativeException {
+ public static void main(String[] args) throws MsgException {
Msg.init(args);
- if (args.length < 2) {
- Msg.info("Usage : Main platform_file.xml dployment_file.xml");
+ if (args.length < 1) {
+ Msg.info("Usage : Main platform_file.xml");
System.exit(1);
}
/* construct the platform and deploy the application */
Msg.createEnvironment(args[0]);
- Msg.deployApplication(args[1]);
-
+ new cloud.migration.Test("host0","Test").start();
Msg.run();
}
}
public class Test extends Process{
- Test(Host host, String name, String[] args) throws HostNotFoundException, NativeException {
- super(host, name, args);
+ Test(String hostname, String name) throws HostNotFoundException, NativeException {
+ super(hostname, name);
}
public void main(String[] strings) throws MsgException {
--- /dev/null
+#! tesh
+
+$ java -classpath ${classpath:=.} cloud/migration/Main ${srcdir:=.}/../platforms/two_hosts_platform.xml
+> [0.000000] [jmsg/INFO] Using regular java threads.
+> [host0:Test:(1) 0.000000] [jmsg/INFO] This example evaluates the migration time of a VM in presence of collocated VMs on the source and the dest nodes
+> [host0:Test:(1) 0.000000] [jmsg/INFO] The migrated VM has a memory intensity rate of 70% of the network BW and a cpu load of 90% " (see cloudcom 2013 paper "Adding a Live Migration Model Into SimGrid" for further information)
+> [host0:Test:(1) 0.000000] [jmsg/INFO] Load of collocated VMs fluctuate between 0 and 90% in order to create a starvation issue and see whether it impacts or not the migration time
+> [host0:Test:(1) 0.000000] [jmsg/INFO] Round trip of VM1 (load 90%)
+> [host0:Test:(1) 0.000000] [jmsg/INFO] - Launch migration from host 0 to host 1
+> [host0:Test:(1) 0.000000] [jmsg/INFO] Start migration of VM vm0 to host1
+> [host0:Test:(1) 0.000000] [jmsg/INFO] currentLoad:90/ramSize:2048/dpIntensity:70/remaining:8.10E+11
+> [host0:Test:(1) 35.084170] [jmsg/INFO] End of migration of VM vm0 to node host1
+> [host0:Test:(1) 35.084170] [jmsg/INFO] - End of Migration from host 0 to host 1 (duration:35.0841702956701)
+> [host0:Test:(1) 35.084170] [jmsg/INFO] - Launch migration from host 1 to host 0
+> [host0:Test:(1) 35.084170] [jmsg/INFO] Start migration of VM vm0 to host0
+> [host0:Test:(1) 35.084170] [jmsg/INFO] currentLoad:90/ramSize:2048/dpIntensity:70/remaining:6.22E+11
+> [host0:Test:(1) 67.551019] [jmsg/INFO] End of migration of VM vm0 to node host0
+> [host0:Test:(1) 67.551019] [jmsg/INFO] - End of Migration from host 1 to host 0 (duration:32.46684874546391)
+> [host0:Test:(1) 67.551019] [jmsg/INFO]
+> [host0:Test:(1) 67.551019] [jmsg/INFO]
+> [host0:Test:(1) 67.551019] [jmsg/INFO] Round trip of VM1 (load 80%)
+> [host0:Test:(1) 67.551019] [jmsg/INFO] - Launch migration from host 0 to host 1
+> [host0:Test:(1) 67.551019] [jmsg/INFO] Start migration of VM vm0 to host1
+> [host0:Test:(1) 67.551019] [jmsg/INFO] currentLoad:80/ramSize:2048/dpIntensity:70/remaining:4.64E+11
+> [host0:Test:(1) 102.635189] [jmsg/INFO] End of migration of VM vm0 to node host1
+> [host0:Test:(1) 102.635189] [jmsg/INFO] - End of Migration from host 0 to host 1 (duration:35.08417029567006)
+> [host0:Test:(1) 102.635189] [jmsg/INFO] - Launch migration from host 1 to host 0
+> [host0:Test:(1) 102.635189] [jmsg/INFO] Start migration of VM vm0 to host0
+> [host0:Test:(1) 102.635189] [jmsg/INFO] currentLoad:80/ramSize:2048/dpIntensity:70/remaining:2.77E+11
+> [host0:Test:(1) 135.102038] [jmsg/INFO] End of migration of VM vm0 to node host0
+> [host0:Test:(1) 135.102038] [jmsg/INFO] - End of Migration from host 1 to host 0 (duration:32.46684874546395)
+> [host0:Test:(1) 135.102038] [jmsg/INFO] Forcefully destroy VMs
+> [135.102038] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <process host="host0" function="cloud/migration/Test"/>
-</platform>
+++ /dev/null
-#! tesh
-
-$ java -classpath ${classpath:=.} cloud/migration/Main ${srcdir:=.}/../platforms/two_hosts_platform.xml ${srcdir:=.}/cloud/migration/deploy_simple.xml
-> [0.000000] [jmsg/INFO] Using regular java threads.
-> [host0:cloud/migration/Test:(1) 0.000000] [jmsg/INFO] This example evaluates the migration time of a VM in presence of collocated VMs on the source and the dest nodes
-> [host0:cloud/migration/Test:(1) 0.000000] [jmsg/INFO] The migrated VM has a memory intensity rate of 70% of the network BW and a cpu load of 90% " (see cloudcom 2013 paper "Adding a Live Migration Model Into SimGrid" for further information)
-> [host0:cloud/migration/Test:(1) 0.000000] [jmsg/INFO] Load of collocated VMs fluctuate between 0 and 90% in order to create a starvation issue and see whether it impacts or not the migration time
-> [host0:cloud/migration/Test:(1) 0.000000] [jmsg/INFO] Round trip of VM1 (load 90%)
-> [host0:cloud/migration/Test:(1) 0.000000] [jmsg/INFO] - Launch migration from host 0 to host 1
-> [host0:cloud/migration/Test:(1) 0.000000] [jmsg/INFO] Start migration of VM vm0 to host1
-> [host0:cloud/migration/Test:(1) 0.000000] [jmsg/INFO] currentLoad:90/ramSize:2048/dpIntensity:70/remaining:8.10E+11
-> [host0:cloud/migration/Test:(1) 35.084170] [jmsg/INFO] End of migration of VM vm0 to node host1
-> [host0:cloud/migration/Test:(1) 35.084170] [jmsg/INFO] - End of Migration from host 0 to host 1 (duration:35.0841702956701)
-> [host0:cloud/migration/Test:(1) 35.084170] [jmsg/INFO] - Launch migration from host 1 to host 0
-> [host0:cloud/migration/Test:(1) 35.084170] [jmsg/INFO] Start migration of VM vm0 to host0
-> [host0:cloud/migration/Test:(1) 35.084170] [jmsg/INFO] currentLoad:90/ramSize:2048/dpIntensity:70/remaining:6.22E+11
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO] End of migration of VM vm0 to node host0
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO] - End of Migration from host 1 to host 0 (duration:32.46684874546391)
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO]
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO]
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO] Round trip of VM1 (load 80%)
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO] - Launch migration from host 0 to host 1
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO] Start migration of VM vm0 to host1
-> [host0:cloud/migration/Test:(1) 67.551019] [jmsg/INFO] currentLoad:80/ramSize:2048/dpIntensity:70/remaining:4.64E+11
-> [host0:cloud/migration/Test:(1) 102.635189] [jmsg/INFO] End of migration of VM vm0 to node host1
-> [host0:cloud/migration/Test:(1) 102.635189] [jmsg/INFO] - End of Migration from host 0 to host 1 (duration:35.08417029567006)
-> [host0:cloud/migration/Test:(1) 102.635189] [jmsg/INFO] - Launch migration from host 1 to host 0
-> [host0:cloud/migration/Test:(1) 102.635189] [jmsg/INFO] Start migration of VM vm0 to host0
-> [host0:cloud/migration/Test:(1) 102.635189] [jmsg/INFO] currentLoad:80/ramSize:2048/dpIntensity:70/remaining:2.77E+11
-> [host0:cloud/migration/Test:(1) 135.102038] [jmsg/INFO] End of migration of VM vm0 to node host0
-> [host0:cloud/migration/Test:(1) 135.102038] [jmsg/INFO] - End of Migration from host 1 to host 0 (duration:32.46684874546395)
-> [host0:cloud/migration/Test:(1) 135.102038] [jmsg/INFO] Forcefully destroy VMs
-> [135.102038] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
+++ /dev/null
-set(example java_mutualExclusion)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/Coordinator.java ${CMAKE_CURRENT_SOURCE_DIR}/GrantTask.java
- ${CMAKE_CURRENT_SOURCE_DIR}/MutexCentral.java ${CMAKE_CURRENT_SOURCE_DIR}/Node.java
- ${CMAKE_CURRENT_SOURCE_DIR}/ReleaseTask.java ${CMAKE_CURRENT_SOURCE_DIR}/RequestTask.java)
-
-if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR} -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- ADD_TESH(java-mutualExclusion --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/mutualExclusion/mutualexclusion.tesh)
-endif()
-
-set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/mutualexclusion.tesh PARENT_SCOPE)
-set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/mutex_centralized_deployment.xml PARENT_SCOPE)
-set(examples_src ${examples_src} ${sources} PARENT_SCOPE)
+++ /dev/null
-/* Copyright (c) 2012-2014, 2016. The SimGrid Team.
- * All rights reserved. */
-
-/* This program is free software; you can redistribute it and/or modify it
- * under the terms of the license (GNU LGPL) which comes with this package. */
-
-package mutualExclusion;
-
-import org.simgrid.msg.Msg;
-import org.simgrid.msg.NativeException;
-
-public class MutexCentral {
- public static void main(String[] args) throws NativeException {
- Msg.init(args);
-
- if(args.length < 2) {
- Msg.info("Usage: MutexCentral platform_file deployment_file");
- Msg.info("Fallback to default values");
- Msg.createEnvironment("../platform/small_platform.xml");
- Msg.deployApplication("mutex_centralized_deployment.xml");
- } else {
- /* construct the platform and deploy the application */
- Msg.createEnvironment(args[0]);
- Msg.deployApplication(args[1]);
- }
-
- /* execute the simulation. */
- Msg.run();
- }
-}
+++ /dev/null
-#! tesh
-
-! output sort 19
-
-$ java -classpath ${classpath:=.} mutualExclusion/MutexCentral ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/mutualExclusion/mutex_centralized_deployment.xml
-> [0.000000] [jmsg/INFO] Using regular java threads.
-> [Jupiter:mutualExclusion.Node:(2) 0.000000] [jmsg/INFO] Send a request to the coordinator
-> [Fafard:mutualExclusion.Node:(3) 0.000000] [jmsg/INFO] Send a request to the coordinator
-> [Tremblay:mutualExclusion.Coordinator:(1) 0.019014] [jmsg/INFO] Got a request from mutualExclusion.Node. Queue empty: grant it
-> [Jupiter:mutualExclusion.Node:(2) 0.019014] [jmsg/INFO] Wait for a grant from the coordinator
-> [Fafard:mutualExclusion.Node:(3) 0.063737] [jmsg/INFO] Wait for a grant from the coordinator
-> [Tremblay:mutualExclusion.Coordinator:(1) 0.063737] [jmsg/INFO] Got a request from mutualExclusion.Node. Queue empty: grant it
-> [Tremblay:mutualExclusion.Coordinator:(1) 0.134167] [jmsg/INFO] we should shutdown the simulation now
-> [0.134167] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
+++ /dev/null
-set(example java_pingPong)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/PingPongTest.java ${CMAKE_CURRENT_SOURCE_DIR}/PingPongTask.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Receiver.java ${CMAKE_CURRENT_SOURCE_DIR}/Sender.java)
-
-if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR} -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- ADD_TESH(java-pingPong --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/pingPong/pingpong.tesh)
-endif()
-
-set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/pingpong.tesh PARENT_SCOPE)
-set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/pingPongDeployment.xml PARENT_SCOPE)
-set(examples_src ${examples_src} ${sources} PARENT_SCOPE)
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <process host="Jacquelin" function="pingPong.Sender">
- <argument value="Boivin"/>
- </process>
- <process host="Boivin" function="pingPong.Receiver"/>
-</platform>
+++ /dev/null
-#! tesh
-
-! output sort 19
-
-$ java -classpath ${classpath:=.} pingPong/PingPongTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/pingPong/pingPongDeployment.xml
-> [0.000000] [jmsg/INFO] Using regular java threads.
-> [1.048882] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
-> [Boivin:pingPong.Receiver:(2) 0.000000] [jmsg/INFO] hello!
-> [Boivin:pingPong.Receiver:(2) 0.000000] [jmsg/INFO] try to get a task
-> [Boivin:pingPong.Receiver:(2) 1.048882] [jmsg/INFO] Got at time 1.0488818628325232
-> [Boivin:pingPong.Receiver:(2) 1.048882] [jmsg/INFO] Was sent at time 0.0
-> [Boivin:pingPong.Receiver:(2) 1.048882] [jmsg/INFO] Communication time : 1.0488818628325232
-> [Boivin:pingPong.Receiver:(2) 1.048882] [jmsg/INFO] --- bw 9.533962169004269E7 ----
-> [Boivin:pingPong.Receiver:(2) 1.048882] [jmsg/INFO] goodbye!
-> [Jacquelin:pingPong.Sender:(1) 0.000000] [jmsg/INFO] hello!
-> [Jacquelin:pingPong.Sender:(1) 0.000000] [jmsg/INFO] host count: 1
-> [Jacquelin:pingPong.Sender:(1) 0.000000] [jmsg/INFO] sender time: 0.0
-> [Jacquelin:pingPong.Sender:(1) 1.048882] [jmsg/INFO] goodbye!
+++ /dev/null
-set(example java_priority)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/Priority.java ${CMAKE_CURRENT_SOURCE_DIR}/Test.java)
-
-if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR} -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- ADD_TESH(java-priority --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/priority/priority.tesh)
-endif()
-
-set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/priority.tesh PARENT_SCOPE)
-set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/priorityDeployment.xml PARENT_SCOPE)
-set(examples_src ${examples_src} ${sources} PARENT_SCOPE)
+++ /dev/null
-#! tesh
-
-! output sort 19
-
-$ java -classpath ${classpath:=.} priority/Priority ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/priority/priorityDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Using regular java threads.
-> [ 0.000000] (1:priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 1.0
-> [ 0.000000] (2:priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 2.0
-> [ 0.833332] (2:priority.Test@Fafard) Goodbye now!
-> [ 1.111109] (0:maestro@) MSG_main finished; Cleaning up the simulation...
-> [ 1.111109] (1:priority.Test@Fafard) Goodbye now!
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <process host="Fafard" function="priority.Test">
- <argument value="76296000"/>
- <argument value="1.0"/>
- </process>
- <process host="Fafard" function="priority.Test">
- <argument value="76296000"/>
- <argument value="2.0"/>
- </process>
-</platform>
-/* Master of a basic master/slave example in Java */
-
/* Copyright (c) 2006-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package priority;
+package task.priority;
import org.simgrid.msg.Msg;
import org.simgrid.msg.NativeException;
/* Demonstrates the use of Task.setPriority to change the computation priority of a task */
-public class Priority {
+public class Main {
public static void main(String[] args) throws NativeException {
Msg.init(args);
if(args.length < 2) {
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package priority;
+package task.priority;
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
import org.simgrid.msg.Task;
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+ <process host="Fafard" function="task.priority.Test"> <argument value="76296000"/> <argument value="1.0"/> </process>
+ <process host="Fafard" function="task.priority.Test"> <argument value="76296000"/> <argument value="2.0"/> </process>
+</platform>
--- /dev/null
+#! tesh
+
+! output sort 19
+
+$ java -classpath ${classpath:=.} task/priority/Main ${srcdir:=.}/../platforms/small_platform.xml ${srcdir:=.}/task/priority/priority.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Using regular java threads.
+> [ 0.000000] (1:task.priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 1.0
+> [ 0.000000] (2:task.priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 2.0
+> [ 1.500000] (2:task.priority.Test@Fafard) Goodbye now!
+> [ 2.000000] (0:maestro@) MSG_main finished; Cleaning up the simulation...
+> [ 2.000000] (1:task.priority.Test@Fafard) Goodbye now!
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package tracing;
+package trace.pingpong;
import org.simgrid.msg.Msg;
import org.simgrid.trace.Trace;
+import org.simgrid.msg.MsgException;
import org.simgrid.msg.NativeException;
-public class TracingTest {
- public static void main(String[] args) throws NativeException {
+public class Main {
+ public static void main(String[] args) throws MsgException, NativeException {
Msg.init(args);
- if(args.length < 2) {
- Msg.info("Usage : TracingTest platform_file deployment_file");
- Msg.info("example : TracingTest ../platforms/platform.xml tracingPingPongDeployment.xml");
+ if(args.length < 1) {
+ Msg.info("Usage : TracingTest platform_file");
+ Msg.info("example : TracingTest ../platforms/platform.xml");
System.exit(1);
}
/* construct the platform and deploy the application */
Msg.createEnvironment(args[0]);
- Msg.deployApplication(args[1]);
+ new Sender("Jacquelin", "Sender", new String[] {"Boivin", "Marcel"}).start();
+ new Receiver ("Boivin", "Receiver", null).start();
+ new Receiver ("Marcel", "Receiver", null).start();
/* Initialize some state for the hosts */
Trace.hostStateDeclare ("PM_STATE");
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package tracing;
+package trace.pingpong;
import org.simgrid.msg.NativeException;
import org.simgrid.msg.Task;
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package tracing;
+package trace.pingpong;
import org.simgrid.msg.Host;
import org.simgrid.msg.Msg;
import org.simgrid.msg.MsgException;
+import org.simgrid.msg.NativeException;
+import org.simgrid.msg.HostNotFoundException;
import org.simgrid.msg.Task;
import org.simgrid.msg.Process;
import org.simgrid.trace.Trace;
private final double commSizeLat = 1;
private final double commSizeBw = 100000000;
- public Receiver(Host host, String name, String[]args) {
- super(host,name,args);
+ public Receiver(String hostname, String name, String[]args) throws HostNotFoundException, NativeException{
+ super(hostname,name,args);
}
public void main(String[] args) throws MsgException {
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-package tracing;
+package trace.pingpong;
import org.simgrid.msg.Msg;
import org.simgrid.msg.Host;
import org.simgrid.msg.Task;
import org.simgrid.msg.Process;
import org.simgrid.msg.MsgException;
+import org.simgrid.msg.NativeException;
import org.simgrid.msg.HostNotFoundException;
import org.simgrid.trace.Trace;
private final double commSizeLat = 1;
private final double commSizeBw = 100000000;
- public Sender(Host host, String name, String[] args) {
- super(host,name,args);
+ public Sender(String hostname, String name, String[] args) throws HostNotFoundException, NativeException {
+ super(hostname,name,args);
}
public void main(String[] args) throws MsgException {
--- /dev/null
+#! tesh
+
+! output sort 19
+
+$ java -classpath ${classpath:=.} trace/pingpong/Main ${srcdir:=.}/../platforms/platform.xml --cfg=tracing:yes --cfg=tracing/filename:simulation.trace --cfg=tracing/platform:yes
+> [0.000000] [jmsg/INFO] Using regular java threads.
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'simulation.trace'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
+> [4.474401] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
+> [Boivin:Receiver:(2) 0.000000] [jmsg/INFO] hello!
+> [Boivin:Receiver:(2) 0.000000] [jmsg/INFO] try to get a task
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] Got at time 1.0488818628325232
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] Was sent at time 0.0
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] Communication time : 1.0488818628325232
+> [Boivin:Receiver:(2) 1.048882] [jmsg/INFO] --- bw 9.533962169004269E7 ----
+> [Boivin:Receiver:(2) 2.097764] [jmsg/INFO] goodbye!
+> [Jacquelin:Sender:(1) 0.000000] [jmsg/INFO] hello !
+> [Jacquelin:Sender:(1) 0.000000] [jmsg/INFO] host count: 2
+> [Jacquelin:Sender:(1) 0.000000] [jmsg/INFO] sender time: 0.0
+> [Jacquelin:Sender:(1) 2.097764] [jmsg/INFO] Got at time 2.0977637256650463
+> [Jacquelin:Sender:(1) 2.097764] [jmsg/INFO] Was sent at time 0.0
+> [Jacquelin:Sender:(1) 2.097764] [jmsg/INFO] Communication time : 2.0977637256650463
+> [Jacquelin:Sender:(1) 2.097764] [jmsg/INFO] --- bw 4.7669810845021345E7 ----
+> [Jacquelin:Sender:(1) 2.097764] [jmsg/INFO] sender time: 2.0977637256650463
+> [Jacquelin:Sender:(1) 4.474401] [jmsg/INFO] Got at time 4.47440072325564
+> [Jacquelin:Sender:(1) 4.474401] [jmsg/INFO] Was sent at time 2.0977637256650463
+> [Jacquelin:Sender:(1) 4.474401] [jmsg/INFO] Communication time : 2.376636997590594
+> [Jacquelin:Sender:(1) 4.474401] [jmsg/INFO] --- bw 4.2076261583648995E7 ----
+> [Jacquelin:Sender:(1) 4.474401] [jmsg/INFO] goodbye!
+> [Marcel:Receiver:(3) 0.000000] [jmsg/INFO] hello!
+> [Marcel:Receiver:(3) 0.000000] [jmsg/INFO] try to get a task
+> [Marcel:Receiver:(3) 3.057925] [jmsg/INFO] Got at time 3.0579254576553434
+> [Marcel:Receiver:(3) 3.057925] [jmsg/INFO] Was sent at time 2.0977637256650463
+> [Marcel:Receiver:(3) 3.057925] [jmsg/INFO] Communication time : 0.9601617319902971
+> [Marcel:Receiver:(3) 3.057925] [jmsg/INFO] --- bw 1.0414912057858452E8 ----
+> [Marcel:Receiver:(3) 4.474401] [jmsg/INFO] goodbye!
+
+$ rm -rf simulation.trace
+++ /dev/null
-set(example java_tracing)
-set(sources ${CMAKE_CURRENT_SOURCE_DIR}/PingPongTask.java ${CMAKE_CURRENT_SOURCE_DIR}/Receiver.java
- ${CMAKE_CURRENT_SOURCE_DIR}/Sender.java ${CMAKE_CURRENT_SOURCE_DIR}/TracingTest.java)
-
-if(enable_java)
- add_custom_command(
- COMMENT "Building ${example}..."
- OUTPUT ${example}_compiled
- DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR} -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
- COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
- COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
- )
- add_custom_target(${example} ALL DEPENDS ${example}_compiled)
- ADD_TESH(java-tracing --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/tracing/tracingPingPong.tesh)
-endif()
-
-set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/tracingPingPong.tesh PARENT_SCOPE)
-set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/tracingPingPongDeployment.xml PARENT_SCOPE)
-set(examples_src ${examples_src} ${sources} PARENT_SCOPE)
+++ /dev/null
-#! tesh
-
-! output sort 19
-
-$ java -classpath ${classpath:=.} tracing/TracingTest ${srcdir:=.}/../platforms/platform.xml ${srcdir:=.}/tracing/tracingPingPongDeployment.xml --cfg=tracing:yes --cfg=tracing/filename:simulation.trace --cfg=tracing/platform:yes
-> [0.000000] [jmsg/INFO] Using regular java threads.
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'simulation.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
-> [4.474401] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
-> [Boivin:tracing.Receiver:(2) 0.000000] [jmsg/INFO] hello!
-> [Boivin:tracing.Receiver:(2) 0.000000] [jmsg/INFO] try to get a task
-> [Boivin:tracing.Receiver:(2) 1.048882] [jmsg/INFO] Got at time 1.0488818628325232
-> [Boivin:tracing.Receiver:(2) 1.048882] [jmsg/INFO] Was sent at time 0.0
-> [Boivin:tracing.Receiver:(2) 1.048882] [jmsg/INFO] Communication time : 1.0488818628325232
-> [Boivin:tracing.Receiver:(2) 1.048882] [jmsg/INFO] --- bw 9.533962169004269E7 ----
-> [Boivin:tracing.Receiver:(2) 2.097764] [jmsg/INFO] goodbye!
-> [Jacquelin:tracing.Sender:(1) 0.000000] [jmsg/INFO] hello !
-> [Jacquelin:tracing.Sender:(1) 0.000000] [jmsg/INFO] host count: 2
-> [Jacquelin:tracing.Sender:(1) 0.000000] [jmsg/INFO] sender time: 0.0
-> [Jacquelin:tracing.Sender:(1) 2.097764] [jmsg/INFO] Got at time 2.0977637256650463
-> [Jacquelin:tracing.Sender:(1) 2.097764] [jmsg/INFO] Was sent at time 0.0
-> [Jacquelin:tracing.Sender:(1) 2.097764] [jmsg/INFO] Communication time : 2.0977637256650463
-> [Jacquelin:tracing.Sender:(1) 2.097764] [jmsg/INFO] --- bw 4.7669810845021345E7 ----
-> [Jacquelin:tracing.Sender:(1) 2.097764] [jmsg/INFO] sender time: 2.0977637256650463
-> [Jacquelin:tracing.Sender:(1) 4.474401] [jmsg/INFO] Got at time 4.47440072325564
-> [Jacquelin:tracing.Sender:(1) 4.474401] [jmsg/INFO] Was sent at time 2.0977637256650463
-> [Jacquelin:tracing.Sender:(1) 4.474401] [jmsg/INFO] Communication time : 2.376636997590594
-> [Jacquelin:tracing.Sender:(1) 4.474401] [jmsg/INFO] --- bw 4.2076261583648995E7 ----
-> [Jacquelin:tracing.Sender:(1) 4.474401] [jmsg/INFO] goodbye!
-> [Marcel:tracing.Receiver:(3) 0.000000] [jmsg/INFO] hello!
-> [Marcel:tracing.Receiver:(3) 0.000000] [jmsg/INFO] try to get a task
-> [Marcel:tracing.Receiver:(3) 3.057925] [jmsg/INFO] Got at time 3.0579254576553434
-> [Marcel:tracing.Receiver:(3) 3.057925] [jmsg/INFO] Was sent at time 2.0977637256650463
-> [Marcel:tracing.Receiver:(3) 3.057925] [jmsg/INFO] Communication time : 0.9601617319902971
-> [Marcel:tracing.Receiver:(3) 3.057925] [jmsg/INFO] --- bw 1.0414912057858452E8 ----
-> [Marcel:tracing.Receiver:(3) 4.474401] [jmsg/INFO] goodbye!
-
-$ rm -rf simulation.trace
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <process host="Jacquelin" function="tracing.Sender">
- <argument value="Boivin"/>
- <argument value="Marcel"/>
- </process>
- <process host="Boivin" function="tracing.Receiver"/>
- <process host="Marcel" function="tracing.Receiver"/>
-</platform>
foreach(x actions-mpi actions-storage async-wait async-waitall async-waitany dht-chord dht-pastry exception
energy-consumption energy-onoff energy-pstate energy-ptask energy-vm failures io-file io-file-unlink io-remote
- io-storage masterslave masterslave-mailbox pmm priority process-kill process-migration process-suspend
+ io-storage masterworker masterworker-mailbox pmm task-priority process-kill process-migration process-suspend
properties sendrecv set-maestro process-startkilltime synchro token_ring trace-categories
- trace-link-srcdst-user-variables trace-link-user-variables trace-masterslave trace-platform
+ trace-link-srcdst-user-variables trace-link-user-variables trace-masterworker trace-platform
trace-process-migration trace-simple trace-user-variables)
add_executable (${x} ${x}/${x}.c)
target_link_libraries(${x} simgrid)
endforeach()
foreach (file actions-mpi actions-storage async-wait async-waitall async-waitany bittorrent chainsend dht-chord
- dht-kademlia dht-pastry io-remote masterslave masterslave-mailbox priority properties sendrecv set-maestro)
+ dht-kademlia dht-pastry io-remote masterworker masterworker-mailbox properties sendrecv set-maestro
+ task-priority)
set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/${file}/${file}_d.xml)
endforeach()
set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/bittorrent/bittorrent.tesh
${CMAKE_CURRENT_SOURCE_DIR}/chainsend/chainsend.tesh
${CMAKE_CURRENT_SOURCE_DIR}/dht-kademlia/dht-kademlia.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/masterslave/masterslave_cpu_ti.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/masterslave-mailbox/masterslave-mailbox-multicore.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/masterslave-mailbox/masterslave-mailbox-vivaldi.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/masterworker/masterworker_cpu_ti.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/masterworker-mailbox/masterworker-mailbox-multicore.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/masterworker-mailbox/masterworker-mailbox-vivaldi.tesh
${CMAKE_CURRENT_SOURCE_DIR}/ns3/ns3.tesh PARENT_SCOPE)
set(xml_files ${xml_files} ${CMAKE_CURRENT_SOURCE_DIR}/actions-mpi/actions-mpi_split_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/async-wait/async-wait2_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/async-wait/async-wait3_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/async-wait/async-wait4_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/energy-onoff/platform_onoff.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/masterslave-mailbox/masterslave-mailbox-multicore_d.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/masterslave-mailbox/masterslave-mailbox-vivaldi_d.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/masterworker-mailbox/masterworker-mailbox-multicore_d.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/masterworker-mailbox/masterworker-mailbox-vivaldi_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/ns3/3hosts_2links_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/ns3/3links-timer_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/ns3/3links_d.xml
${CMAKE_CURRENT_SOURCE_DIR}/process-startkilltime/start_kill_d.xml PARENT_SCOPE)
foreach(x actions-mpi actions-storage async-wait async-waitall async-waitany bittorrent chainsend dht-chord dht-kademlia
- failures io-file io-file-unlink io-remote io-storage masterslave masterslave-mailbox priority process-kill
+ failures io-file io-file-unlink io-remote io-storage masterworker masterworker-mailbox task-priority process-kill
process-migration process-suspend properties sendrecv synchro process-startkilltime token_ring)
ADD_TESH_FACTORIES(msg-${x} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/${x} ${x}.tesh)
endforeach()
ADD_TESH_FACTORIES(msg-energy-${example} "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy-${example}/energy-${example}.tesh)
endforeach()
-foreach (x categories link-srcdst-user-variables link-user-variables masterslave platform process-migration simple user-variables)
+foreach (x categories link-srcdst-user-variables link-user-variables masterworker platform process-migration simple user-variables)
ADD_TESH(msg-trace-${x} --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/trace-${x} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/trace-${x} trace-${x}.tesh)
endforeach()
ADD_TESH_FACTORIES(msg-energy-ptask "thread;ucontext;raw" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy-ptask/energy-ptask.tesh)
ADD_TESH_FACTORIES(msg-set-maestro "thread" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/set-maestro/set-maestro.tesh)
-ADD_TESH_FACTORIES(msg-masterslave-mailbox-multicore "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave-mailbox/masterslave-mailbox-multicore.tesh)
-ADD_TESH_FACTORIES(msg-masterslave-mailbox-vivaldi "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave-mailbox/masterslave-mailbox-vivaldi.tesh)
+ADD_TESH_FACTORIES(msg-masterworker-mailbox-multicore "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterworker-mailbox/masterworker-mailbox-multicore.tesh)
+ADD_TESH_FACTORIES(msg-masterworker-mailbox-vivaldi "thread;ucontext;raw;boost" --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterworker-mailbox/masterworker-mailbox-vivaldi.tesh)
# Weird issue with this one ...
-#ADD_TESH_FACTORIES(msg-masterslave-cpu-ti "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterslave --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave masterslave_cpu_ti.tesh)
+#ADD_TESH_FACTORIES(msg-masterworker-cpu-ti "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterworker --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/msg/masterworker masterworker_cpu_ti.tesh)
ADD_TESH(msg-pmm --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/pmm/pmm.tesh)
/** @addtogroup MSG_examples
*
- * - <b>cloud/masterslave_virtual_machines.c: Master/workers
+ * - <b>cloud/master_worker_vm.c: Master/workers
* example on a cloud</b>. The classical example revisited to demonstrate the use of virtual machines.
*/
#! ./tesh
-p Testing the Cloud API with a simple masterslave
+p Testing the Cloud API with a simple master/workers
$ $SG_TEST_EXENV ${bindir:=.}/master_worker_vm$EXEEXT --log=no_loc ${srcdir:=.}/../../platforms/platform.xml
> [Jacquelin:master:(1) 0.000000] [msg_test/INFO] # Launch 2 VMs
static int runner(int argc, char *argv[])
{
/* Retrieve the list of all hosts as an array of hosts */
- xbt_dynar_t slaves_dynar = MSG_hosts_as_dynar();
- int slaves_count = xbt_dynar_length(slaves_dynar);
- msg_host_t *slaves = xbt_dynar_to_array(slaves_dynar);
+ int hosts_count = MSG_get_host_number();
+ msg_host_t *hosts = xbt_dynar_to_array(MSG_hosts_as_dynar());
XBT_INFO("First, build a classical parallel task, with 1 Gflop to execute on each node, "
"and 10MB to exchange between each pair");
- double *computation_amounts = xbt_new0(double, slaves_count);
- double *communication_amounts = xbt_new0(double, slaves_count * slaves_count);
+ double *computation_amounts = xbt_new0(double, hosts_count);
+ double *communication_amounts = xbt_new0(double, hosts_count * hosts_count);
- for (int i = 0; i < slaves_count; i++)
+ for (int i = 0; i < hosts_count; i++)
computation_amounts[i] = 1e9; // 1 Gflop
- for (int i = 0; i < slaves_count; i++)
- for (int j = i + 1; j < slaves_count; j++)
- communication_amounts[i * slaves_count + j] = 1e7; // 10 MB
+ for (int i = 0; i < hosts_count; i++)
+ for (int j = i + 1; j < hosts_count; j++)
+ communication_amounts[i * hosts_count + j] = 1e7; // 10 MB
msg_task_t ptask =
- MSG_parallel_task_create("parallel task", slaves_count, slaves, computation_amounts, communication_amounts, NULL);
+ MSG_parallel_task_create("parallel task", hosts_count, hosts, computation_amounts, communication_amounts, NULL);
MSG_parallel_task_execute(ptask);
MSG_task_destroy(ptask);
/* The arrays communication_amounts and computation_amounts are not to be freed manually */
XBT_INFO("Then, build a parallel task involving only computations and no communication (1 Gflop per node)");
- computation_amounts = xbt_new0(double, slaves_count);
- for (int i = 0; i < slaves_count; i++)
+ computation_amounts = xbt_new0(double, hosts_count);
+ for (int i = 0; i < hosts_count; i++)
computation_amounts[i] = 1e9; // 1 Gflop
- ptask =
- MSG_parallel_task_create("parallel exec", slaves_count, slaves, computation_amounts, NULL/* no comm */, NULL);
+ ptask = MSG_parallel_task_create("parallel exec", hosts_count, hosts, computation_amounts, NULL/* no comm */, NULL);
MSG_parallel_task_execute(ptask);
MSG_task_destroy(ptask);
- XBT_INFO("Finally, trick the ptask to do a 'remote execution', on host %s", MSG_host_get_name(slaves[1]));
+ XBT_INFO("Finally, trick the ptask to do a 'remote execution', on host %s", MSG_host_get_name(hosts[1]));
computation_amounts = xbt_new0(double, 1);
computation_amounts[0] = 1e9; // 1 Gflop
msg_host_t *remote = xbt_new(msg_host_t,1);
- remote[0] = slaves[1];
+ remote[0] = hosts[1];
ptask = MSG_parallel_task_create("remote exec", 1, remote, computation_amounts, NULL/* no comm */, NULL);
MSG_parallel_task_execute(ptask);
MSG_task_destroy(ptask);
free(remote);
XBT_INFO("Goodbye now!");
- free(slaves);
+ free(hosts);
return 0;
}
static int master(int argc, char *argv[])
{
- int slaves_count = 0;
- msg_host_t *slaves = NULL;
+ int workers_count = 0;
+ msg_host_t *workers = NULL;
int number_of_tasks = 0;
double task_comp_size = 0;
double task_comm_size = 0;
xbt_assert(read, "Invalid argument %s\n", argv[3]);
{ /* Process organization */
- slaves_count = argc - 4;
- slaves = xbt_new0(msg_host_t, slaves_count);
+ workers_count = argc - 4;
+ workers = xbt_new0(msg_host_t, workers_count);
for (i = 4; i < argc; i++) {
- slaves[i - 4] = MSG_host_by_name(argv[i]);
- if (slaves[i - 4] == NULL) {
+ workers[i - 4] = MSG_host_by_name(argv[i]);
+ if (workers[i - 4] == NULL) {
XBT_INFO("Unknown host %s. Stopping Now! ", argv[i]);
abort();
}
}
}
- XBT_INFO("Got %d slave(s) :", slaves_count);
- for (i = 0; i < slaves_count; i++)
- XBT_INFO("%s", MSG_host_get_name(slaves[i]));
+ XBT_INFO("Got %d worker(s) :", workers_count);
+ for (i = 0; i < workers_count; i++)
+ XBT_INFO("%s", MSG_host_get_name(workers[i]));
XBT_INFO("Got %d task to process :", number_of_tasks);
msg_task_t task = MSG_task_create("Task", task_comp_size, task_comm_size, xbt_new0(double, 1));
*((double *) task->data) = MSG_get_clock();
- msg_error_t a = MSG_task_send_with_timeout(task,MSG_host_get_name(slaves[i % slaves_count]),10.0);
+ msg_error_t a = MSG_task_send_with_timeout(task,MSG_host_get_name(workers[i % workers_count]),10.0);
if (a == MSG_OK) {
XBT_INFO("Send completed");
XBT_INFO("Gloups. The cpu on which I'm running just turned off!. See you!");
free(task->data);
MSG_task_destroy(task);
- free(slaves);
+ free(workers);
return 0;
} else if (a == MSG_TRANSFER_FAILURE) {
XBT_INFO("Mmh. Something went wrong with '%s'. Nevermind. Let's keep going!",
- MSG_host_get_name(slaves[i % slaves_count]));
+ MSG_host_get_name(workers[i % workers_count]));
free(task->data);
MSG_task_destroy(task);
} else if (a == MSG_TIMEOUT) {
XBT_INFO ("Mmh. Got timeouted while speaking to '%s'. Nevermind. Let's keep going!",
- MSG_host_get_name(slaves[i % slaves_count]));
+ MSG_host_get_name(workers[i % workers_count]));
free(task->data);
MSG_task_destroy(task);
} else {
}
XBT_INFO("All tasks have been dispatched. Let's tell everybody the computation is over.");
- for (i = 0; i < slaves_count; i++) {
+ for (i = 0; i < workers_count; i++) {
msg_task_t task = MSG_task_create("finalize", 0, 0, FINALIZE);
- int a = MSG_task_send_with_timeout(task,MSG_host_get_name(slaves[i]),1.0);
+ int a = MSG_task_send_with_timeout(task,MSG_host_get_name(workers[i]),1.0);
if (a == MSG_OK)
continue;
if (a == MSG_HOST_FAILURE) {
XBT_INFO("Gloups. The cpu on which I'm running just turned off!. See you!");
MSG_task_destroy(task);
- free(slaves);
+ free(workers);
return 0;
} else if (a == MSG_TRANSFER_FAILURE) {
- XBT_INFO("Mmh. Can't reach '%s'! Nevermind. Let's keep going!", MSG_host_get_name(slaves[i]));
+ XBT_INFO("Mmh. Can't reach '%s'! Nevermind. Let's keep going!", MSG_host_get_name(workers[i]));
MSG_task_destroy(task);
} else if (a == MSG_TIMEOUT) {
XBT_INFO("Mmh. Got timeouted while speaking to '%s'. Nevermind. Let's keep going!",
- MSG_host_get_name(slaves[i % slaves_count]));
+ MSG_host_get_name(workers[i % workers_count]));
MSG_task_destroy(task);
} else {
XBT_INFO("Hey ?! What's up ? ");
- xbt_die("Unexpected behavior with '%s': %d", MSG_host_get_name(slaves[i]), a);
+ xbt_die("Unexpected behavior with '%s': %d", MSG_host_get_name(workers[i]), a);
}
}
XBT_INFO("Goodbye now!");
- free(slaves);
+ free(workers);
return 0;
}
-static int slave(int argc, char *argv[])
+static int worker(int argc, char *argv[])
{
while (1) {
msg_task_t task = NULL;
MSG_create_environment(argv[1]);
MSG_function_register("master", master);
- MSG_function_register("slave", slave);
+ MSG_function_register("worker", worker);
MSG_launch_application(argv[2]);
res = MSG_main();
#! ./tesh
-p Testing a simple master/slave example application handling failures TCP crosstraffic DISABLED
+p Testing a simple master/worker example application handling failures TCP crosstraffic DISABLED
! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/../msg/masterslave/masterslave_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Cannot launch process 'slave' on failed host 'Fafard'
-> [ 0.000000] (1:master@Tremblay) Got 5 slave(s) :
+$ $SG_TEST_EXENV ${bindir:=.}/failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/../msg/masterworker/masterworker_d.xml --cfg=path:${srcdir} --cfg=network/crosstraffic:0 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
+> [ 0.000000] (1:master@Tremblay) Got 5 worker(s) :
> [ 0.000000] (1:master@Tremblay) Jupiter
> [ 0.000000] (1:master@Tremblay) Fafard
> [ 0.000000] (1:master@Tremblay) Ginette
> [ 0.000000] (1:master@Tremblay) Got 20 task to process :
> [ 1.000000] (0:maestro@) Restart processes on host: Fafard
> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'Jupiter'. Nevermind. Let's keep going!
-> [ 1.000000] (3:slave@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 2.000000] (0:maestro@) Restart processes on host: Jupiter
> [ 11.000000] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 12.030928] (1:master@Tremblay) Send completed
-> [ 12.030928] (4:slave@Ginette) Received "Task"
-> [ 12.030928] (4:slave@Ginette) Communication time : "1.030928"
-> [ 12.030928] (4:slave@Ginette) Processing "Task"
+> [ 12.030928] (4:worker@Ginette) Received "Task"
+> [ 12.030928] (4:worker@Ginette) Communication time : "1.030928"
+> [ 12.030928] (4:worker@Ginette) Processing "Task"
> [ 13.061856] (1:master@Tremblay) Send completed
-> [ 13.061856] (5:slave@Bourassa) Received "Task"
-> [ 13.061856] (5:slave@Bourassa) Communication time : "1.030928"
-> [ 13.061856] (5:slave@Bourassa) Processing "Task"
+> [ 13.061856] (5:worker@Bourassa) Received "Task"
+> [ 13.061856] (5:worker@Bourassa) Communication time : "1.030928"
+> [ 13.061856] (5:worker@Bourassa) Processing "Task"
> [ 13.072165] (1:master@Tremblay) Send completed
-> [ 13.072165] (2:slave@Tremblay) Received "Task"
-> [ 13.072165] (2:slave@Tremblay) Communication time : "0.010309"
-> [ 13.072165] (2:slave@Tremblay) Processing "Task"
-> [ 14.030928] (4:slave@Ginette) "Task" done
+> [ 13.072165] (2:worker@Tremblay) Received "Task"
+> [ 13.072165] (2:worker@Tremblay) Communication time : "0.010309"
+> [ 13.072165] (2:worker@Tremblay) Processing "Task"
+> [ 14.030928] (4:worker@Ginette) "Task" done
> [ 14.103093] (1:master@Tremblay) Send completed
-> [ 14.103093] (6:slave@Jupiter) Received "Task"
-> [ 14.103093] (6:slave@Jupiter) Communication time : "1.030928"
-> [ 14.103093] (6:slave@Jupiter) Processing "Task"
-> [ 15.061856] (5:slave@Bourassa) "Task" done
-> [ 15.072165] (2:slave@Tremblay) "Task" done
-> [ 16.103093] (6:slave@Jupiter) "Task" done
+> [ 14.103093] (6:worker@Jupiter) Received "Task"
+> [ 14.103093] (6:worker@Jupiter) Communication time : "1.030928"
+> [ 14.103093] (6:worker@Jupiter) Processing "Task"
+> [ 15.061856] (5:worker@Bourassa) "Task" done
+> [ 15.072165] (2:worker@Tremblay) "Task" done
+> [ 16.103093] (6:worker@Jupiter) "Task" done
> [ 24.103093] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 24.103093] (1:master@Tremblay) Mmh. Something went wrong with 'Ginette'. Nevermind. Let's keep going!
-> [ 24.103093] (4:slave@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 24.103093] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
> [ 25.134021] (1:master@Tremblay) Send completed
-> [ 25.134021] (5:slave@Bourassa) Received "Task"
-> [ 25.134021] (5:slave@Bourassa) Communication time : "1.030928"
-> [ 25.134021] (5:slave@Bourassa) Processing "Task"
+> [ 25.134021] (5:worker@Bourassa) Received "Task"
+> [ 25.134021] (5:worker@Bourassa) Communication time : "1.030928"
+> [ 25.134021] (5:worker@Bourassa) Processing "Task"
> [ 25.144330] (1:master@Tremblay) Send completed
-> [ 25.144330] (2:slave@Tremblay) Received "Task"
-> [ 25.144330] (2:slave@Tremblay) Communication time : "0.010309"
-> [ 25.144330] (2:slave@Tremblay) Processing "Task"
+> [ 25.144330] (2:worker@Tremblay) Received "Task"
+> [ 25.144330] (2:worker@Tremblay) Communication time : "0.010309"
+> [ 25.144330] (2:worker@Tremblay) Processing "Task"
> [ 26.175258] (1:master@Tremblay) Send completed
-> [ 26.175258] (6:slave@Jupiter) Received "Task"
-> [ 26.175258] (6:slave@Jupiter) Communication time : "1.030928"
-> [ 26.175258] (6:slave@Jupiter) Processing "Task"
-> [ 27.134021] (5:slave@Bourassa) "Task" done
-> [ 27.144330] (2:slave@Tremblay) "Task" done
-> [ 28.175258] (6:slave@Jupiter) "Task" done
+> [ 26.175258] (6:worker@Jupiter) Received "Task"
+> [ 26.175258] (6:worker@Jupiter) Communication time : "1.030928"
+> [ 26.175258] (6:worker@Jupiter) Processing "Task"
+> [ 27.134021] (5:worker@Bourassa) "Task" done
+> [ 27.144330] (2:worker@Tremblay) "Task" done
+> [ 28.175258] (6:worker@Jupiter) "Task" done
> [ 36.175258] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 37.206186] (1:master@Tremblay) Send completed
> [ 37.206186] (1:master@Tremblay) Mmh. Something went wrong with 'Bourassa'. Nevermind. Let's keep going!
-> [ 37.206186] (4:slave@Ginette) Received "Task"
-> [ 37.206186] (4:slave@Ginette) Communication time : "1.030928"
-> [ 37.206186] (4:slave@Ginette) Processing "Task"
-> [ 37.206186] (5:slave@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 37.206186] (4:worker@Ginette) Received "Task"
+> [ 37.206186] (4:worker@Ginette) Communication time : "1.030928"
+> [ 37.206186] (4:worker@Ginette) Processing "Task"
+> [ 37.206186] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
> [ 37.216495] (1:master@Tremblay) Send completed
-> [ 37.216495] (2:slave@Tremblay) Received "Task"
-> [ 37.216495] (2:slave@Tremblay) Communication time : "0.010309"
-> [ 37.216495] (2:slave@Tremblay) Processing "Task"
+> [ 37.216495] (2:worker@Tremblay) Received "Task"
+> [ 37.216495] (2:worker@Tremblay) Communication time : "0.010309"
+> [ 37.216495] (2:worker@Tremblay) Processing "Task"
> [ 38.247423] (1:master@Tremblay) Send completed
-> [ 38.247423] (6:slave@Jupiter) Received "Task"
-> [ 38.247423] (6:slave@Jupiter) Communication time : "1.030928"
-> [ 38.247423] (6:slave@Jupiter) Processing "Task"
-> [ 39.206186] (4:slave@Ginette) "Task" done
-> [ 39.216495] (2:slave@Tremblay) "Task" done
-> [ 40.247423] (6:slave@Jupiter) "Task" done
+> [ 38.247423] (6:worker@Jupiter) Received "Task"
+> [ 38.247423] (6:worker@Jupiter) Communication time : "1.030928"
+> [ 38.247423] (6:worker@Jupiter) Processing "Task"
+> [ 39.206186] (4:worker@Ginette) "Task" done
+> [ 39.216495] (2:worker@Tremblay) "Task" done
+> [ 40.247423] (6:worker@Jupiter) "Task" done
> [ 48.247423] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 49.278351] (1:master@Tremblay) Send completed
-> [ 49.278351] (4:slave@Ginette) Received "Task"
-> [ 49.278351] (4:slave@Ginette) Communication time : "1.030928"
-> [ 49.278351] (4:slave@Ginette) Processing "Task"
-> [ 50.000000] (4:slave@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 49.278351] (4:worker@Ginette) Received "Task"
+> [ 49.278351] (4:worker@Ginette) Communication time : "1.030928"
+> [ 49.278351] (4:worker@Ginette) Processing "Task"
+> [ 50.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 50.309278] (1:master@Tremblay) Send completed
-> [ 50.309278] (5:slave@Bourassa) Received "Task"
-> [ 50.309278] (5:slave@Bourassa) Communication time : "1.030928"
-> [ 50.309278] (5:slave@Bourassa) Processing "Task"
+> [ 50.309278] (5:worker@Bourassa) Received "Task"
+> [ 50.309278] (5:worker@Bourassa) Communication time : "1.030928"
+> [ 50.309278] (5:worker@Bourassa) Processing "Task"
> [ 50.319588] (1:master@Tremblay) Send completed
> [ 50.319588] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 50.319588] (2:slave@Tremblay) Received "Task"
-> [ 50.319588] (2:slave@Tremblay) Communication time : "0.010309"
-> [ 50.319588] (2:slave@Tremblay) Processing "Task"
-> [ 50.319588] (6:slave@Jupiter) Received "finalize"
-> [ 50.319588] (6:slave@Jupiter) I'm done. See you!
+> [ 50.319588] (2:worker@Tremblay) Received "Task"
+> [ 50.319588] (2:worker@Tremblay) Communication time : "0.010309"
+> [ 50.319588] (2:worker@Tremblay) Processing "Task"
+> [ 50.319588] (6:worker@Jupiter) Received "finalize"
+> [ 50.319588] (6:worker@Jupiter) I'm done. See you!
> [ 51.319588] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [ 52.309278] (5:slave@Bourassa) "Task" done
+> [ 52.309278] (5:worker@Bourassa) "Task" done
> [ 52.319588] (0:maestro@) Simulation time 52.3196
> [ 52.319588] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Ginette'. Nevermind. Let's keep going!
> [ 52.319588] (1:master@Tremblay) Goodbye now!
-> [ 52.319588] (2:slave@Tremblay) "Task" done
-> [ 52.319588] (2:slave@Tremblay) Received "finalize"
-> [ 52.319588] (2:slave@Tremblay) I'm done. See you!
-> [ 52.319588] (5:slave@Bourassa) Received "finalize"
-> [ 52.319588] (5:slave@Bourassa) I'm done. See you!
+> [ 52.319588] (2:worker@Tremblay) "Task" done
+> [ 52.319588] (2:worker@Tremblay) Received "finalize"
+> [ 52.319588] (2:worker@Tremblay) I'm done. See you!
+> [ 52.319588] (5:worker@Bourassa) Received "finalize"
+> [ 52.319588] (5:worker@Bourassa) I'm done. See you!
-p Testing a simple master/slave example application handling failures. TCP crosstraffic ENABLED
+p Testing a simple master/worker example application handling failures. TCP crosstraffic ENABLED
! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/../msg/masterslave/masterslave_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Cannot launch process 'slave' on failed host 'Fafard'
-> [ 0.000000] (1:master@Tremblay) Got 5 slave(s) :
+$ $SG_TEST_EXENV ${bindir:=.}/failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/../msg/masterworker/masterworker_d.xml --cfg=path:${srcdir} "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
+> [ 0.000000] (1:master@Tremblay) Got 5 worker(s) :
> [ 0.000000] (1:master@Tremblay) Jupiter
> [ 0.000000] (1:master@Tremblay) Fafard
> [ 0.000000] (1:master@Tremblay) Ginette
> [ 0.000000] (1:master@Tremblay) Got 20 task to process :
> [ 1.000000] (0:maestro@) Restart processes on host: Fafard
> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'Jupiter'. Nevermind. Let's keep going!
-> [ 1.000000] (3:slave@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 2.000000] (0:maestro@) Restart processes on host: Jupiter
> [ 11.000000] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 12.082474] (1:master@Tremblay) Send completed
-> [ 12.082474] (4:slave@Ginette) Received "Task"
-> [ 12.082474] (4:slave@Ginette) Communication time : "1.082474"
-> [ 12.082474] (4:slave@Ginette) Processing "Task"
+> [ 12.082474] (4:worker@Ginette) Received "Task"
+> [ 12.082474] (4:worker@Ginette) Communication time : "1.082474"
+> [ 12.082474] (4:worker@Ginette) Processing "Task"
> [ 13.164948] (1:master@Tremblay) Send completed
-> [ 13.164948] (5:slave@Bourassa) Received "Task"
-> [ 13.164948] (5:slave@Bourassa) Communication time : "1.082474"
-> [ 13.164948] (5:slave@Bourassa) Processing "Task"
+> [ 13.164948] (5:worker@Bourassa) Received "Task"
+> [ 13.164948] (5:worker@Bourassa) Communication time : "1.082474"
+> [ 13.164948] (5:worker@Bourassa) Processing "Task"
> [ 13.175773] (1:master@Tremblay) Send completed
-> [ 13.175773] (2:slave@Tremblay) Received "Task"
-> [ 13.175773] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 13.175773] (2:slave@Tremblay) Processing "Task"
-> [ 14.082474] (4:slave@Ginette) "Task" done
+> [ 13.175773] (2:worker@Tremblay) Received "Task"
+> [ 13.175773] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 13.175773] (2:worker@Tremblay) Processing "Task"
+> [ 14.082474] (4:worker@Ginette) "Task" done
> [ 14.258247] (1:master@Tremblay) Send completed
-> [ 14.258247] (6:slave@Jupiter) Received "Task"
-> [ 14.258247] (6:slave@Jupiter) Communication time : "1.082474"
-> [ 14.258247] (6:slave@Jupiter) Processing "Task"
-> [ 15.164948] (5:slave@Bourassa) "Task" done
-> [ 15.175773] (2:slave@Tremblay) "Task" done
-> [ 16.258247] (6:slave@Jupiter) "Task" done
+> [ 14.258247] (6:worker@Jupiter) Received "Task"
+> [ 14.258247] (6:worker@Jupiter) Communication time : "1.082474"
+> [ 14.258247] (6:worker@Jupiter) Processing "Task"
+> [ 15.164948] (5:worker@Bourassa) "Task" done
+> [ 15.175773] (2:worker@Tremblay) "Task" done
+> [ 16.258247] (6:worker@Jupiter) "Task" done
> [ 24.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 24.258247] (1:master@Tremblay) Mmh. Something went wrong with 'Ginette'. Nevermind. Let's keep going!
-> [ 24.258247] (4:slave@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 24.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
> [ 25.340722] (1:master@Tremblay) Send completed
-> [ 25.340722] (5:slave@Bourassa) Received "Task"
-> [ 25.340722] (5:slave@Bourassa) Communication time : "1.082474"
-> [ 25.340722] (5:slave@Bourassa) Processing "Task"
+> [ 25.340722] (5:worker@Bourassa) Received "Task"
+> [ 25.340722] (5:worker@Bourassa) Communication time : "1.082474"
+> [ 25.340722] (5:worker@Bourassa) Processing "Task"
> [ 25.351546] (1:master@Tremblay) Send completed
-> [ 25.351546] (2:slave@Tremblay) Received "Task"
-> [ 25.351546] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 25.351546] (2:slave@Tremblay) Processing "Task"
+> [ 25.351546] (2:worker@Tremblay) Received "Task"
+> [ 25.351546] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 25.351546] (2:worker@Tremblay) Processing "Task"
> [ 26.434021] (1:master@Tremblay) Send completed
-> [ 26.434021] (6:slave@Jupiter) Received "Task"
-> [ 26.434021] (6:slave@Jupiter) Communication time : "1.082474"
-> [ 26.434021] (6:slave@Jupiter) Processing "Task"
-> [ 27.340722] (5:slave@Bourassa) "Task" done
-> [ 27.351546] (2:slave@Tremblay) "Task" done
-> [ 28.434021] (6:slave@Jupiter) "Task" done
+> [ 26.434021] (6:worker@Jupiter) Received "Task"
+> [ 26.434021] (6:worker@Jupiter) Communication time : "1.082474"
+> [ 26.434021] (6:worker@Jupiter) Processing "Task"
+> [ 27.340722] (5:worker@Bourassa) "Task" done
+> [ 27.351546] (2:worker@Tremblay) "Task" done
+> [ 28.434021] (6:worker@Jupiter) "Task" done
> [ 36.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 37.516495] (1:master@Tremblay) Send completed
> [ 37.516495] (1:master@Tremblay) Mmh. Something went wrong with 'Bourassa'. Nevermind. Let's keep going!
-> [ 37.516495] (4:slave@Ginette) Received "Task"
-> [ 37.516495] (4:slave@Ginette) Communication time : "1.082474"
-> [ 37.516495] (4:slave@Ginette) Processing "Task"
-> [ 37.516495] (5:slave@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 37.516495] (4:worker@Ginette) Received "Task"
+> [ 37.516495] (4:worker@Ginette) Communication time : "1.082474"
+> [ 37.516495] (4:worker@Ginette) Processing "Task"
+> [ 37.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
> [ 37.527320] (1:master@Tremblay) Send completed
-> [ 37.527320] (2:slave@Tremblay) Received "Task"
-> [ 37.527320] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 37.527320] (2:slave@Tremblay) Processing "Task"
+> [ 37.527320] (2:worker@Tremblay) Received "Task"
+> [ 37.527320] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 37.527320] (2:worker@Tremblay) Processing "Task"
> [ 38.609794] (1:master@Tremblay) Send completed
-> [ 38.609794] (6:slave@Jupiter) Received "Task"
-> [ 38.609794] (6:slave@Jupiter) Communication time : "1.082474"
-> [ 38.609794] (6:slave@Jupiter) Processing "Task"
-> [ 39.516495] (4:slave@Ginette) "Task" done
-> [ 39.527320] (2:slave@Tremblay) "Task" done
-> [ 40.609794] (6:slave@Jupiter) "Task" done
+> [ 38.609794] (6:worker@Jupiter) Received "Task"
+> [ 38.609794] (6:worker@Jupiter) Communication time : "1.082474"
+> [ 38.609794] (6:worker@Jupiter) Processing "Task"
+> [ 39.516495] (4:worker@Ginette) "Task" done
+> [ 39.527320] (2:worker@Tremblay) "Task" done
+> [ 40.609794] (6:worker@Jupiter) "Task" done
> [ 48.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 49.692268] (1:master@Tremblay) Send completed
-> [ 49.692268] (4:slave@Ginette) Received "Task"
-> [ 49.692268] (4:slave@Ginette) Communication time : "1.082474"
-> [ 49.692268] (4:slave@Ginette) Processing "Task"
-> [ 50.000000] (4:slave@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 49.692268] (4:worker@Ginette) Received "Task"
+> [ 49.692268] (4:worker@Ginette) Communication time : "1.082474"
+> [ 49.692268] (4:worker@Ginette) Processing "Task"
+> [ 50.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 50.774742] (1:master@Tremblay) Send completed
-> [ 50.774742] (5:slave@Bourassa) Received "Task"
-> [ 50.774742] (5:slave@Bourassa) Communication time : "1.082474"
-> [ 50.774742] (5:slave@Bourassa) Processing "Task"
+> [ 50.774742] (5:worker@Bourassa) Received "Task"
+> [ 50.774742] (5:worker@Bourassa) Communication time : "1.082474"
+> [ 50.774742] (5:worker@Bourassa) Processing "Task"
> [ 50.785567] (1:master@Tremblay) Send completed
> [ 50.785567] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 50.785567] (2:slave@Tremblay) Received "Task"
-> [ 50.785567] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 50.785567] (2:slave@Tremblay) Processing "Task"
-> [ 50.785567] (6:slave@Jupiter) Received "finalize"
-> [ 50.785567] (6:slave@Jupiter) I'm done. See you!
+> [ 50.785567] (2:worker@Tremblay) Received "Task"
+> [ 50.785567] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 50.785567] (2:worker@Tremblay) Processing "Task"
+> [ 50.785567] (6:worker@Jupiter) Received "finalize"
+> [ 50.785567] (6:worker@Jupiter) I'm done. See you!
> [ 51.785567] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [ 52.774742] (5:slave@Bourassa) "Task" done
+> [ 52.774742] (5:worker@Bourassa) "Task" done
> [ 52.785567] (0:maestro@) Simulation time 52.7856
> [ 52.785567] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Ginette'. Nevermind. Let's keep going!
> [ 52.785567] (1:master@Tremblay) Goodbye now!
-> [ 52.785567] (2:slave@Tremblay) "Task" done
-> [ 52.785567] (2:slave@Tremblay) Received "finalize"
-> [ 52.785567] (2:slave@Tremblay) I'm done. See you!
-> [ 52.785567] (5:slave@Bourassa) Received "finalize"
-> [ 52.785567] (5:slave@Bourassa) I'm done. See you!
+> [ 52.785567] (2:worker@Tremblay) "Task" done
+> [ 52.785567] (2:worker@Tremblay) Received "finalize"
+> [ 52.785567] (2:worker@Tremblay) I'm done. See you!
+> [ 52.785567] (5:worker@Bourassa) Received "finalize"
+> [ 52.785567] (5:worker@Bourassa) I'm done. See you!
-p Testing a simple master/slave example application handling failures. CPU_TI optimization enabled
+p Testing a simple master/worker example application handling failures. CPU_TI optimization enabled
! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/../msg/masterslave/masterslave_d.xml --cfg=path:${srcdir} -cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Cannot launch process 'slave' on failed host 'Fafard'
-> [ 0.000000] (1:master@Tremblay) Got 5 slave(s) :
+$ $SG_TEST_EXENV ${bindir:=.}/failures$EXEEXT --log=xbt_cfg.thres:critical --log=no_loc ${srcdir:=.}/small_platform_with_failures.xml ${srcdir:=.}/../msg/masterworker/masterworker_d.xml --cfg=path:${srcdir} -cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Cannot launch process 'worker' on failed host 'Fafard'
+> [ 0.000000] (1:master@Tremblay) Got 5 worker(s) :
> [ 0.000000] (1:master@Tremblay) Jupiter
> [ 0.000000] (1:master@Tremblay) Fafard
> [ 0.000000] (1:master@Tremblay) Ginette
> [ 0.000000] (1:master@Tremblay) Got 20 task to process :
> [ 1.000000] (0:maestro@) Restart processes on host: Fafard
> [ 1.000000] (1:master@Tremblay) Mmh. Something went wrong with 'Jupiter'. Nevermind. Let's keep going!
-> [ 1.000000] (3:slave@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 1.000000] (3:worker@Jupiter) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 2.000000] (0:maestro@) Restart processes on host: Jupiter
> [ 11.000000] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 12.082474] (1:master@Tremblay) Send completed
-> [ 12.082474] (4:slave@Ginette) Received "Task"
-> [ 12.082474] (4:slave@Ginette) Communication time : "1.082474"
-> [ 12.082474] (4:slave@Ginette) Processing "Task"
+> [ 12.082474] (4:worker@Ginette) Received "Task"
+> [ 12.082474] (4:worker@Ginette) Communication time : "1.082474"
+> [ 12.082474] (4:worker@Ginette) Processing "Task"
> [ 13.164948] (1:master@Tremblay) Send completed
-> [ 13.164948] (5:slave@Bourassa) Received "Task"
-> [ 13.164948] (5:slave@Bourassa) Communication time : "1.082474"
-> [ 13.164948] (5:slave@Bourassa) Processing "Task"
+> [ 13.164948] (5:worker@Bourassa) Received "Task"
+> [ 13.164948] (5:worker@Bourassa) Communication time : "1.082474"
+> [ 13.164948] (5:worker@Bourassa) Processing "Task"
> [ 13.175773] (1:master@Tremblay) Send completed
-> [ 13.175773] (2:slave@Tremblay) Received "Task"
-> [ 13.175773] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 13.175773] (2:slave@Tremblay) Processing "Task"
-> [ 14.082474] (4:slave@Ginette) "Task" done
+> [ 13.175773] (2:worker@Tremblay) Received "Task"
+> [ 13.175773] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 13.175773] (2:worker@Tremblay) Processing "Task"
+> [ 14.082474] (4:worker@Ginette) "Task" done
> [ 14.258247] (1:master@Tremblay) Send completed
-> [ 14.258247] (6:slave@Jupiter) Received "Task"
-> [ 14.258247] (6:slave@Jupiter) Communication time : "1.082474"
-> [ 14.258247] (6:slave@Jupiter) Processing "Task"
-> [ 15.164948] (5:slave@Bourassa) "Task" done
-> [ 15.175773] (2:slave@Tremblay) "Task" done
-> [ 16.258247] (6:slave@Jupiter) "Task" done
+> [ 14.258247] (6:worker@Jupiter) Received "Task"
+> [ 14.258247] (6:worker@Jupiter) Communication time : "1.082474"
+> [ 14.258247] (6:worker@Jupiter) Processing "Task"
+> [ 15.164948] (5:worker@Bourassa) "Task" done
+> [ 15.175773] (2:worker@Tremblay) "Task" done
+> [ 16.258247] (6:worker@Jupiter) "Task" done
> [ 24.258247] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 24.258247] (1:master@Tremblay) Mmh. Something went wrong with 'Ginette'. Nevermind. Let's keep going!
-> [ 24.258247] (4:slave@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 24.258247] (4:worker@Ginette) Mmh. Something went wrong. Nevermind. Let's keep going!
> [ 25.340722] (1:master@Tremblay) Send completed
-> [ 25.340722] (5:slave@Bourassa) Received "Task"
-> [ 25.340722] (5:slave@Bourassa) Communication time : "1.082474"
-> [ 25.340722] (5:slave@Bourassa) Processing "Task"
+> [ 25.340722] (5:worker@Bourassa) Received "Task"
+> [ 25.340722] (5:worker@Bourassa) Communication time : "1.082474"
+> [ 25.340722] (5:worker@Bourassa) Processing "Task"
> [ 25.351546] (1:master@Tremblay) Send completed
-> [ 25.351546] (2:slave@Tremblay) Received "Task"
-> [ 25.351546] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 25.351546] (2:slave@Tremblay) Processing "Task"
+> [ 25.351546] (2:worker@Tremblay) Received "Task"
+> [ 25.351546] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 25.351546] (2:worker@Tremblay) Processing "Task"
> [ 26.434021] (1:master@Tremblay) Send completed
-> [ 26.434021] (6:slave@Jupiter) Received "Task"
-> [ 26.434021] (6:slave@Jupiter) Communication time : "1.082474"
-> [ 26.434021] (6:slave@Jupiter) Processing "Task"
-> [ 27.340722] (5:slave@Bourassa) "Task" done
-> [ 27.351546] (2:slave@Tremblay) "Task" done
-> [ 28.434021] (6:slave@Jupiter) "Task" done
+> [ 26.434021] (6:worker@Jupiter) Received "Task"
+> [ 26.434021] (6:worker@Jupiter) Communication time : "1.082474"
+> [ 26.434021] (6:worker@Jupiter) Processing "Task"
+> [ 27.340722] (5:worker@Bourassa) "Task" done
+> [ 27.351546] (2:worker@Tremblay) "Task" done
+> [ 28.434021] (6:worker@Jupiter) "Task" done
> [ 36.434021] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 37.516495] (1:master@Tremblay) Send completed
> [ 37.516495] (1:master@Tremblay) Mmh. Something went wrong with 'Bourassa'. Nevermind. Let's keep going!
-> [ 37.516495] (4:slave@Ginette) Received "Task"
-> [ 37.516495] (4:slave@Ginette) Communication time : "1.082474"
-> [ 37.516495] (4:slave@Ginette) Processing "Task"
-> [ 37.516495] (5:slave@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
+> [ 37.516495] (4:worker@Ginette) Received "Task"
+> [ 37.516495] (4:worker@Ginette) Communication time : "1.082474"
+> [ 37.516495] (4:worker@Ginette) Processing "Task"
+> [ 37.516495] (5:worker@Bourassa) Mmh. Something went wrong. Nevermind. Let's keep going!
> [ 37.527320] (1:master@Tremblay) Send completed
-> [ 37.527320] (2:slave@Tremblay) Received "Task"
-> [ 37.527320] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 37.527320] (2:slave@Tremblay) Processing "Task"
+> [ 37.527320] (2:worker@Tremblay) Received "Task"
+> [ 37.527320] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 37.527320] (2:worker@Tremblay) Processing "Task"
> [ 38.609794] (1:master@Tremblay) Send completed
-> [ 38.609794] (6:slave@Jupiter) Received "Task"
-> [ 38.609794] (6:slave@Jupiter) Communication time : "1.082474"
-> [ 38.609794] (6:slave@Jupiter) Processing "Task"
-> [ 39.516495] (4:slave@Ginette) "Task" done
-> [ 39.527320] (2:slave@Tremblay) "Task" done
-> [ 40.609794] (6:slave@Jupiter) "Task" done
+> [ 38.609794] (6:worker@Jupiter) Received "Task"
+> [ 38.609794] (6:worker@Jupiter) Communication time : "1.082474"
+> [ 38.609794] (6:worker@Jupiter) Processing "Task"
+> [ 39.516495] (4:worker@Ginette) "Task" done
+> [ 39.527320] (2:worker@Tremblay) "Task" done
+> [ 40.609794] (6:worker@Jupiter) "Task" done
> [ 48.609794] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
> [ 49.692268] (1:master@Tremblay) Send completed
-> [ 49.692268] (4:slave@Ginette) Received "Task"
-> [ 49.692268] (4:slave@Ginette) Communication time : "1.082474"
-> [ 49.692268] (4:slave@Ginette) Processing "Task"
-> [ 50.000000] (4:slave@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
+> [ 49.692268] (4:worker@Ginette) Received "Task"
+> [ 49.692268] (4:worker@Ginette) Communication time : "1.082474"
+> [ 49.692268] (4:worker@Ginette) Processing "Task"
+> [ 50.000000] (4:worker@Ginette) Gloups. The cpu on which I'm running just turned off!. See you!
> [ 50.774742] (1:master@Tremblay) Send completed
-> [ 50.774742] (5:slave@Bourassa) Received "Task"
-> [ 50.774742] (5:slave@Bourassa) Communication time : "1.082474"
-> [ 50.774742] (5:slave@Bourassa) Processing "Task"
+> [ 50.774742] (5:worker@Bourassa) Received "Task"
+> [ 50.774742] (5:worker@Bourassa) Communication time : "1.082474"
+> [ 50.774742] (5:worker@Bourassa) Processing "Task"
> [ 50.785567] (1:master@Tremblay) Send completed
> [ 50.785567] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 50.785567] (2:slave@Tremblay) Received "Task"
-> [ 50.785567] (2:slave@Tremblay) Communication time : "0.010825"
-> [ 50.785567] (2:slave@Tremblay) Processing "Task"
-> [ 50.785567] (6:slave@Jupiter) Received "finalize"
-> [ 50.785567] (6:slave@Jupiter) I'm done. See you!
+> [ 50.785567] (2:worker@Tremblay) Received "Task"
+> [ 50.785567] (2:worker@Tremblay) Communication time : "0.010825"
+> [ 50.785567] (2:worker@Tremblay) Processing "Task"
+> [ 50.785567] (6:worker@Jupiter) Received "finalize"
+> [ 50.785567] (6:worker@Jupiter) I'm done. See you!
> [ 51.785567] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Fafard'. Nevermind. Let's keep going!
-> [ 52.774742] (5:slave@Bourassa) "Task" done
+> [ 52.774742] (5:worker@Bourassa) "Task" done
> [ 52.785567] (0:maestro@) Simulation time 52.7856
> [ 52.785567] (1:master@Tremblay) Mmh. Got timeouted while speaking to 'Ginette'. Nevermind. Let's keep going!
> [ 52.785567] (1:master@Tremblay) Goodbye now!
-> [ 52.785567] (2:slave@Tremblay) "Task" done
-> [ 52.785567] (2:slave@Tremblay) Received "finalize"
-> [ 52.785567] (2:slave@Tremblay) I'm done. See you!
-> [ 52.785567] (5:slave@Bourassa) Received "finalize"
-> [ 52.785567] (5:slave@Bourassa) I'm done. See you!
+> [ 52.785567] (2:worker@Tremblay) "Task" done
+> [ 52.785567] (2:worker@Tremblay) Received "finalize"
+> [ 52.785567] (2:worker@Tremblay) I'm done. See you!
+> [ 52.785567] (5:worker@Bourassa) Received "finalize"
+> [ 52.785567] (5:worker@Bourassa) I'm done. See you!
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <!-- The master process (with some arguments) -->
- <process host="Tremblay" function="master">
- <argument value="20"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="6"/> <!-- Number of slaves -->
- </process>
- <!-- The slave processes (with mailbox to listen on as argument) -->
- <process host="Tremblay" function="slave"> <argument value="0"/> </process>
- <process host="Tremblay" function="slave"> <argument value="1"/> </process>
- <process host="Tremblay" function="slave"> <argument value="2"/> </process>
- <process host="Tremblay" function="slave"> <argument value="3"/> </process>
- <process host="Tremblay" function="slave"> <argument value="4"/> </process>
- <process host="Tremblay" function="slave"> <argument value="5"/> </process>
-</platform>
+++ /dev/null
-#! ./tesh
-
-p Testing a simple master/slave example application
-
-$ $SG_TEST_EXENV ./masterslave-mailbox/masterslave-mailbox ${srcdir:=.}/../platforms/vivaldi.xml ${srcdir:=.}/masterslave-mailbox/masterslave-mailbox-vivaldi_d.xml --cfg=network/latency_factor:1.0 --cfg=network/bandwidth_factor:1.0
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/latency_factor' to '1.0'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/bandwidth_factor' to '1.0'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/coordinates' to 'yes'
-> [100030591:master:(1) 0.000000] [msg_test/INFO] Got 15 slaves and 10 tasks to process
-> [100030591:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" (of 10) to mailbox "slave-0"
-> [100030591:master:(1) 0.046299] [msg_test/INFO] Sending "Task_1" (of 10) to mailbox "slave-1"
-> [100030591:master:(1) 0.103602] [msg_test/INFO] Sending "Task_2" (of 10) to mailbox "slave-2"
-> [100030591:master:(1) 0.126922] [msg_test/INFO] Sending "Task_3" (of 10) to mailbox "slave-3"
-> [100030591:master:(1) 0.167282] [msg_test/INFO] Sending "Task_4" (of 10) to mailbox "slave-4"
-> [100030591:master:(1) 0.174710] [msg_test/INFO] Sending "Task_5" (of 10) to mailbox "slave-5"
-> [100030591:master:(1) 0.307173] [msg_test/INFO] Sending "Task_6" (of 10) to mailbox "slave-6"
-> [100030591:master:(1) 0.370794] [msg_test/INFO] Sending "Task_7" (of 10) to mailbox "slave-7"
-> [100030591:master:(1) 0.413207] [msg_test/INFO] Sending "Task_8" (of 10) to mailbox "slave-8"
-> [100030591:master:(1) 0.452277] [msg_test/INFO] Sending "Task_9" (of 10) to mailbox "slave-9"
-> [100030591:master:(1) 0.487205] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [100036570:slave:(2) 0.533504] [msg_test/INFO] I'm done. See you!
-> [100041334:slave:(3) 0.590807] [msg_test/INFO] I'm done. See you!
-> [100055671:slave:(4) 0.614127] [msg_test/INFO] I'm done. See you!
-> [100066658:slave:(5) 0.654487] [msg_test/INFO] I'm done. See you!
-> [100090691:slave:(6) 0.661915] [msg_test/INFO] I'm done. See you!
-> [100094952:slave:(7) 0.794379] [msg_test/INFO] I'm done. See you!
-> [100117943:slave:(8) 0.858000] [msg_test/INFO] I'm done. See you!
-> [100126290:slave:(9) 0.900412] [msg_test/INFO] I'm done. See you!
-> [100144483:slave:(10) 0.939482] [msg_test/INFO] I'm done. See you!
-> [100152889:slave:(11) 0.974410] [msg_test/INFO] I'm done. See you!
-> [100178474:slave:(12) 0.990540] [msg_test/INFO] I'm done. See you!
-> [100180261:slave:(13) 1.011253] [msg_test/INFO] I'm done. See you!
-> [100185883:slave:(14) 1.051440] [msg_test/INFO] I'm done. See you!
-> [100186365:slave:(15) 1.268843] [msg_test/INFO] I'm done. See you!
-> [100200866:slave:(16) 1.336272] [msg_test/INFO] I'm done. See you!
-> [1.336272] [msg_test/INFO] Simulation time 1.33627
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <!-- The master process (with some arguments) -->
- <process host="100030591" function="master">
- <argument value="10"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="15"/> <!-- Number of slaves -->
- </process>
- <!-- The slave processes (with mailbox to listen on as argument) -->
- <process host="100036570" function="slave"> <argument value="0"/> </process>
- <process host="100041334" function="slave"> <argument value="1"/> </process>
- <process host="100055671" function="slave"> <argument value="2"/> </process>
- <process host="100066658" function="slave"> <argument value="3"/> </process>
- <process host="100090691" function="slave"> <argument value="4"/> </process>
- <process host="100094952" function="slave"> <argument value="5"/> </process>
- <process host="100117943" function="slave"> <argument value="6"/> </process>
- <process host="100126290" function="slave"> <argument value="7"/> </process>
- <process host="100144483" function="slave"> <argument value="8"/> </process>
- <process host="100152889" function="slave"> <argument value="9"/> </process>
- <process host="100178474" function="slave"> <argument value="10"/> </process>
- <process host="100180261" function="slave"> <argument value="11"/> </process>
- <process host="100185883" function="slave"> <argument value="12"/> </process>
- <process host="100186365" function="slave"> <argument value="13"/> </process>
- <process host="100200866" function="slave"> <argument value="14"/> </process>
-</platform>
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <!-- The master process (with some arguments) -->
- <process host="Tremblay" function="master">
- <argument value="20"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="5"/> <!-- Number of slaves -->
- </process>
- <!-- The slave processes (with mailbox to listen on as argument) -->
- <process host="Tremblay" function="slave"> <argument value="0"/> </process>
- <process host="Jupiter" function="slave"> <argument value="1"/> </process>
- <process host="Fafard" function="slave"> <argument value="2"/> </process>
- <process host="Ginette" function="slave"> <argument value="3"/> </process>
- <process host="Bourassa" function="slave"> <argument value="4"/> </process>
-</platform>
+++ /dev/null
-#! ./tesh
-
-p Testing a simple master/slave example application. TCP crosstraffic DISABLED
-
-! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/masterslave$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterslave/masterslave_d.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to '0'
-> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
-> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
-> [ 0.162005] (1:master@Tremblay) Sent
-> [ 0.162005] (1:master@Tremblay) Sending "Task_1" to "Fafard"
-> [ 0.162005] (3:slave@Jupiter) Received "Task_0"
-> [ 0.162005] (3:slave@Jupiter) Processing "Task_0"
-> [ 0.314083] (1:master@Tremblay) Sent
-> [ 0.314083] (1:master@Tremblay) Sending "Task_2" to "Ginette"
-> [ 0.314083] (4:slave@Fafard) Received "Task_1"
-> [ 0.314083] (4:slave@Fafard) Processing "Task_1"
-> [ 0.432712] (1:master@Tremblay) Sent
-> [ 0.432712] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
-> [ 0.432712] (5:slave@Ginette) Received "Task_2"
-> [ 0.432712] (5:slave@Ginette) Processing "Task_2"
-> [ 0.560227] (1:master@Tremblay) Sent
-> [ 0.560227] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
-> [ 0.560227] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 0.560227] (6:slave@Bourassa) Received "Task_3"
-> [ 0.560227] (6:slave@Bourassa) Processing "Task_3"
-> [ 0.562492] (1:master@Tremblay) Sent
-> [ 0.562492] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
-> [ 0.562492] (2:slave@Tremblay) Received "Task_4"
-> [ 0.562492] (2:slave@Tremblay) Processing "Task_4"
-> [ 0.817347] (3:slave@Jupiter) "Task_0" done
-> [ 0.969426] (4:slave@Fafard) "Task_1" done
-> [ 0.979353] (1:master@Tremblay) Sent
-> [ 0.979353] (1:master@Tremblay) Sending "Task_6" to "Fafard"
-> [ 0.979353] (3:slave@Jupiter) Received "Task_5"
-> [ 0.979353] (3:slave@Jupiter) Processing "Task_5"
-> [ 1.072202] (2:slave@Tremblay) "Task_4" done
-> [ 1.131431] (1:master@Tremblay) Sent
-> [ 1.131431] (1:master@Tremblay) Sending "Task_7" to "Ginette"
-> [ 1.131431] (4:slave@Fafard) Received "Task_6"
-> [ 1.131431] (4:slave@Fafard) Processing "Task_6"
-> [ 1.463809] (5:slave@Ginette) "Task_2" done
-> [ 1.582438] (1:master@Tremblay) Sent
-> [ 1.582438] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
-> [ 1.582438] (5:slave@Ginette) Received "Task_7"
-> [ 1.582438] (5:slave@Ginette) Processing "Task_7"
-> [ 1.591325] (6:slave@Bourassa) "Task_3" done
-> [ 1.634695] (3:slave@Jupiter) "Task_5" done
-> [ 1.718840] (1:master@Tremblay) Sent
-> [ 1.718840] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
-> [ 1.718840] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 1.718840] (6:slave@Bourassa) Received "Task_8"
-> [ 1.718840] (6:slave@Bourassa) Processing "Task_8"
-> [ 1.721105] (1:master@Tremblay) Sent
-> [ 1.721105] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
-> [ 1.721105] (2:slave@Tremblay) Received "Task_9"
-> [ 1.721105] (2:slave@Tremblay) Processing "Task_9"
-> [ 1.786773] (4:slave@Fafard) "Task_6" done
-> [ 1.883110] (1:master@Tremblay) Sent
-> [ 1.883110] (1:master@Tremblay) Sending "Task_11" to "Fafard"
-> [ 1.883110] (3:slave@Jupiter) Received "Task_10"
-> [ 1.883110] (3:slave@Jupiter) Processing "Task_10"
-> [ 2.035188] (1:master@Tremblay) Sent
-> [ 2.035188] (1:master@Tremblay) Sending "Task_12" to "Ginette"
-> [ 2.035188] (4:slave@Fafard) Received "Task_11"
-> [ 2.035188] (4:slave@Fafard) Processing "Task_11"
-> [ 2.230815] (2:slave@Tremblay) "Task_9" done
-> [ 2.538453] (3:slave@Jupiter) "Task_10" done
-> [ 2.613536] (5:slave@Ginette) "Task_7" done
-> [ 2.690531] (4:slave@Fafard) "Task_11" done
-> [ 2.732164] (1:master@Tremblay) Sent
-> [ 2.732164] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
-> [ 2.732164] (5:slave@Ginette) Received "Task_12"
-> [ 2.732164] (5:slave@Ginette) Processing "Task_12"
-> [ 2.749938] (6:slave@Bourassa) "Task_8" done
-> [ 2.877453] (1:master@Tremblay) Sent
-> [ 2.877453] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
-> [ 2.877453] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 2.877453] (6:slave@Bourassa) Received "Task_13"
-> [ 2.877453] (6:slave@Bourassa) Processing "Task_13"
-> [ 2.879718] (1:master@Tremblay) Sent
-> [ 2.879718] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
-> [ 2.879718] (2:slave@Tremblay) Received "Task_14"
-> [ 2.879718] (2:slave@Tremblay) Processing "Task_14"
-> [ 3.041723] (1:master@Tremblay) Sent
-> [ 3.041723] (1:master@Tremblay) Sending "Task_16" to "Fafard"
-> [ 3.041723] (3:slave@Jupiter) Received "Task_15"
-> [ 3.041723] (3:slave@Jupiter) Processing "Task_15"
-> [ 3.193802] (1:master@Tremblay) Sent
-> [ 3.193802] (1:master@Tremblay) Sending "Task_17" to "Ginette"
-> [ 3.193802] (4:slave@Fafard) Received "Task_16"
-> [ 3.193802] (4:slave@Fafard) Processing "Task_16"
-> [ 3.389428] (2:slave@Tremblay) "Task_14" done
-> [ 3.697066] (3:slave@Jupiter) "Task_15" done
-> [ 3.763262] (5:slave@Ginette) "Task_12" done
-> [ 3.849144] (4:slave@Fafard) "Task_16" done
-> [ 3.881890] (1:master@Tremblay) Sent
-> [ 3.881890] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
-> [ 3.881890] (5:slave@Ginette) Received "Task_17"
-> [ 3.881890] (5:slave@Ginette) Processing "Task_17"
-> [ 3.908551] (6:slave@Bourassa) "Task_13" done
-> [ 4.036066] (1:master@Tremblay) Sent
-> [ 4.036066] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
-> [ 4.036066] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 4.036066] (6:slave@Bourassa) Received "Task_18"
-> [ 4.036066] (6:slave@Bourassa) Processing "Task_18"
-> [ 4.038331] (1:master@Tremblay) Sent
-> [ 4.038331] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 4.038331] (2:slave@Tremblay) Received "Task_19"
-> [ 4.038331] (2:slave@Tremblay) Processing "Task_19"
-> [ 4.057346] (3:slave@Jupiter) Received "finalize"
-> [ 4.057346] (3:slave@Jupiter) I'm done. See you!
-> [ 4.083054] (4:slave@Fafard) Received "finalize"
-> [ 4.083054] (4:slave@Fafard) I'm done. See you!
-> [ 4.548041] (2:slave@Tremblay) "Task_19" done
-> [ 4.912988] (5:slave@Ginette) "Task_17" done
-> [ 4.929540] (5:slave@Ginette) Received "finalize"
-> [ 4.929540] (5:slave@Ginette) I'm done. See you!
-> [ 5.067164] (6:slave@Bourassa) "Task_18" done
-> [ 5.092603] (6:slave@Bourassa) Received "finalize"
-> [ 5.092603] (6:slave@Bourassa) I'm done. See you!
-> [ 5.092798] (0:maestro@) Simulation time 5.0928
-> [ 5.092798] (1:master@Tremblay) Goodbye now!
-> [ 5.092798] (2:slave@Tremblay) Received "finalize"
-> [ 5.092798] (2:slave@Tremblay) I'm done. See you!
-
-p Testing a simple master/slave example application. TCP crosstraffic DISABLED
-
-$ $SG_TEST_EXENV ${bindir:=.}/masterslave$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterslave/masterslave_d.xml --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
-> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
-> [ 0.169155] (3:slave@Jupiter) Received "Task_0"
-> [ 0.169155] (3:slave@Jupiter) Processing "Task_0"
-> [ 0.169155] (1:master@Tremblay) Sent
-> [ 0.169155] (1:master@Tremblay) Sending "Task_1" to "Fafard"
-> [ 0.327551] (4:slave@Fafard) Received "Task_1"
-> [ 0.327551] (4:slave@Fafard) Processing "Task_1"
-> [ 0.327551] (1:master@Tremblay) Sent
-> [ 0.327551] (1:master@Tremblay) Sending "Task_2" to "Ginette"
-> [ 0.451283] (5:slave@Ginette) Received "Task_2"
-> [ 0.451283] (5:slave@Ginette) Processing "Task_2"
-> [ 0.451283] (1:master@Tremblay) Sent
-> [ 0.451283] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
-> [ 0.583902] (6:slave@Bourassa) Received "Task_3"
-> [ 0.583902] (6:slave@Bourassa) Processing "Task_3"
-> [ 0.583902] (1:master@Tremblay) Sent
-> [ 0.583902] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
-> [ 0.583902] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 0.586168] (2:slave@Tremblay) Received "Task_4"
-> [ 0.586168] (2:slave@Tremblay) Processing "Task_4"
-> [ 0.586168] (1:master@Tremblay) Sent
-> [ 0.586168] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
-> [ 0.824497] (3:slave@Jupiter) "Task_0" done
-> [ 0.982894] (4:slave@Fafard) "Task_1" done
-> [ 0.993652] (1:master@Tremblay) Sent
-> [ 0.993652] (1:master@Tremblay) Sending "Task_6" to "Fafard"
-> [ 0.993652] (3:slave@Jupiter) Received "Task_5"
-> [ 0.993652] (3:slave@Jupiter) Processing "Task_5"
-> [ 1.095878] (2:slave@Tremblay) "Task_4" done
-> [ 1.152048] (4:slave@Fafard) Received "Task_6"
-> [ 1.152048] (4:slave@Fafard) Processing "Task_6"
-> [ 1.152048] (1:master@Tremblay) Sent
-> [ 1.152048] (1:master@Tremblay) Sending "Task_7" to "Ginette"
-> [ 1.482381] (5:slave@Ginette) "Task_2" done
-> [ 1.606113] (1:master@Tremblay) Sent
-> [ 1.606113] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
-> [ 1.606113] (5:slave@Ginette) Received "Task_7"
-> [ 1.606113] (5:slave@Ginette) Processing "Task_7"
-> [ 1.615000] (6:slave@Bourassa) "Task_3" done
-> [ 1.648994] (3:slave@Jupiter) "Task_5" done
-> [ 1.747619] (1:master@Tremblay) Sent
-> [ 1.747619] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
-> [ 1.747619] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 1.747619] (6:slave@Bourassa) Received "Task_8"
-> [ 1.747619] (6:slave@Bourassa) Processing "Task_8"
-> [ 1.749885] (2:slave@Tremblay) Received "Task_9"
-> [ 1.749885] (2:slave@Tremblay) Processing "Task_9"
-> [ 1.749885] (1:master@Tremblay) Sent
-> [ 1.749885] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
-> [ 1.807391] (4:slave@Fafard) "Task_6" done
-> [ 1.919039] (3:slave@Jupiter) Received "Task_10"
-> [ 1.919039] (3:slave@Jupiter) Processing "Task_10"
-> [ 1.919039] (1:master@Tremblay) Sent
-> [ 1.919039] (1:master@Tremblay) Sending "Task_11" to "Fafard"
-> [ 2.077436] (4:slave@Fafard) Received "Task_11"
-> [ 2.077436] (4:slave@Fafard) Processing "Task_11"
-> [ 2.077436] (1:master@Tremblay) Sent
-> [ 2.077436] (1:master@Tremblay) Sending "Task_12" to "Ginette"
-> [ 2.259594] (2:slave@Tremblay) "Task_9" done
-> [ 2.574382] (3:slave@Jupiter) "Task_10" done
-> [ 2.637211] (5:slave@Ginette) "Task_7" done
-> [ 2.732778] (4:slave@Fafard) "Task_11" done
-> [ 2.760943] (1:master@Tremblay) Sent
-> [ 2.760943] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
-> [ 2.760943] (5:slave@Ginette) Received "Task_12"
-> [ 2.760943] (5:slave@Ginette) Processing "Task_12"
-> [ 2.778717] (6:slave@Bourassa) "Task_8" done
-> [ 2.911336] (1:master@Tremblay) Sent
-> [ 2.911336] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
-> [ 2.911336] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 2.911336] (6:slave@Bourassa) Received "Task_13"
-> [ 2.911336] (6:slave@Bourassa) Processing "Task_13"
-> [ 2.913601] (2:slave@Tremblay) Received "Task_14"
-> [ 2.913601] (2:slave@Tremblay) Processing "Task_14"
-> [ 2.913601] (1:master@Tremblay) Sent
-> [ 2.913601] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
-> [ 3.082756] (3:slave@Jupiter) Received "Task_15"
-> [ 3.082756] (3:slave@Jupiter) Processing "Task_15"
-> [ 3.082756] (1:master@Tremblay) Sent
-> [ 3.082756] (1:master@Tremblay) Sending "Task_16" to "Fafard"
-> [ 3.241153] (4:slave@Fafard) Received "Task_16"
-> [ 3.241153] (4:slave@Fafard) Processing "Task_16"
-> [ 3.241153] (1:master@Tremblay) Sent
-> [ 3.241153] (1:master@Tremblay) Sending "Task_17" to "Ginette"
-> [ 3.423311] (2:slave@Tremblay) "Task_14" done
-> [ 3.738098] (3:slave@Jupiter) "Task_15" done
-> [ 3.792041] (5:slave@Ginette) "Task_12" done
-> [ 3.896495] (4:slave@Fafard) "Task_16" done
-> [ 3.915773] (1:master@Tremblay) Sent
-> [ 3.915773] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
-> [ 3.915773] (5:slave@Ginette) Received "Task_17"
-> [ 3.915773] (5:slave@Ginette) Processing "Task_17"
-> [ 3.942434] (6:slave@Bourassa) "Task_13" done
-> [ 4.075053] (1:master@Tremblay) Sent
-> [ 4.075053] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
-> [ 4.075053] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 4.075053] (6:slave@Bourassa) Received "Task_18"
-> [ 4.075053] (6:slave@Bourassa) Processing "Task_18"
-> [ 4.077318] (2:slave@Tremblay) Received "Task_19"
-> [ 4.077318] (2:slave@Tremblay) Processing "Task_19"
-> [ 4.077318] (1:master@Tremblay) Sent
-> [ 4.077318] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 4.096333] (3:slave@Jupiter) Received "finalize"
-> [ 4.096333] (3:slave@Jupiter) I'm done. See you!
-> [ 4.122041] (4:slave@Fafard) Received "finalize"
-> [ 4.122041] (4:slave@Fafard) I'm done. See you!
-> [ 4.587028] (2:slave@Tremblay) "Task_19" done
-> [ 4.946871] (5:slave@Ginette) "Task_17" done
-> [ 4.963423] (5:slave@Ginette) Received "finalize"
-> [ 4.963423] (5:slave@Ginette) I'm done. See you!
-> [ 5.106151] (6:slave@Bourassa) "Task_18" done
-> [ 5.131590] (6:slave@Bourassa) Received "finalize"
-> [ 5.131590] (6:slave@Bourassa) I'm done. See you!
-> [ 5.131785] (2:slave@Tremblay) Received "finalize"
-> [ 5.131785] (2:slave@Tremblay) I'm done. See you!
-> [ 5.131785] (1:master@Tremblay) Goodbye now!
-> [ 5.131785] (0:maestro@) Simulation time 5.13179
+++ /dev/null
-#! ./tesh
-
-p Testing a simple master/slave example application
-
-! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/masterslave$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave/masterslave_d.xml --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Configuration change: Set 'cpu/optim' to 'TI'
-> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
-> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
-> [ 0.169155] (1:master@Tremblay) Sent
-> [ 0.169155] (1:master@Tremblay) Sending "Task_1" to "Fafard"
-> [ 0.169155] (3:slave@Jupiter) Received "Task_0"
-> [ 0.169155] (3:slave@Jupiter) Processing "Task_0"
-> [ 0.327551] (1:master@Tremblay) Sent
-> [ 0.327551] (1:master@Tremblay) Sending "Task_2" to "Ginette"
-> [ 0.327551] (4:slave@Fafard) Received "Task_1"
-> [ 0.327551] (4:slave@Fafard) Processing "Task_1"
-> [ 0.451283] (1:master@Tremblay) Sent
-> [ 0.451283] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
-> [ 0.451283] (5:slave@Ginette) Received "Task_2"
-> [ 0.451283] (5:slave@Ginette) Processing "Task_2"
-> [ 0.583902] (1:master@Tremblay) Sent
-> [ 0.583902] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
-> [ 0.583902] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 0.583902] (6:slave@Bourassa) Received "Task_3"
-> [ 0.583902] (6:slave@Bourassa) Processing "Task_3"
-> [ 0.586168] (1:master@Tremblay) Sent
-> [ 0.586168] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
-> [ 0.586168] (2:slave@Tremblay) Received "Task_4"
-> [ 0.586168] (2:slave@Tremblay) Processing "Task_4"
-> [ 0.824497] (3:slave@Jupiter) "Task_0" done
-> [ 0.982894] (4:slave@Fafard) "Task_1" done
-> [ 0.993652] (1:master@Tremblay) Sent
-> [ 0.993652] (1:master@Tremblay) Sending "Task_6" to "Fafard"
-> [ 0.993652] (3:slave@Jupiter) Received "Task_5"
-> [ 0.993652] (3:slave@Jupiter) Processing "Task_5"
-> [ 1.095878] (2:slave@Tremblay) "Task_4" done
-> [ 1.152048] (1:master@Tremblay) Sent
-> [ 1.152048] (1:master@Tremblay) Sending "Task_7" to "Ginette"
-> [ 1.152048] (4:slave@Fafard) Received "Task_6"
-> [ 1.152048] (4:slave@Fafard) Processing "Task_6"
-> [ 1.482381] (5:slave@Ginette) "Task_2" done
-> [ 1.606113] (1:master@Tremblay) Sent
-> [ 1.606113] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
-> [ 1.606113] (5:slave@Ginette) Received "Task_7"
-> [ 1.606113] (5:slave@Ginette) Processing "Task_7"
-> [ 1.615000] (6:slave@Bourassa) "Task_3" done
-> [ 1.648994] (3:slave@Jupiter) "Task_5" done
-> [ 1.747619] (1:master@Tremblay) Sent
-> [ 1.747619] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
-> [ 1.747619] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 1.747619] (6:slave@Bourassa) Received "Task_8"
-> [ 1.747619] (6:slave@Bourassa) Processing "Task_8"
-> [ 1.749885] (1:master@Tremblay) Sent
-> [ 1.749885] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
-> [ 1.749885] (2:slave@Tremblay) Received "Task_9"
-> [ 1.749885] (2:slave@Tremblay) Processing "Task_9"
-> [ 1.807391] (4:slave@Fafard) "Task_6" done
-> [ 1.919039] (1:master@Tremblay) Sent
-> [ 1.919039] (1:master@Tremblay) Sending "Task_11" to "Fafard"
-> [ 1.919039] (3:slave@Jupiter) Received "Task_10"
-> [ 1.919039] (3:slave@Jupiter) Processing "Task_10"
-> [ 2.077436] (1:master@Tremblay) Sent
-> [ 2.077436] (1:master@Tremblay) Sending "Task_12" to "Ginette"
-> [ 2.077436] (4:slave@Fafard) Received "Task_11"
-> [ 2.077436] (4:slave@Fafard) Processing "Task_11"
-> [ 2.259594] (2:slave@Tremblay) "Task_9" done
-> [ 2.574382] (3:slave@Jupiter) "Task_10" done
-> [ 2.637211] (5:slave@Ginette) "Task_7" done
-> [ 2.732778] (4:slave@Fafard) "Task_11" done
-> [ 2.760943] (1:master@Tremblay) Sent
-> [ 2.760943] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
-> [ 2.760943] (5:slave@Ginette) Received "Task_12"
-> [ 2.760943] (5:slave@Ginette) Processing "Task_12"
-> [ 2.778717] (6:slave@Bourassa) "Task_8" done
-> [ 2.911336] (1:master@Tremblay) Sent
-> [ 2.911336] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
-> [ 2.911336] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 2.911336] (6:slave@Bourassa) Received "Task_13"
-> [ 2.911336] (6:slave@Bourassa) Processing "Task_13"
-> [ 2.913601] (1:master@Tremblay) Sent
-> [ 2.913601] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
-> [ 2.913601] (2:slave@Tremblay) Received "Task_14"
-> [ 2.913601] (2:slave@Tremblay) Processing "Task_14"
-> [ 3.082756] (1:master@Tremblay) Sent
-> [ 3.082756] (1:master@Tremblay) Sending "Task_16" to "Fafard"
-> [ 3.082756] (3:slave@Jupiter) Received "Task_15"
-> [ 3.082756] (3:slave@Jupiter) Processing "Task_15"
-> [ 3.241153] (1:master@Tremblay) Sent
-> [ 3.241153] (1:master@Tremblay) Sending "Task_17" to "Ginette"
-> [ 3.241153] (4:slave@Fafard) Received "Task_16"
-> [ 3.241153] (4:slave@Fafard) Processing "Task_16"
-> [ 3.423311] (2:slave@Tremblay) "Task_14" done
-> [ 3.738098] (3:slave@Jupiter) "Task_15" done
-> [ 3.792041] (5:slave@Ginette) "Task_12" done
-> [ 3.896495] (4:slave@Fafard) "Task_16" done
-> [ 3.915773] (1:master@Tremblay) Sent
-> [ 3.915773] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
-> [ 3.915773] (5:slave@Ginette) Received "Task_17"
-> [ 3.915773] (5:slave@Ginette) Processing "Task_17"
-> [ 3.942434] (6:slave@Bourassa) "Task_13" done
-> [ 4.075053] (1:master@Tremblay) Sent
-> [ 4.075053] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
-> [ 4.075053] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 4.075053] (6:slave@Bourassa) Received "Task_18"
-> [ 4.075053] (6:slave@Bourassa) Processing "Task_18"
-> [ 4.077318] (1:master@Tremblay) Sent
-> [ 4.077318] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 4.077318] (2:slave@Tremblay) Received "Task_19"
-> [ 4.077318] (2:slave@Tremblay) Processing "Task_19"
-> [ 4.096333] (3:slave@Jupiter) Received "finalize"
-> [ 4.096333] (3:slave@Jupiter) I'm done. See you!
-> [ 4.122041] (4:slave@Fafard) Received "finalize"
-> [ 4.122041] (4:slave@Fafard) I'm done. See you!
-> [ 4.587028] (2:slave@Tremblay) "Task_19" done
-> [ 4.946871] (5:slave@Ginette) "Task_17" done
-> [ 4.963423] (5:slave@Ginette) Received "finalize"
-> [ 4.963423] (5:slave@Ginette) I'm done. See you!
-> [ 5.106151] (6:slave@Bourassa) "Task_18" done
-> [ 5.131590] (6:slave@Bourassa) Received "finalize"
-> [ 5.131590] (6:slave@Bourassa) I'm done. See you!
-> [ 5.131785] (0:maestro@) Simulation time 5.13179
-> [ 5.131785] (1:master@Tremblay) Goodbye now!
-> [ 5.131785] (2:slave@Tremblay) Received "finalize"
-> [ 5.131785] (2:slave@Tremblay) I'm done. See you!
-
-p Testing a simple master/slave example application
-
-! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/masterslave$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave/masterslave_d.xml --cfg=network/crosstraffic:0 --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to '0'
-> [ 0.000000] (0:maestro@) Configuration change: Set 'cpu/optim' to 'TI'
-> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
-> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
-> [ 0.165962] (1:master@Tremblay) Sent
-> [ 0.165962] (1:master@Tremblay) Sending "Task_1" to "Fafard"
-> [ 0.165962] (3:slave@Jupiter) Received "Task_0"
-> [ 0.165962] (3:slave@Jupiter) Processing "Task_0"
-> [ 0.384115] (1:master@Tremblay) Sent
-> [ 0.384115] (1:master@Tremblay) Sending "Task_2" to "Ginette"
-> [ 0.384115] (4:slave@Fafard) Received "Task_1"
-> [ 0.384115] (4:slave@Fafard) Processing "Task_1"
-> [ 0.524575] (1:master@Tremblay) Sent
-> [ 0.524575] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
-> [ 0.524575] (5:slave@Ginette) Received "Task_2"
-> [ 0.524575] (5:slave@Ginette) Processing "Task_2"
-> [ 0.740447] (1:master@Tremblay) Sent
-> [ 0.740447] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
-> [ 0.740447] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 0.740447] (6:slave@Bourassa) Received "Task_3"
-> [ 0.740447] (6:slave@Bourassa) Processing "Task_3"
-> [ 0.742786] (1:master@Tremblay) Sent
-> [ 0.742786] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
-> [ 0.742786] (2:slave@Tremblay) Received "Task_4"
-> [ 0.742786] (2:slave@Tremblay) Processing "Task_4"
-> [ 0.821304] (3:slave@Jupiter) "Task_0" done
-> [ 0.987266] (1:master@Tremblay) Sent
-> [ 0.987266] (1:master@Tremblay) Sending "Task_6" to "Fafard"
-> [ 0.987266] (3:slave@Jupiter) Received "Task_5"
-> [ 0.987266] (3:slave@Jupiter) Processing "Task_5"
-> [ 1.039457] (4:slave@Fafard) "Task_1" done
-> [ 1.252495] (2:slave@Tremblay) "Task_4" done
-> [ 1.257610] (1:master@Tremblay) Sent
-> [ 1.257610] (1:master@Tremblay) Sending "Task_7" to "Ginette"
-> [ 1.257610] (4:slave@Fafard) Received "Task_6"
-> [ 1.257610] (4:slave@Fafard) Processing "Task_6"
-> [ 1.555672] (5:slave@Ginette) "Task_2" done
-> [ 1.642608] (3:slave@Jupiter) "Task_5" done
-> [ 1.696132] (1:master@Tremblay) Sent
-> [ 1.696132] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
-> [ 1.696132] (5:slave@Ginette) Received "Task_7"
-> [ 1.696132] (5:slave@Ginette) Processing "Task_7"
-> [ 1.771545] (6:slave@Bourassa) "Task_3" done
-> [ 1.912953] (4:slave@Fafard) "Task_6" done
-> [ 1.987417] (1:master@Tremblay) Sent
-> [ 1.987417] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
-> [ 1.987417] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 1.987417] (6:slave@Bourassa) Received "Task_8"
-> [ 1.987417] (6:slave@Bourassa) Processing "Task_8"
-> [ 1.989756] (1:master@Tremblay) Sent
-> [ 1.989756] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
-> [ 1.989756] (2:slave@Tremblay) Received "Task_9"
-> [ 1.989756] (2:slave@Tremblay) Processing "Task_9"
-> [ 2.155718] (1:master@Tremblay) Sent
-> [ 2.155718] (1:master@Tremblay) Sending "Task_11" to "Fafard"
-> [ 2.155718] (3:slave@Jupiter) Received "Task_10"
-> [ 2.155718] (3:slave@Jupiter) Processing "Task_10"
-> [ 2.373871] (1:master@Tremblay) Sent
-> [ 2.373871] (1:master@Tremblay) Sending "Task_12" to "Ginette"
-> [ 2.373871] (4:slave@Fafard) Received "Task_11"
-> [ 2.373871] (4:slave@Fafard) Processing "Task_11"
-> [ 2.499466] (2:slave@Tremblay) "Task_9" done
-> [ 2.727230] (5:slave@Ginette) "Task_7" done
-> [ 2.811060] (3:slave@Jupiter) "Task_10" done
-> [ 2.867690] (1:master@Tremblay) Sent
-> [ 2.867690] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
-> [ 2.867690] (5:slave@Ginette) Received "Task_12"
-> [ 2.867690] (5:slave@Ginette) Processing "Task_12"
-> [ 3.018515] (6:slave@Bourassa) "Task_8" done
-> [ 3.029213] (4:slave@Fafard) "Task_11" done
-> [ 3.234387] (1:master@Tremblay) Sent
-> [ 3.234387] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
-> [ 3.234387] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 3.234387] (6:slave@Bourassa) Received "Task_13"
-> [ 3.234387] (6:slave@Bourassa) Processing "Task_13"
-> [ 3.236726] (1:master@Tremblay) Sent
-> [ 3.236726] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
-> [ 3.236726] (2:slave@Tremblay) Received "Task_14"
-> [ 3.236726] (2:slave@Tremblay) Processing "Task_14"
-> [ 3.402688] (1:master@Tremblay) Sent
-> [ 3.402688] (1:master@Tremblay) Sending "Task_16" to "Fafard"
-> [ 3.402688] (3:slave@Jupiter) Received "Task_15"
-> [ 3.402688] (3:slave@Jupiter) Processing "Task_15"
-> [ 3.620841] (1:master@Tremblay) Sent
-> [ 3.620841] (1:master@Tremblay) Sending "Task_17" to "Ginette"
-> [ 3.620841] (4:slave@Fafard) Received "Task_16"
-> [ 3.620841] (4:slave@Fafard) Processing "Task_16"
-> [ 3.746436] (2:slave@Tremblay) "Task_14" done
-> [ 3.898788] (5:slave@Ginette) "Task_12" done
-> [ 4.039247] (1:master@Tremblay) Sent
-> [ 4.039247] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
-> [ 4.039247] (5:slave@Ginette) Received "Task_17"
-> [ 4.039247] (5:slave@Ginette) Processing "Task_17"
-> [ 4.058030] (3:slave@Jupiter) "Task_15" done
-> [ 4.265485] (6:slave@Bourassa) "Task_13" done
-> [ 4.276183] (4:slave@Fafard) "Task_16" done
-> [ 4.481357] (1:master@Tremblay) Sent
-> [ 4.481357] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
-> [ 4.481357] (1:master@Tremblay) Hey ! It's me ! :)
-> [ 4.481357] (6:slave@Bourassa) Received "Task_18"
-> [ 4.481357] (6:slave@Bourassa) Processing "Task_18"
-> [ 4.483696] (1:master@Tremblay) Sent
-> [ 4.483696] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 4.483696] (2:slave@Tremblay) Received "Task_19"
-> [ 4.483696] (2:slave@Tremblay) Processing "Task_19"
-> [ 4.498896] (3:slave@Jupiter) Received "finalize"
-> [ 4.498896] (3:slave@Jupiter) I'm done. See you!
-> [ 4.519447] (4:slave@Fafard) Received "finalize"
-> [ 4.519447] (4:slave@Fafard) I'm done. See you!
-> [ 4.993406] (2:slave@Tremblay) "Task_19" done
-> [ 5.070345] (5:slave@Ginette) "Task_17" done
-> [ 5.083577] (5:slave@Ginette) Received "finalize"
-> [ 5.083577] (5:slave@Ginette) I'm done. See you!
-> [ 5.512455] (6:slave@Bourassa) "Task_18" done
-> [ 5.532791] (6:slave@Bourassa) Received "finalize"
-> [ 5.532791] (6:slave@Bourassa) I'm done. See you!
-> [ 5.532947] (0:maestro@) Simulation time 5.53295
-> [ 5.532947] (1:master@Tremblay) Goodbye now!
-> [ 5.532947] (2:slave@Tremblay) Received "finalize"
-> [ 5.532947] (2:slave@Tremblay) I'm done. See you!
-
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
- <!-- The master process (with some arguments) -->
- <process host="Tremblay" function="master">
- <argument value="20"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="Jupiter"/> <!-- First slave -->
- <argument value="Fafard"/> <!-- Second slave -->
- <argument value="Ginette"/> <!-- Third slave -->
- <argument value="Bourassa"/> <!-- Last slave -->
- <argument value="Tremblay"/> <!-- Me! I can work too! -->
- </process>
- <!-- The slave process (with no argument) -->
- <process host="Tremblay" function="slave" on_failure="RESTART"/>
- <process host="Jupiter" function="slave" on_failure="RESTART"/>
- <process host="Fafard" function="slave" on_failure="RESTART"/>
- <process host="Ginette" function="slave" on_failure="RESTART"/>
- <process host="Bourassa" function="slave" on_failure="RESTART"/>
-</platform>
#! ./tesh
-p Testing a simple master/slave example application
+p Testing a simple master/worker example application
-$ $SG_TEST_EXENV ./masterslave-mailbox/masterslave-mailbox ${srcdir:=.}/../platforms/multicore_machine.xml ${srcdir:=.}/masterslave-mailbox/masterslave-mailbox-multicore_d.xml --cfg=cpu/model:Cas01 --cfg=cpu/optim:Full
+$ $SG_TEST_EXENV ./masterworker-mailbox/masterworker-mailbox ${srcdir:=.}/../platforms/multicore_machine.xml ${srcdir:=.}/masterworker-mailbox/masterworker-mailbox-multicore_d.xml --cfg=cpu/model:Cas01 --cfg=cpu/optim:Full
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/optim' to 'Full'
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 6 slaves and 20 tasks to process
-> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 0.002203] [msg_test/INFO] Sending "Task_1" (of 20) to mailbox "slave-1"
-> [Tremblay:master:(1) 0.004406] [msg_test/INFO] Sending "Task_2" (of 20) to mailbox "slave-2"
-> [Tremblay:master:(1) 0.006610] [msg_test/INFO] Sending "Task_3" (of 20) to mailbox "slave-3"
-> [Tremblay:master:(1) 0.008813] [msg_test/INFO] Sending "Task_4" (of 20) to mailbox "slave-4"
-> [Tremblay:master:(1) 0.011016] [msg_test/INFO] Sending "Task_5" (of 20) to mailbox "slave-5"
-> [Tremblay:master:(1) 0.013219] [msg_test/INFO] Sending "Task_6" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 0.514116] [msg_test/INFO] Sending "Task_7" (of 20) to mailbox "slave-1"
-> [Tremblay:master:(1) 0.516320] [msg_test/INFO] Sending "Task_8" (of 20) to mailbox "slave-2"
-> [Tremblay:master:(1) 0.518523] [msg_test/INFO] Sending "Task_9" (of 20) to mailbox "slave-3"
-> [Tremblay:master:(1) 0.520726] [msg_test/INFO] Sending "Task_10" (of 20) to mailbox "slave-4"
-> [Tremblay:master:(1) 0.522929] [msg_test/INFO] Sending "Task_11" (of 20) to mailbox "slave-5"
-> [Tremblay:master:(1) 0.525132] [msg_test/INFO] Sending "Task_12" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 1.026029] [msg_test/INFO] Sending "Task_13" (of 20) to mailbox "slave-1"
-> [Tremblay:master:(1) 1.028233] [msg_test/INFO] Sending "Task_14" (of 20) to mailbox "slave-2"
-> [Tremblay:master:(1) 1.030436] [msg_test/INFO] Sending "Task_15" (of 20) to mailbox "slave-3"
-> [Tremblay:master:(1) 1.032639] [msg_test/INFO] Sending "Task_16" (of 20) to mailbox "slave-4"
-> [Tremblay:master:(1) 1.034842] [msg_test/INFO] Sending "Task_17" (of 20) to mailbox "slave-5"
-> [Tremblay:master:(1) 1.037045] [msg_test/INFO] Sending "Task_18" (of 20) to mailbox "slave-0"
-> [Tremblay:master:(1) 1.537943] [msg_test/INFO] Sending "Task_19" (of 20) to mailbox "slave-1"
+> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Got 6 workers and 20 tasks to process
+> [Tremblay:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" (of 20) to mailbox "worker-0"
+> [Tremblay:master:(1) 0.002203] [msg_test/INFO] Sending "Task_1" (of 20) to mailbox "worker-1"
+> [Tremblay:master:(1) 0.004406] [msg_test/INFO] Sending "Task_2" (of 20) to mailbox "worker-2"
+> [Tremblay:master:(1) 0.006610] [msg_test/INFO] Sending "Task_3" (of 20) to mailbox "worker-3"
+> [Tremblay:master:(1) 0.008813] [msg_test/INFO] Sending "Task_4" (of 20) to mailbox "worker-4"
+> [Tremblay:master:(1) 0.011016] [msg_test/INFO] Sending "Task_5" (of 20) to mailbox "worker-5"
+> [Tremblay:master:(1) 0.013219] [msg_test/INFO] Sending "Task_6" (of 20) to mailbox "worker-0"
+> [Tremblay:master:(1) 0.514116] [msg_test/INFO] Sending "Task_7" (of 20) to mailbox "worker-1"
+> [Tremblay:master:(1) 0.516320] [msg_test/INFO] Sending "Task_8" (of 20) to mailbox "worker-2"
+> [Tremblay:master:(1) 0.518523] [msg_test/INFO] Sending "Task_9" (of 20) to mailbox "worker-3"
+> [Tremblay:master:(1) 0.520726] [msg_test/INFO] Sending "Task_10" (of 20) to mailbox "worker-4"
+> [Tremblay:master:(1) 0.522929] [msg_test/INFO] Sending "Task_11" (of 20) to mailbox "worker-5"
+> [Tremblay:master:(1) 0.525132] [msg_test/INFO] Sending "Task_12" (of 20) to mailbox "worker-0"
+> [Tremblay:master:(1) 1.026029] [msg_test/INFO] Sending "Task_13" (of 20) to mailbox "worker-1"
+> [Tremblay:master:(1) 1.028233] [msg_test/INFO] Sending "Task_14" (of 20) to mailbox "worker-2"
+> [Tremblay:master:(1) 1.030436] [msg_test/INFO] Sending "Task_15" (of 20) to mailbox "worker-3"
+> [Tremblay:master:(1) 1.032639] [msg_test/INFO] Sending "Task_16" (of 20) to mailbox "worker-4"
+> [Tremblay:master:(1) 1.034842] [msg_test/INFO] Sending "Task_17" (of 20) to mailbox "worker-5"
+> [Tremblay:master:(1) 1.037045] [msg_test/INFO] Sending "Task_18" (of 20) to mailbox "worker-0"
+> [Tremblay:master:(1) 1.537943] [msg_test/INFO] Sending "Task_19" (of 20) to mailbox "worker-1"
> [Tremblay:master:(1) 1.540146] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
-> [Tremblay:slave:(2) 2.047848] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(3) 2.050051] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(4) 2.050246] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(5) 2.050441] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(6) 2.050636] [msg_test/INFO] I'm done. See you!
-> [Tremblay:slave:(7) 2.050832] [msg_test/INFO] I'm done. See you!
+> [Tremblay:worker:(2) 2.047848] [msg_test/INFO] I'm done. See you!
+> [Tremblay:worker:(3) 2.050051] [msg_test/INFO] I'm done. See you!
+> [Tremblay:worker:(4) 2.050246] [msg_test/INFO] I'm done. See you!
+> [Tremblay:worker:(5) 2.050441] [msg_test/INFO] I'm done. See you!
+> [Tremblay:worker:(6) 2.050636] [msg_test/INFO] I'm done. See you!
+> [Tremblay:worker:(7) 2.050832] [msg_test/INFO] I'm done. See you!
> [2.050832] [msg_test/INFO] Simulation time 2.05083
\ No newline at end of file
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+ <!-- The master process (with some arguments) -->
+ <process host="Tremblay" function="master">
+ <argument value="20"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="6"/> <!-- Number of workers -->
+ </process>
+ <!-- The worker processes (with mailbox to listen on as argument) -->
+ <process host="Tremblay" function="worker"> <argument value="0"/> </process>
+ <process host="Tremblay" function="worker"> <argument value="1"/> </process>
+ <process host="Tremblay" function="worker"> <argument value="2"/> </process>
+ <process host="Tremblay" function="worker"> <argument value="3"/> </process>
+ <process host="Tremblay" function="worker"> <argument value="4"/> </process>
+ <process host="Tremblay" function="worker"> <argument value="5"/> </process>
+</platform>
--- /dev/null
+#! ./tesh
+
+p Testing a simple master/worker example application
+
+$ $SG_TEST_EXENV ./masterworker-mailbox/masterworker-mailbox ${srcdir:=.}/../platforms/vivaldi.xml ${srcdir:=.}/masterworker-mailbox/masterworker-mailbox-vivaldi_d.xml --cfg=network/latency_factor:1.0 --cfg=network/bandwidth_factor:1.0
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/latency_factor' to '1.0'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/bandwidth_factor' to '1.0'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/coordinates' to 'yes'
+> [100030591:master:(1) 0.000000] [msg_test/INFO] Got 15 workers and 10 tasks to process
+> [100030591:master:(1) 0.000000] [msg_test/INFO] Sending "Task_0" (of 10) to mailbox "worker-0"
+> [100030591:master:(1) 0.046299] [msg_test/INFO] Sending "Task_1" (of 10) to mailbox "worker-1"
+> [100030591:master:(1) 0.103602] [msg_test/INFO] Sending "Task_2" (of 10) to mailbox "worker-2"
+> [100030591:master:(1) 0.126922] [msg_test/INFO] Sending "Task_3" (of 10) to mailbox "worker-3"
+> [100030591:master:(1) 0.167282] [msg_test/INFO] Sending "Task_4" (of 10) to mailbox "worker-4"
+> [100030591:master:(1) 0.174710] [msg_test/INFO] Sending "Task_5" (of 10) to mailbox "worker-5"
+> [100030591:master:(1) 0.307173] [msg_test/INFO] Sending "Task_6" (of 10) to mailbox "worker-6"
+> [100030591:master:(1) 0.370794] [msg_test/INFO] Sending "Task_7" (of 10) to mailbox "worker-7"
+> [100030591:master:(1) 0.413207] [msg_test/INFO] Sending "Task_8" (of 10) to mailbox "worker-8"
+> [100030591:master:(1) 0.452277] [msg_test/INFO] Sending "Task_9" (of 10) to mailbox "worker-9"
+> [100030591:master:(1) 0.487205] [msg_test/INFO] All tasks have been dispatched. Let's tell everybody the computation is over.
+> [100036570:worker:(2) 0.533504] [msg_test/INFO] I'm done. See you!
+> [100041334:worker:(3) 0.590807] [msg_test/INFO] I'm done. See you!
+> [100055671:worker:(4) 0.614127] [msg_test/INFO] I'm done. See you!
+> [100066658:worker:(5) 0.654487] [msg_test/INFO] I'm done. See you!
+> [100090691:worker:(6) 0.661915] [msg_test/INFO] I'm done. See you!
+> [100094952:worker:(7) 0.794379] [msg_test/INFO] I'm done. See you!
+> [100117943:worker:(8) 0.858000] [msg_test/INFO] I'm done. See you!
+> [100126290:worker:(9) 0.900412] [msg_test/INFO] I'm done. See you!
+> [100144483:worker:(10) 0.939482] [msg_test/INFO] I'm done. See you!
+> [100152889:worker:(11) 0.974410] [msg_test/INFO] I'm done. See you!
+> [100178474:worker:(12) 0.990540] [msg_test/INFO] I'm done. See you!
+> [100180261:worker:(13) 1.011253] [msg_test/INFO] I'm done. See you!
+> [100185883:worker:(14) 1.051440] [msg_test/INFO] I'm done. See you!
+> [100186365:worker:(15) 1.268843] [msg_test/INFO] I'm done. See you!
+> [100200866:worker:(16) 1.336272] [msg_test/INFO] I'm done. See you!
+> [1.336272] [msg_test/INFO] Simulation time 1.33627
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+ <!-- The master process (with some arguments) -->
+ <process host="100030591" function="master">
+ <argument value="10"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="15"/> <!-- Number of workers -->
+ </process>
+ <!-- The worker processes (with mailbox to listen on as argument) -->
+ <process host="100036570" function="worker"> <argument value="0"/> </process>
+ <process host="100041334" function="worker"> <argument value="1"/> </process>
+ <process host="100055671" function="worker"> <argument value="2"/> </process>
+ <process host="100066658" function="worker"> <argument value="3"/> </process>
+ <process host="100090691" function="worker"> <argument value="4"/> </process>
+ <process host="100094952" function="worker"> <argument value="5"/> </process>
+ <process host="100117943" function="worker"> <argument value="6"/> </process>
+ <process host="100126290" function="worker"> <argument value="7"/> </process>
+ <process host="100144483" function="worker"> <argument value="8"/> </process>
+ <process host="100152889" function="worker"> <argument value="9"/> </process>
+ <process host="100178474" function="worker"> <argument value="10"/> </process>
+ <process host="100180261" function="worker"> <argument value="11"/> </process>
+ <process host="100185883" function="worker"> <argument value="12"/> </process>
+ <process host="100186365" function="worker"> <argument value="13"/> </process>
+ <process host="100200866" function="worker"> <argument value="14"/> </process>
+</platform>
long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");
double task_comp_size = xbt_str_parse_double(argv[2], "Invalid computational size: %s");
double task_comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s");
- long slaves_count = xbt_str_parse_int(argv[4], "Invalid amount of slaves: %s");
+ long workers_count = xbt_str_parse_int(argv[4], "Invalid amount of workers: %s");
int i;
- XBT_INFO("Got %ld slaves and %ld tasks to process", slaves_count, number_of_tasks);
+ XBT_INFO("Got %ld workers and %ld tasks to process", workers_count, number_of_tasks);
for (i = 0; i < number_of_tasks; i++) {
char mailbox[256];
char sprintf_buffer[256];
msg_task_t task = NULL;
- sprintf(mailbox, "slave-%ld", i % slaves_count);
+ sprintf(mailbox, "worker-%ld", i % workers_count);
sprintf(sprintf_buffer, "Task_%d", i);
task = MSG_task_create(sprintf_buffer, task_comp_size, task_comm_size, NULL);
if (number_of_tasks < 10000 || i % 10000 == 0)
}
XBT_INFO("All tasks have been dispatched. Let's tell everybody the computation is over.");
- for (i = 0; i < slaves_count; i++) {
+ for (i = 0; i < workers_count; i++) {
char mailbox[80];
- sprintf(mailbox, "slave-%ld", i % slaves_count);
+ sprintf(mailbox, "worker-%ld", i % workers_count);
msg_task_t finalize = MSG_task_create("finalize", 0, 0, 0);
MSG_task_send(finalize, mailbox);
}
return 0;
}
-static int slave(int argc, char *argv[])
+static int worker(int argc, char *argv[])
{
msg_task_t task = NULL;
XBT_ATTRIB_UNUSED int res;
long id= xbt_str_parse_int(argv[1], "Invalid argument %s");
- sprintf(mailbox, "slave-%ld", id);
+ sprintf(mailbox, "worker-%ld", id);
while (1) {
res = MSG_task_receive(&(task), mailbox);
MSG_create_environment(argv[1]);
MSG_function_register("master", master);
- MSG_function_register("slave", slave);
+ MSG_function_register("worker", worker);
MSG_launch_application(argv[2]);
msg_error_t res = MSG_main();
#! ./tesh
-p Testing a simple master/slave example application (mailbox version)
+p Testing a simple master/worker example application (mailbox version)
! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/masterslave-mailbox$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ $SG_TEST_EXENV ${bindir:=.}/masterworker-mailbox$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to '0'
-> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
-> [ 0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "slave-0"
-> [ 0.002265] (1:master@Tremblay) Sending "Task_1" (of 20) to mailbox "slave-1"
-> [ 0.164270] (1:master@Tremblay) Sending "Task_2" (of 20) to mailbox "slave-2"
-> [ 0.316349] (1:master@Tremblay) Sending "Task_3" (of 20) to mailbox "slave-3"
-> [ 0.434977] (1:master@Tremblay) Sending "Task_4" (of 20) to mailbox "slave-4"
-> [ 0.562492] (1:master@Tremblay) Sending "Task_5" (of 20) to mailbox "slave-0"
-> [ 0.564757] (1:master@Tremblay) Sending "Task_6" (of 20) to mailbox "slave-1"
-> [ 0.981618] (1:master@Tremblay) Sending "Task_7" (of 20) to mailbox "slave-2"
-> [ 1.133696] (1:master@Tremblay) Sending "Task_8" (of 20) to mailbox "slave-3"
-> [ 1.584703] (1:master@Tremblay) Sending "Task_9" (of 20) to mailbox "slave-4"
-> [ 1.721105] (1:master@Tremblay) Sending "Task_10" (of 20) to mailbox "slave-0"
-> [ 1.723370] (1:master@Tremblay) Sending "Task_11" (of 20) to mailbox "slave-1"
-> [ 1.885375] (1:master@Tremblay) Sending "Task_12" (of 20) to mailbox "slave-2"
-> [ 2.037454] (1:master@Tremblay) Sending "Task_13" (of 20) to mailbox "slave-3"
-> [ 2.734429] (1:master@Tremblay) Sending "Task_14" (of 20) to mailbox "slave-4"
-> [ 2.879718] (1:master@Tremblay) Sending "Task_15" (of 20) to mailbox "slave-0"
-> [ 2.881983] (1:master@Tremblay) Sending "Task_16" (of 20) to mailbox "slave-1"
-> [ 3.043989] (1:master@Tremblay) Sending "Task_17" (of 20) to mailbox "slave-2"
-> [ 3.196067] (1:master@Tremblay) Sending "Task_18" (of 20) to mailbox "slave-3"
-> [ 3.884155] (1:master@Tremblay) Sending "Task_19" (of 20) to mailbox "slave-4"
+> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "worker-0"
+> [ 0.002265] (1:master@Tremblay) Sending "Task_1" (of 20) to mailbox "worker-1"
+> [ 0.164270] (1:master@Tremblay) Sending "Task_2" (of 20) to mailbox "worker-2"
+> [ 0.316349] (1:master@Tremblay) Sending "Task_3" (of 20) to mailbox "worker-3"
+> [ 0.434977] (1:master@Tremblay) Sending "Task_4" (of 20) to mailbox "worker-4"
+> [ 0.562492] (1:master@Tremblay) Sending "Task_5" (of 20) to mailbox "worker-0"
+> [ 0.564757] (1:master@Tremblay) Sending "Task_6" (of 20) to mailbox "worker-1"
+> [ 0.981618] (1:master@Tremblay) Sending "Task_7" (of 20) to mailbox "worker-2"
+> [ 1.133696] (1:master@Tremblay) Sending "Task_8" (of 20) to mailbox "worker-3"
+> [ 1.584703] (1:master@Tremblay) Sending "Task_9" (of 20) to mailbox "worker-4"
+> [ 1.721105] (1:master@Tremblay) Sending "Task_10" (of 20) to mailbox "worker-0"
+> [ 1.723370] (1:master@Tremblay) Sending "Task_11" (of 20) to mailbox "worker-1"
+> [ 1.885375] (1:master@Tremblay) Sending "Task_12" (of 20) to mailbox "worker-2"
+> [ 2.037454] (1:master@Tremblay) Sending "Task_13" (of 20) to mailbox "worker-3"
+> [ 2.734429] (1:master@Tremblay) Sending "Task_14" (of 20) to mailbox "worker-4"
+> [ 2.879718] (1:master@Tremblay) Sending "Task_15" (of 20) to mailbox "worker-0"
+> [ 2.881983] (1:master@Tremblay) Sending "Task_16" (of 20) to mailbox "worker-1"
+> [ 3.043989] (1:master@Tremblay) Sending "Task_17" (of 20) to mailbox "worker-2"
+> [ 3.196067] (1:master@Tremblay) Sending "Task_18" (of 20) to mailbox "worker-3"
+> [ 3.884155] (1:master@Tremblay) Sending "Task_19" (of 20) to mailbox "worker-4"
> [ 4.038331] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 4.038526] (2:slave@Tremblay) I'm done. See you!
-> [ 4.057541] (3:slave@Jupiter) I'm done. See you!
-> [ 4.083249] (4:slave@Fafard) I'm done. See you!
-> [ 4.931805] (5:slave@Ginette) I'm done. See you!
+> [ 4.038526] (2:worker@Tremblay) I'm done. See you!
+> [ 4.057541] (3:worker@Jupiter) I'm done. See you!
+> [ 4.083249] (4:worker@Fafard) I'm done. See you!
+> [ 4.931805] (5:worker@Ginette) I'm done. See you!
> [ 5.094868] (0:maestro@) Simulation time 5.09487
-> [ 5.094868] (6:slave@Bourassa) I'm done. See you!
+> [ 5.094868] (6:worker@Bourassa) I'm done. See you!
-$ $SG_TEST_EXENV ${bindir:=.}/masterslave-mailbox$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (1:master@Tremblay) Got 5 slaves and 20 tasks to process
-> [ 0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "slave-0"
-> [ 0.002265] (1:master@Tremblay) Sending "Task_1" (of 20) to mailbox "slave-1"
-> [ 0.171420] (1:master@Tremblay) Sending "Task_2" (of 20) to mailbox "slave-2"
-> [ 0.329817] (1:master@Tremblay) Sending "Task_3" (of 20) to mailbox "slave-3"
-> [ 0.453549] (1:master@Tremblay) Sending "Task_4" (of 20) to mailbox "slave-4"
-> [ 0.586168] (1:master@Tremblay) Sending "Task_5" (of 20) to mailbox "slave-0"
-> [ 0.588433] (1:master@Tremblay) Sending "Task_6" (of 20) to mailbox "slave-1"
-> [ 0.995917] (1:master@Tremblay) Sending "Task_7" (of 20) to mailbox "slave-2"
-> [ 1.154314] (1:master@Tremblay) Sending "Task_8" (of 20) to mailbox "slave-3"
-> [ 1.608379] (1:master@Tremblay) Sending "Task_9" (of 20) to mailbox "slave-4"
-> [ 1.749885] (1:master@Tremblay) Sending "Task_10" (of 20) to mailbox "slave-0"
-> [ 1.752150] (1:master@Tremblay) Sending "Task_11" (of 20) to mailbox "slave-1"
-> [ 1.921304] (1:master@Tremblay) Sending "Task_12" (of 20) to mailbox "slave-2"
-> [ 2.079701] (1:master@Tremblay) Sending "Task_13" (of 20) to mailbox "slave-3"
-> [ 2.763209] (1:master@Tremblay) Sending "Task_14" (of 20) to mailbox "slave-4"
-> [ 2.913601] (1:master@Tremblay) Sending "Task_15" (of 20) to mailbox "slave-0"
-> [ 2.915867] (1:master@Tremblay) Sending "Task_16" (of 20) to mailbox "slave-1"
-> [ 3.085021] (1:master@Tremblay) Sending "Task_17" (of 20) to mailbox "slave-2"
-> [ 3.243418] (1:master@Tremblay) Sending "Task_18" (of 20) to mailbox "slave-3"
-> [ 3.918038] (1:master@Tremblay) Sending "Task_19" (of 20) to mailbox "slave-4"
+$ $SG_TEST_EXENV ${bindir:=.}/masterworker-mailbox$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" (of 20) to mailbox "worker-0"
+> [ 0.002265] (1:master@Tremblay) Sending "Task_1" (of 20) to mailbox "worker-1"
+> [ 0.171420] (1:master@Tremblay) Sending "Task_2" (of 20) to mailbox "worker-2"
+> [ 0.329817] (1:master@Tremblay) Sending "Task_3" (of 20) to mailbox "worker-3"
+> [ 0.453549] (1:master@Tremblay) Sending "Task_4" (of 20) to mailbox "worker-4"
+> [ 0.586168] (1:master@Tremblay) Sending "Task_5" (of 20) to mailbox "worker-0"
+> [ 0.588433] (1:master@Tremblay) Sending "Task_6" (of 20) to mailbox "worker-1"
+> [ 0.995917] (1:master@Tremblay) Sending "Task_7" (of 20) to mailbox "worker-2"
+> [ 1.154314] (1:master@Tremblay) Sending "Task_8" (of 20) to mailbox "worker-3"
+> [ 1.608379] (1:master@Tremblay) Sending "Task_9" (of 20) to mailbox "worker-4"
+> [ 1.749885] (1:master@Tremblay) Sending "Task_10" (of 20) to mailbox "worker-0"
+> [ 1.752150] (1:master@Tremblay) Sending "Task_11" (of 20) to mailbox "worker-1"
+> [ 1.921304] (1:master@Tremblay) Sending "Task_12" (of 20) to mailbox "worker-2"
+> [ 2.079701] (1:master@Tremblay) Sending "Task_13" (of 20) to mailbox "worker-3"
+> [ 2.763209] (1:master@Tremblay) Sending "Task_14" (of 20) to mailbox "worker-4"
+> [ 2.913601] (1:master@Tremblay) Sending "Task_15" (of 20) to mailbox "worker-0"
+> [ 2.915867] (1:master@Tremblay) Sending "Task_16" (of 20) to mailbox "worker-1"
+> [ 3.085021] (1:master@Tremblay) Sending "Task_17" (of 20) to mailbox "worker-2"
+> [ 3.243418] (1:master@Tremblay) Sending "Task_18" (of 20) to mailbox "worker-3"
+> [ 3.918038] (1:master@Tremblay) Sending "Task_19" (of 20) to mailbox "worker-4"
> [ 4.077318] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
-> [ 4.077513] (2:slave@Tremblay) I'm done. See you!
-> [ 4.096528] (3:slave@Jupiter) I'm done. See you!
-> [ 4.122236] (4:slave@Fafard) I'm done. See you!
-> [ 4.965689] (5:slave@Ginette) I'm done. See you!
-> [ 5.133855] (6:slave@Bourassa) I'm done. See you!
+> [ 4.077513] (2:worker@Tremblay) I'm done. See you!
+> [ 4.096528] (3:worker@Jupiter) I'm done. See you!
+> [ 4.122236] (4:worker@Fafard) I'm done. See you!
+> [ 4.965689] (5:worker@Ginette) I'm done. See you!
+> [ 5.133855] (6:worker@Bourassa) I'm done. See you!
> [ 5.133855] (0:maestro@) Simulation time 5.13386
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+ <!-- The master process (with some arguments) -->
+ <process host="Tremblay" function="master">
+ <argument value="20"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="5"/> <!-- Number of workers -->
+ </process>
+ <!-- The worker processes (with mailbox to listen on as argument) -->
+ <process host="Tremblay" function="worker"> <argument value="0"/> </process>
+ <process host="Jupiter" function="worker"> <argument value="1"/> </process>
+ <process host="Fafard" function="worker"> <argument value="2"/> </process>
+ <process host="Ginette" function="worker"> <argument value="3"/> </process>
+ <process host="Bourassa" function="worker"> <argument value="4"/> </process>
+</platform>
/** @addtogroup MSG_examples
*
- * - <b>masterslave/masterslave.c: Master/slaves example</b>. This good old example is also very simple. Its
- * basic version is fully commented on this page: \ref MSG_ex_master_slave, but several variants can be found in the
+ * - <b>masterworker/masterworker.c: Master/workers example</b>. This good old example is also very simple. Its
+ * basic version is fully commented on this page: \ref MSG_ex_master_worker, but several variants can be found in the
* same directory.
*/
static int master(int argc, char *argv[])
{
- msg_host_t *slaves = NULL;
+ msg_host_t *workers = NULL;
msg_task_t *todo = NULL;
- long slaves_count = 0;
+ long workers_count = 0;
int i;
long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");
}
{ /* Process organization */
- slaves_count = argc - 4;
- slaves = xbt_new0(msg_host_t, slaves_count);
+ workers_count = argc - 4;
+ workers = xbt_new0(msg_host_t, workers_count);
for (i = 4; i < argc; i++) {
- slaves[i - 4] = MSG_host_by_name(argv[i]);
- xbt_assert(slaves[i - 4] != NULL, "Unknown host %s. Stopping Now! ", argv[i]);
+ workers[i - 4] = MSG_host_by_name(argv[i]);
+ xbt_assert(workers[i - 4] != NULL, "Unknown host %s. Stopping Now! ", argv[i]);
}
}
- XBT_INFO("Got %ld slaves and %ld tasks to process", slaves_count, number_of_tasks);
- for (i = 0; i < slaves_count; i++)
- XBT_DEBUG("%s", MSG_host_get_name(slaves[i]));
+ XBT_INFO("Got %ld workers and %ld tasks to process", workers_count, number_of_tasks);
+ for (i = 0; i < workers_count; i++)
+ XBT_DEBUG("%s", MSG_host_get_name(workers[i]));
for (i = 0; i < number_of_tasks; i++) {
- XBT_INFO("Sending \"%s\" to \"%s\"", todo[i]->name, MSG_host_get_name(slaves[i % slaves_count]));
- if (MSG_host_self() == slaves[i % slaves_count]) {
+ XBT_INFO("Sending \"%s\" to \"%s\"", todo[i]->name, MSG_host_get_name(workers[i % workers_count]));
+ if (MSG_host_self() == workers[i % workers_count]) {
XBT_INFO("Hey ! It's me ! :)");
}
- MSG_task_send(todo[i], MSG_host_get_name(slaves[i % slaves_count]));
+ MSG_task_send(todo[i], MSG_host_get_name(workers[i % workers_count]));
XBT_INFO("Sent");
}
XBT_INFO("All tasks have been dispatched. Let's tell everybody the computation is over.");
- for (i = 0; i < slaves_count; i++) {
+ for (i = 0; i < workers_count; i++) {
msg_task_t finalize = MSG_task_create("finalize", 0, 0, FINALIZE);
- MSG_task_send(finalize, MSG_host_get_name(slaves[i]));
+ MSG_task_send(finalize, MSG_host_get_name(workers[i]));
}
XBT_INFO("Goodbye now!");
- free(slaves);
+ free(workers);
free(todo);
return 0;
}
-static int slave(int argc, char *argv[])
+static int worker(int argc, char *argv[])
{
msg_task_t task = NULL;
XBT_ATTRIB_UNUSED int res;
MSG_create_environment(argv[1]);
MSG_function_register("master", master);
- MSG_function_register("slave", slave);
+ MSG_function_register("worker", worker);
MSG_launch_application(argv[2]);
res = MSG_main();
--- /dev/null
+#! ./tesh
+
+p Testing a simple master/worker example application. TCP crosstraffic DISABLED
+
+! output sort 19
+$ $SG_TEST_EXENV ${bindir:=.}/masterworker$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterworker/masterworker_d.xml --cfg=network/crosstraffic:0 --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to '0'
+> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
+> [ 0.162005] (1:master@Tremblay) Sent
+> [ 0.162005] (1:master@Tremblay) Sending "Task_1" to "Fafard"
+> [ 0.162005] (3:worker@Jupiter) Received "Task_0"
+> [ 0.162005] (3:worker@Jupiter) Processing "Task_0"
+> [ 0.314083] (1:master@Tremblay) Sent
+> [ 0.314083] (1:master@Tremblay) Sending "Task_2" to "Ginette"
+> [ 0.314083] (4:worker@Fafard) Received "Task_1"
+> [ 0.314083] (4:worker@Fafard) Processing "Task_1"
+> [ 0.432712] (1:master@Tremblay) Sent
+> [ 0.432712] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
+> [ 0.432712] (5:worker@Ginette) Received "Task_2"
+> [ 0.432712] (5:worker@Ginette) Processing "Task_2"
+> [ 0.560227] (1:master@Tremblay) Sent
+> [ 0.560227] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
+> [ 0.560227] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 0.560227] (6:worker@Bourassa) Received "Task_3"
+> [ 0.560227] (6:worker@Bourassa) Processing "Task_3"
+> [ 0.562492] (1:master@Tremblay) Sent
+> [ 0.562492] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
+> [ 0.562492] (2:worker@Tremblay) Received "Task_4"
+> [ 0.562492] (2:worker@Tremblay) Processing "Task_4"
+> [ 0.817347] (3:worker@Jupiter) "Task_0" done
+> [ 0.969426] (4:worker@Fafard) "Task_1" done
+> [ 0.979353] (1:master@Tremblay) Sent
+> [ 0.979353] (1:master@Tremblay) Sending "Task_6" to "Fafard"
+> [ 0.979353] (3:worker@Jupiter) Received "Task_5"
+> [ 0.979353] (3:worker@Jupiter) Processing "Task_5"
+> [ 1.072202] (2:worker@Tremblay) "Task_4" done
+> [ 1.131431] (1:master@Tremblay) Sent
+> [ 1.131431] (1:master@Tremblay) Sending "Task_7" to "Ginette"
+> [ 1.131431] (4:worker@Fafard) Received "Task_6"
+> [ 1.131431] (4:worker@Fafard) Processing "Task_6"
+> [ 1.463809] (5:worker@Ginette) "Task_2" done
+> [ 1.582438] (1:master@Tremblay) Sent
+> [ 1.582438] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
+> [ 1.582438] (5:worker@Ginette) Received "Task_7"
+> [ 1.582438] (5:worker@Ginette) Processing "Task_7"
+> [ 1.591325] (6:worker@Bourassa) "Task_3" done
+> [ 1.634695] (3:worker@Jupiter) "Task_5" done
+> [ 1.718840] (1:master@Tremblay) Sent
+> [ 1.718840] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
+> [ 1.718840] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 1.718840] (6:worker@Bourassa) Received "Task_8"
+> [ 1.718840] (6:worker@Bourassa) Processing "Task_8"
+> [ 1.721105] (1:master@Tremblay) Sent
+> [ 1.721105] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
+> [ 1.721105] (2:worker@Tremblay) Received "Task_9"
+> [ 1.721105] (2:worker@Tremblay) Processing "Task_9"
+> [ 1.786773] (4:worker@Fafard) "Task_6" done
+> [ 1.883110] (1:master@Tremblay) Sent
+> [ 1.883110] (1:master@Tremblay) Sending "Task_11" to "Fafard"
+> [ 1.883110] (3:worker@Jupiter) Received "Task_10"
+> [ 1.883110] (3:worker@Jupiter) Processing "Task_10"
+> [ 2.035188] (1:master@Tremblay) Sent
+> [ 2.035188] (1:master@Tremblay) Sending "Task_12" to "Ginette"
+> [ 2.035188] (4:worker@Fafard) Received "Task_11"
+> [ 2.035188] (4:worker@Fafard) Processing "Task_11"
+> [ 2.230815] (2:worker@Tremblay) "Task_9" done
+> [ 2.538453] (3:worker@Jupiter) "Task_10" done
+> [ 2.613536] (5:worker@Ginette) "Task_7" done
+> [ 2.690531] (4:worker@Fafard) "Task_11" done
+> [ 2.732164] (1:master@Tremblay) Sent
+> [ 2.732164] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
+> [ 2.732164] (5:worker@Ginette) Received "Task_12"
+> [ 2.732164] (5:worker@Ginette) Processing "Task_12"
+> [ 2.749938] (6:worker@Bourassa) "Task_8" done
+> [ 2.877453] (1:master@Tremblay) Sent
+> [ 2.877453] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
+> [ 2.877453] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 2.877453] (6:worker@Bourassa) Received "Task_13"
+> [ 2.877453] (6:worker@Bourassa) Processing "Task_13"
+> [ 2.879718] (1:master@Tremblay) Sent
+> [ 2.879718] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
+> [ 2.879718] (2:worker@Tremblay) Received "Task_14"
+> [ 2.879718] (2:worker@Tremblay) Processing "Task_14"
+> [ 3.041723] (1:master@Tremblay) Sent
+> [ 3.041723] (1:master@Tremblay) Sending "Task_16" to "Fafard"
+> [ 3.041723] (3:worker@Jupiter) Received "Task_15"
+> [ 3.041723] (3:worker@Jupiter) Processing "Task_15"
+> [ 3.193802] (1:master@Tremblay) Sent
+> [ 3.193802] (1:master@Tremblay) Sending "Task_17" to "Ginette"
+> [ 3.193802] (4:worker@Fafard) Received "Task_16"
+> [ 3.193802] (4:worker@Fafard) Processing "Task_16"
+> [ 3.389428] (2:worker@Tremblay) "Task_14" done
+> [ 3.697066] (3:worker@Jupiter) "Task_15" done
+> [ 3.763262] (5:worker@Ginette) "Task_12" done
+> [ 3.849144] (4:worker@Fafard) "Task_16" done
+> [ 3.881890] (1:master@Tremblay) Sent
+> [ 3.881890] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
+> [ 3.881890] (5:worker@Ginette) Received "Task_17"
+> [ 3.881890] (5:worker@Ginette) Processing "Task_17"
+> [ 3.908551] (6:worker@Bourassa) "Task_13" done
+> [ 4.036066] (1:master@Tremblay) Sent
+> [ 4.036066] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
+> [ 4.036066] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 4.036066] (6:worker@Bourassa) Received "Task_18"
+> [ 4.036066] (6:worker@Bourassa) Processing "Task_18"
+> [ 4.038331] (1:master@Tremblay) Sent
+> [ 4.038331] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 4.038331] (2:worker@Tremblay) Received "Task_19"
+> [ 4.038331] (2:worker@Tremblay) Processing "Task_19"
+> [ 4.057346] (3:worker@Jupiter) Received "finalize"
+> [ 4.057346] (3:worker@Jupiter) I'm done. See you!
+> [ 4.083054] (4:worker@Fafard) Received "finalize"
+> [ 4.083054] (4:worker@Fafard) I'm done. See you!
+> [ 4.548041] (2:worker@Tremblay) "Task_19" done
+> [ 4.912988] (5:worker@Ginette) "Task_17" done
+> [ 4.929540] (5:worker@Ginette) Received "finalize"
+> [ 4.929540] (5:worker@Ginette) I'm done. See you!
+> [ 5.067164] (6:worker@Bourassa) "Task_18" done
+> [ 5.092603] (6:worker@Bourassa) Received "finalize"
+> [ 5.092603] (6:worker@Bourassa) I'm done. See you!
+> [ 5.092798] (0:maestro@) Simulation time 5.0928
+> [ 5.092798] (1:master@Tremblay) Goodbye now!
+> [ 5.092798] (2:worker@Tremblay) Received "finalize"
+> [ 5.092798] (2:worker@Tremblay) I'm done. See you!
+
+p Testing a simple master/worker example application. TCP crosstraffic DISABLED
+
+$ $SG_TEST_EXENV ${bindir:=.}/masterworker$EXEEXT ${srcdir:=.}/small_platform_with_routers.xml ${srcdir:=.}/../msg/masterworker/masterworker_d.xml --trace "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
+> [ 0.169155] (3:worker@Jupiter) Received "Task_0"
+> [ 0.169155] (3:worker@Jupiter) Processing "Task_0"
+> [ 0.169155] (1:master@Tremblay) Sent
+> [ 0.169155] (1:master@Tremblay) Sending "Task_1" to "Fafard"
+> [ 0.327551] (4:worker@Fafard) Received "Task_1"
+> [ 0.327551] (4:worker@Fafard) Processing "Task_1"
+> [ 0.327551] (1:master@Tremblay) Sent
+> [ 0.327551] (1:master@Tremblay) Sending "Task_2" to "Ginette"
+> [ 0.451283] (5:worker@Ginette) Received "Task_2"
+> [ 0.451283] (5:worker@Ginette) Processing "Task_2"
+> [ 0.451283] (1:master@Tremblay) Sent
+> [ 0.451283] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
+> [ 0.583902] (6:worker@Bourassa) Received "Task_3"
+> [ 0.583902] (6:worker@Bourassa) Processing "Task_3"
+> [ 0.583902] (1:master@Tremblay) Sent
+> [ 0.583902] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
+> [ 0.583902] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 0.586168] (2:worker@Tremblay) Received "Task_4"
+> [ 0.586168] (2:worker@Tremblay) Processing "Task_4"
+> [ 0.586168] (1:master@Tremblay) Sent
+> [ 0.586168] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
+> [ 0.824497] (3:worker@Jupiter) "Task_0" done
+> [ 0.982894] (4:worker@Fafard) "Task_1" done
+> [ 0.993652] (1:master@Tremblay) Sent
+> [ 0.993652] (1:master@Tremblay) Sending "Task_6" to "Fafard"
+> [ 0.993652] (3:worker@Jupiter) Received "Task_5"
+> [ 0.993652] (3:worker@Jupiter) Processing "Task_5"
+> [ 1.095878] (2:worker@Tremblay) "Task_4" done
+> [ 1.152048] (4:worker@Fafard) Received "Task_6"
+> [ 1.152048] (4:worker@Fafard) Processing "Task_6"
+> [ 1.152048] (1:master@Tremblay) Sent
+> [ 1.152048] (1:master@Tremblay) Sending "Task_7" to "Ginette"
+> [ 1.482381] (5:worker@Ginette) "Task_2" done
+> [ 1.606113] (1:master@Tremblay) Sent
+> [ 1.606113] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
+> [ 1.606113] (5:worker@Ginette) Received "Task_7"
+> [ 1.606113] (5:worker@Ginette) Processing "Task_7"
+> [ 1.615000] (6:worker@Bourassa) "Task_3" done
+> [ 1.648994] (3:worker@Jupiter) "Task_5" done
+> [ 1.747619] (1:master@Tremblay) Sent
+> [ 1.747619] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
+> [ 1.747619] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 1.747619] (6:worker@Bourassa) Received "Task_8"
+> [ 1.747619] (6:worker@Bourassa) Processing "Task_8"
+> [ 1.749885] (2:worker@Tremblay) Received "Task_9"
+> [ 1.749885] (2:worker@Tremblay) Processing "Task_9"
+> [ 1.749885] (1:master@Tremblay) Sent
+> [ 1.749885] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
+> [ 1.807391] (4:worker@Fafard) "Task_6" done
+> [ 1.919039] (3:worker@Jupiter) Received "Task_10"
+> [ 1.919039] (3:worker@Jupiter) Processing "Task_10"
+> [ 1.919039] (1:master@Tremblay) Sent
+> [ 1.919039] (1:master@Tremblay) Sending "Task_11" to "Fafard"
+> [ 2.077436] (4:worker@Fafard) Received "Task_11"
+> [ 2.077436] (4:worker@Fafard) Processing "Task_11"
+> [ 2.077436] (1:master@Tremblay) Sent
+> [ 2.077436] (1:master@Tremblay) Sending "Task_12" to "Ginette"
+> [ 2.259594] (2:worker@Tremblay) "Task_9" done
+> [ 2.574382] (3:worker@Jupiter) "Task_10" done
+> [ 2.637211] (5:worker@Ginette) "Task_7" done
+> [ 2.732778] (4:worker@Fafard) "Task_11" done
+> [ 2.760943] (1:master@Tremblay) Sent
+> [ 2.760943] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
+> [ 2.760943] (5:worker@Ginette) Received "Task_12"
+> [ 2.760943] (5:worker@Ginette) Processing "Task_12"
+> [ 2.778717] (6:worker@Bourassa) "Task_8" done
+> [ 2.911336] (1:master@Tremblay) Sent
+> [ 2.911336] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
+> [ 2.911336] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 2.911336] (6:worker@Bourassa) Received "Task_13"
+> [ 2.911336] (6:worker@Bourassa) Processing "Task_13"
+> [ 2.913601] (2:worker@Tremblay) Received "Task_14"
+> [ 2.913601] (2:worker@Tremblay) Processing "Task_14"
+> [ 2.913601] (1:master@Tremblay) Sent
+> [ 2.913601] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
+> [ 3.082756] (3:worker@Jupiter) Received "Task_15"
+> [ 3.082756] (3:worker@Jupiter) Processing "Task_15"
+> [ 3.082756] (1:master@Tremblay) Sent
+> [ 3.082756] (1:master@Tremblay) Sending "Task_16" to "Fafard"
+> [ 3.241153] (4:worker@Fafard) Received "Task_16"
+> [ 3.241153] (4:worker@Fafard) Processing "Task_16"
+> [ 3.241153] (1:master@Tremblay) Sent
+> [ 3.241153] (1:master@Tremblay) Sending "Task_17" to "Ginette"
+> [ 3.423311] (2:worker@Tremblay) "Task_14" done
+> [ 3.738098] (3:worker@Jupiter) "Task_15" done
+> [ 3.792041] (5:worker@Ginette) "Task_12" done
+> [ 3.896495] (4:worker@Fafard) "Task_16" done
+> [ 3.915773] (1:master@Tremblay) Sent
+> [ 3.915773] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
+> [ 3.915773] (5:worker@Ginette) Received "Task_17"
+> [ 3.915773] (5:worker@Ginette) Processing "Task_17"
+> [ 3.942434] (6:worker@Bourassa) "Task_13" done
+> [ 4.075053] (1:master@Tremblay) Sent
+> [ 4.075053] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
+> [ 4.075053] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 4.075053] (6:worker@Bourassa) Received "Task_18"
+> [ 4.075053] (6:worker@Bourassa) Processing "Task_18"
+> [ 4.077318] (2:worker@Tremblay) Received "Task_19"
+> [ 4.077318] (2:worker@Tremblay) Processing "Task_19"
+> [ 4.077318] (1:master@Tremblay) Sent
+> [ 4.077318] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 4.096333] (3:worker@Jupiter) Received "finalize"
+> [ 4.096333] (3:worker@Jupiter) I'm done. See you!
+> [ 4.122041] (4:worker@Fafard) Received "finalize"
+> [ 4.122041] (4:worker@Fafard) I'm done. See you!
+> [ 4.587028] (2:worker@Tremblay) "Task_19" done
+> [ 4.946871] (5:worker@Ginette) "Task_17" done
+> [ 4.963423] (5:worker@Ginette) Received "finalize"
+> [ 4.963423] (5:worker@Ginette) I'm done. See you!
+> [ 5.106151] (6:worker@Bourassa) "Task_18" done
+> [ 5.131590] (6:worker@Bourassa) Received "finalize"
+> [ 5.131590] (6:worker@Bourassa) I'm done. See you!
+> [ 5.131785] (2:worker@Tremblay) Received "finalize"
+> [ 5.131785] (2:worker@Tremblay) I'm done. See you!
+> [ 5.131785] (1:master@Tremblay) Goodbye now!
+> [ 5.131785] (0:maestro@) Simulation time 5.13179
--- /dev/null
+#! ./tesh
+
+p Testing a simple master/worker example application
+
+! output sort 19
+$ $SG_TEST_EXENV ${bindir:=.}/masterworker$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker/masterworker_d.xml --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Configuration change: Set 'cpu/optim' to 'TI'
+> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
+> [ 0.169155] (1:master@Tremblay) Sent
+> [ 0.169155] (1:master@Tremblay) Sending "Task_1" to "Fafard"
+> [ 0.169155] (3:worker@Jupiter) Received "Task_0"
+> [ 0.169155] (3:worker@Jupiter) Processing "Task_0"
+> [ 0.327551] (1:master@Tremblay) Sent
+> [ 0.327551] (1:master@Tremblay) Sending "Task_2" to "Ginette"
+> [ 0.327551] (4:worker@Fafard) Received "Task_1"
+> [ 0.327551] (4:worker@Fafard) Processing "Task_1"
+> [ 0.451283] (1:master@Tremblay) Sent
+> [ 0.451283] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
+> [ 0.451283] (5:worker@Ginette) Received "Task_2"
+> [ 0.451283] (5:worker@Ginette) Processing "Task_2"
+> [ 0.583902] (1:master@Tremblay) Sent
+> [ 0.583902] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
+> [ 0.583902] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 0.583902] (6:worker@Bourassa) Received "Task_3"
+> [ 0.583902] (6:worker@Bourassa) Processing "Task_3"
+> [ 0.586168] (1:master@Tremblay) Sent
+> [ 0.586168] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
+> [ 0.586168] (2:worker@Tremblay) Received "Task_4"
+> [ 0.586168] (2:worker@Tremblay) Processing "Task_4"
+> [ 0.824497] (3:worker@Jupiter) "Task_0" done
+> [ 0.982894] (4:worker@Fafard) "Task_1" done
+> [ 0.993652] (1:master@Tremblay) Sent
+> [ 0.993652] (1:master@Tremblay) Sending "Task_6" to "Fafard"
+> [ 0.993652] (3:worker@Jupiter) Received "Task_5"
+> [ 0.993652] (3:worker@Jupiter) Processing "Task_5"
+> [ 1.095878] (2:worker@Tremblay) "Task_4" done
+> [ 1.152048] (1:master@Tremblay) Sent
+> [ 1.152048] (1:master@Tremblay) Sending "Task_7" to "Ginette"
+> [ 1.152048] (4:worker@Fafard) Received "Task_6"
+> [ 1.152048] (4:worker@Fafard) Processing "Task_6"
+> [ 1.482381] (5:worker@Ginette) "Task_2" done
+> [ 1.606113] (1:master@Tremblay) Sent
+> [ 1.606113] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
+> [ 1.606113] (5:worker@Ginette) Received "Task_7"
+> [ 1.606113] (5:worker@Ginette) Processing "Task_7"
+> [ 1.615000] (6:worker@Bourassa) "Task_3" done
+> [ 1.648994] (3:worker@Jupiter) "Task_5" done
+> [ 1.747619] (1:master@Tremblay) Sent
+> [ 1.747619] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
+> [ 1.747619] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 1.747619] (6:worker@Bourassa) Received "Task_8"
+> [ 1.747619] (6:worker@Bourassa) Processing "Task_8"
+> [ 1.749885] (1:master@Tremblay) Sent
+> [ 1.749885] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
+> [ 1.749885] (2:worker@Tremblay) Received "Task_9"
+> [ 1.749885] (2:worker@Tremblay) Processing "Task_9"
+> [ 1.807391] (4:worker@Fafard) "Task_6" done
+> [ 1.919039] (1:master@Tremblay) Sent
+> [ 1.919039] (1:master@Tremblay) Sending "Task_11" to "Fafard"
+> [ 1.919039] (3:worker@Jupiter) Received "Task_10"
+> [ 1.919039] (3:worker@Jupiter) Processing "Task_10"
+> [ 2.077436] (1:master@Tremblay) Sent
+> [ 2.077436] (1:master@Tremblay) Sending "Task_12" to "Ginette"
+> [ 2.077436] (4:worker@Fafard) Received "Task_11"
+> [ 2.077436] (4:worker@Fafard) Processing "Task_11"
+> [ 2.259594] (2:worker@Tremblay) "Task_9" done
+> [ 2.574382] (3:worker@Jupiter) "Task_10" done
+> [ 2.637211] (5:worker@Ginette) "Task_7" done
+> [ 2.732778] (4:worker@Fafard) "Task_11" done
+> [ 2.760943] (1:master@Tremblay) Sent
+> [ 2.760943] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
+> [ 2.760943] (5:worker@Ginette) Received "Task_12"
+> [ 2.760943] (5:worker@Ginette) Processing "Task_12"
+> [ 2.778717] (6:worker@Bourassa) "Task_8" done
+> [ 2.911336] (1:master@Tremblay) Sent
+> [ 2.911336] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
+> [ 2.911336] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 2.911336] (6:worker@Bourassa) Received "Task_13"
+> [ 2.911336] (6:worker@Bourassa) Processing "Task_13"
+> [ 2.913601] (1:master@Tremblay) Sent
+> [ 2.913601] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
+> [ 2.913601] (2:worker@Tremblay) Received "Task_14"
+> [ 2.913601] (2:worker@Tremblay) Processing "Task_14"
+> [ 3.082756] (1:master@Tremblay) Sent
+> [ 3.082756] (1:master@Tremblay) Sending "Task_16" to "Fafard"
+> [ 3.082756] (3:worker@Jupiter) Received "Task_15"
+> [ 3.082756] (3:worker@Jupiter) Processing "Task_15"
+> [ 3.241153] (1:master@Tremblay) Sent
+> [ 3.241153] (1:master@Tremblay) Sending "Task_17" to "Ginette"
+> [ 3.241153] (4:worker@Fafard) Received "Task_16"
+> [ 3.241153] (4:worker@Fafard) Processing "Task_16"
+> [ 3.423311] (2:worker@Tremblay) "Task_14" done
+> [ 3.738098] (3:worker@Jupiter) "Task_15" done
+> [ 3.792041] (5:worker@Ginette) "Task_12" done
+> [ 3.896495] (4:worker@Fafard) "Task_16" done
+> [ 3.915773] (1:master@Tremblay) Sent
+> [ 3.915773] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
+> [ 3.915773] (5:worker@Ginette) Received "Task_17"
+> [ 3.915773] (5:worker@Ginette) Processing "Task_17"
+> [ 3.942434] (6:worker@Bourassa) "Task_13" done
+> [ 4.075053] (1:master@Tremblay) Sent
+> [ 4.075053] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
+> [ 4.075053] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 4.075053] (6:worker@Bourassa) Received "Task_18"
+> [ 4.075053] (6:worker@Bourassa) Processing "Task_18"
+> [ 4.077318] (1:master@Tremblay) Sent
+> [ 4.077318] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 4.077318] (2:worker@Tremblay) Received "Task_19"
+> [ 4.077318] (2:worker@Tremblay) Processing "Task_19"
+> [ 4.096333] (3:worker@Jupiter) Received "finalize"
+> [ 4.096333] (3:worker@Jupiter) I'm done. See you!
+> [ 4.122041] (4:worker@Fafard) Received "finalize"
+> [ 4.122041] (4:worker@Fafard) I'm done. See you!
+> [ 4.587028] (2:worker@Tremblay) "Task_19" done
+> [ 4.946871] (5:worker@Ginette) "Task_17" done
+> [ 4.963423] (5:worker@Ginette) Received "finalize"
+> [ 4.963423] (5:worker@Ginette) I'm done. See you!
+> [ 5.106151] (6:worker@Bourassa) "Task_18" done
+> [ 5.131590] (6:worker@Bourassa) Received "finalize"
+> [ 5.131590] (6:worker@Bourassa) I'm done. See you!
+> [ 5.131785] (0:maestro@) Simulation time 5.13179
+> [ 5.131785] (1:master@Tremblay) Goodbye now!
+> [ 5.131785] (2:worker@Tremblay) Received "finalize"
+> [ 5.131785] (2:worker@Tremblay) I'm done. See you!
+
+p Testing a simple master/worker example application
+
+! output sort 19
+$ $SG_TEST_EXENV ${bindir:=.}/masterworker$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker/masterworker_d.xml --cfg=network/crosstraffic:0 --cfg=cpu/optim:TI "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (0:maestro@) Configuration change: Set 'network/crosstraffic' to '0'
+> [ 0.000000] (0:maestro@) Configuration change: Set 'cpu/optim' to 'TI'
+> [ 0.000000] (1:master@Tremblay) Got 5 workers and 20 tasks to process
+> [ 0.000000] (1:master@Tremblay) Sending "Task_0" to "Jupiter"
+> [ 0.165962] (1:master@Tremblay) Sent
+> [ 0.165962] (1:master@Tremblay) Sending "Task_1" to "Fafard"
+> [ 0.165962] (3:worker@Jupiter) Received "Task_0"
+> [ 0.165962] (3:worker@Jupiter) Processing "Task_0"
+> [ 0.384115] (1:master@Tremblay) Sent
+> [ 0.384115] (1:master@Tremblay) Sending "Task_2" to "Ginette"
+> [ 0.384115] (4:worker@Fafard) Received "Task_1"
+> [ 0.384115] (4:worker@Fafard) Processing "Task_1"
+> [ 0.524575] (1:master@Tremblay) Sent
+> [ 0.524575] (1:master@Tremblay) Sending "Task_3" to "Bourassa"
+> [ 0.524575] (5:worker@Ginette) Received "Task_2"
+> [ 0.524575] (5:worker@Ginette) Processing "Task_2"
+> [ 0.740447] (1:master@Tremblay) Sent
+> [ 0.740447] (1:master@Tremblay) Sending "Task_4" to "Tremblay"
+> [ 0.740447] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 0.740447] (6:worker@Bourassa) Received "Task_3"
+> [ 0.740447] (6:worker@Bourassa) Processing "Task_3"
+> [ 0.742786] (1:master@Tremblay) Sent
+> [ 0.742786] (1:master@Tremblay) Sending "Task_5" to "Jupiter"
+> [ 0.742786] (2:worker@Tremblay) Received "Task_4"
+> [ 0.742786] (2:worker@Tremblay) Processing "Task_4"
+> [ 0.821304] (3:worker@Jupiter) "Task_0" done
+> [ 0.987266] (1:master@Tremblay) Sent
+> [ 0.987266] (1:master@Tremblay) Sending "Task_6" to "Fafard"
+> [ 0.987266] (3:worker@Jupiter) Received "Task_5"
+> [ 0.987266] (3:worker@Jupiter) Processing "Task_5"
+> [ 1.039457] (4:worker@Fafard) "Task_1" done
+> [ 1.252495] (2:worker@Tremblay) "Task_4" done
+> [ 1.257610] (1:master@Tremblay) Sent
+> [ 1.257610] (1:master@Tremblay) Sending "Task_7" to "Ginette"
+> [ 1.257610] (4:worker@Fafard) Received "Task_6"
+> [ 1.257610] (4:worker@Fafard) Processing "Task_6"
+> [ 1.555672] (5:worker@Ginette) "Task_2" done
+> [ 1.642608] (3:worker@Jupiter) "Task_5" done
+> [ 1.696132] (1:master@Tremblay) Sent
+> [ 1.696132] (1:master@Tremblay) Sending "Task_8" to "Bourassa"
+> [ 1.696132] (5:worker@Ginette) Received "Task_7"
+> [ 1.696132] (5:worker@Ginette) Processing "Task_7"
+> [ 1.771545] (6:worker@Bourassa) "Task_3" done
+> [ 1.912953] (4:worker@Fafard) "Task_6" done
+> [ 1.987417] (1:master@Tremblay) Sent
+> [ 1.987417] (1:master@Tremblay) Sending "Task_9" to "Tremblay"
+> [ 1.987417] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 1.987417] (6:worker@Bourassa) Received "Task_8"
+> [ 1.987417] (6:worker@Bourassa) Processing "Task_8"
+> [ 1.989756] (1:master@Tremblay) Sent
+> [ 1.989756] (1:master@Tremblay) Sending "Task_10" to "Jupiter"
+> [ 1.989756] (2:worker@Tremblay) Received "Task_9"
+> [ 1.989756] (2:worker@Tremblay) Processing "Task_9"
+> [ 2.155718] (1:master@Tremblay) Sent
+> [ 2.155718] (1:master@Tremblay) Sending "Task_11" to "Fafard"
+> [ 2.155718] (3:worker@Jupiter) Received "Task_10"
+> [ 2.155718] (3:worker@Jupiter) Processing "Task_10"
+> [ 2.373871] (1:master@Tremblay) Sent
+> [ 2.373871] (1:master@Tremblay) Sending "Task_12" to "Ginette"
+> [ 2.373871] (4:worker@Fafard) Received "Task_11"
+> [ 2.373871] (4:worker@Fafard) Processing "Task_11"
+> [ 2.499466] (2:worker@Tremblay) "Task_9" done
+> [ 2.727230] (5:worker@Ginette) "Task_7" done
+> [ 2.811060] (3:worker@Jupiter) "Task_10" done
+> [ 2.867690] (1:master@Tremblay) Sent
+> [ 2.867690] (1:master@Tremblay) Sending "Task_13" to "Bourassa"
+> [ 2.867690] (5:worker@Ginette) Received "Task_12"
+> [ 2.867690] (5:worker@Ginette) Processing "Task_12"
+> [ 3.018515] (6:worker@Bourassa) "Task_8" done
+> [ 3.029213] (4:worker@Fafard) "Task_11" done
+> [ 3.234387] (1:master@Tremblay) Sent
+> [ 3.234387] (1:master@Tremblay) Sending "Task_14" to "Tremblay"
+> [ 3.234387] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 3.234387] (6:worker@Bourassa) Received "Task_13"
+> [ 3.234387] (6:worker@Bourassa) Processing "Task_13"
+> [ 3.236726] (1:master@Tremblay) Sent
+> [ 3.236726] (1:master@Tremblay) Sending "Task_15" to "Jupiter"
+> [ 3.236726] (2:worker@Tremblay) Received "Task_14"
+> [ 3.236726] (2:worker@Tremblay) Processing "Task_14"
+> [ 3.402688] (1:master@Tremblay) Sent
+> [ 3.402688] (1:master@Tremblay) Sending "Task_16" to "Fafard"
+> [ 3.402688] (3:worker@Jupiter) Received "Task_15"
+> [ 3.402688] (3:worker@Jupiter) Processing "Task_15"
+> [ 3.620841] (1:master@Tremblay) Sent
+> [ 3.620841] (1:master@Tremblay) Sending "Task_17" to "Ginette"
+> [ 3.620841] (4:worker@Fafard) Received "Task_16"
+> [ 3.620841] (4:worker@Fafard) Processing "Task_16"
+> [ 3.746436] (2:worker@Tremblay) "Task_14" done
+> [ 3.898788] (5:worker@Ginette) "Task_12" done
+> [ 4.039247] (1:master@Tremblay) Sent
+> [ 4.039247] (1:master@Tremblay) Sending "Task_18" to "Bourassa"
+> [ 4.039247] (5:worker@Ginette) Received "Task_17"
+> [ 4.039247] (5:worker@Ginette) Processing "Task_17"
+> [ 4.058030] (3:worker@Jupiter) "Task_15" done
+> [ 4.265485] (6:worker@Bourassa) "Task_13" done
+> [ 4.276183] (4:worker@Fafard) "Task_16" done
+> [ 4.481357] (1:master@Tremblay) Sent
+> [ 4.481357] (1:master@Tremblay) Sending "Task_19" to "Tremblay"
+> [ 4.481357] (1:master@Tremblay) Hey ! It's me ! :)
+> [ 4.481357] (6:worker@Bourassa) Received "Task_18"
+> [ 4.481357] (6:worker@Bourassa) Processing "Task_18"
+> [ 4.483696] (1:master@Tremblay) Sent
+> [ 4.483696] (1:master@Tremblay) All tasks have been dispatched. Let's tell everybody the computation is over.
+> [ 4.483696] (2:worker@Tremblay) Received "Task_19"
+> [ 4.483696] (2:worker@Tremblay) Processing "Task_19"
+> [ 4.498896] (3:worker@Jupiter) Received "finalize"
+> [ 4.498896] (3:worker@Jupiter) I'm done. See you!
+> [ 4.519447] (4:worker@Fafard) Received "finalize"
+> [ 4.519447] (4:worker@Fafard) I'm done. See you!
+> [ 4.993406] (2:worker@Tremblay) "Task_19" done
+> [ 5.070345] (5:worker@Ginette) "Task_17" done
+> [ 5.083577] (5:worker@Ginette) Received "finalize"
+> [ 5.083577] (5:worker@Ginette) I'm done. See you!
+> [ 5.512455] (6:worker@Bourassa) "Task_18" done
+> [ 5.532791] (6:worker@Bourassa) Received "finalize"
+> [ 5.532791] (6:worker@Bourassa) I'm done. See you!
+> [ 5.532947] (0:maestro@) Simulation time 5.53295
+> [ 5.532947] (1:master@Tremblay) Goodbye now!
+> [ 5.532947] (2:worker@Tremblay) Received "finalize"
+> [ 5.532947] (2:worker@Tremblay) I'm done. See you!
+
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+ <!-- The master process (with some arguments) -->
+ <process host="Tremblay" function="master">
+ <argument value="20"/> <!-- Number of tasks -->
+ <argument value="50000000"/> <!-- Computation size of tasks -->
+ <argument value="1000000"/> <!-- Communication size of tasks -->
+ <argument value="Jupiter"/> <!-- First worker -->
+ <argument value="Fafard"/> <!-- Second worker -->
+ <argument value="Ginette"/> <!-- Third worker -->
+ <argument value="Bourassa"/> <!-- Last worker -->
+ <argument value="Tremblay"/> <!-- Me! I can work too! -->
+ </process>
+ <!-- The worker process (with no argument) -->
+ <process host="Tremblay" function="worker" on_failure="RESTART"/>
+ <process host="Jupiter" function="worker" on_failure="RESTART"/>
+ <process host="Fafard" function="worker" on_failure="RESTART"/>
+ <process host="Ginette" function="worker" on_failure="RESTART"/>
+ <process host="Bourassa" function="worker" on_failure="RESTART"/>
+</platform>
<argument value="Jupiter"/>
<argument value="1"/>
</process>
- <process host="Jupiter" function="slave">
+ <process host="Jupiter" function="worker">
<argument value="1"/>
</process>
</platform>
<argument value="Jupiter"/>
<argument value="1"/>
</process>
- <process host="Jupiter" function="slave">
+ <process host="Jupiter" function="worker">
<argument value="1"/>
</process>
<process host="Fafard" function="master">
<argument value="Ginette"/>
<argument value="2"/>
</process>
- <process host="Ginette" function="slave">
+ <process host="Ginette" function="worker">
<argument value="2"/>
</process>
<process host="Bourassa" function="master">
<argument value="Lovelace"/>
<argument value="3"/>
</process>
- <process host="Lovelace" function="slave">
+ <process host="Lovelace" function="worker">
<argument value="3"/>
</process>
<process host="Bourassa" function="master" start_time="2.0">
<argument value="Lovelace"/>
<argument value="4"/>
</process>
- <process host="Lovelace" function="slave">
+ <process host="Lovelace" function="worker">
<argument value="4"/>
</process>
<process host="Lovelace" function="timer">
<argument value="Jupiter"/>
<argument value="1"/>
</process>
- <process host="Jupiter" function="slave">
+ <process host="Jupiter" function="worker">
<argument value="1"/>
</process>
<process host="Fafard" function="master">
<argument value="Ginette"/>
<argument value="2"/>
</process>
- <process host="Ginette" function="slave">
+ <process host="Ginette" function="worker">
<argument value="2"/>
</process>
<process host="Bourassa" function="master">
<argument value="Lovelace"/>
<argument value="3"/>
</process>
- <process host="Lovelace" function="slave">
+ <process host="Lovelace" function="worker">
<argument value="3"/>
</process>
</platform>
<argument value="C1"/>
<argument value="1"/>
</process>
- <process host="C1" function="slave">
+ <process host="C1" function="worker">
<argument value="1"/>
</process>
<process host="S1" function="master">
<argument value="C1"/>
<argument value="2"/>
</process>
- <process host="C1" function="slave">
+ <process host="C1" function="worker">
<argument value="2"/>
</process>
<process host="S1" function="master">
<argument value="C1"/>
<argument value="3"/>
</process>
- <process host="C1" function="slave">
+ <process host="C1" function="worker">
<argument value="3"/>
</process>
<process host="C1" function="master">
<argument value="S1"/>
<argument value="4"/>
</process>
- <process host="S1" function="slave">
+ <process host="S1" function="worker">
<argument value="4"/>
</process>
</platform>
<argument value="C2"/>
<argument value="1"/>
</process>
- <process host="C1" function="slave">
+ <process host="C1" function="worker">
<argument value="0"/>
</process>
- <process host="C2" function="slave">
+ <process host="C2" function="worker">
<argument value="1"/>
</process>
</platform>
double start_time, end_time, elapsed_time;
double gl_data_size[NTASKS];
msg_task_t gl_task_array[NTASKS];
-const char *slavenames[NTASKS];
+const char *workernames[NTASKS];
const char *masternames[NTASKS];
int gl_task_array_id = 0;
int count_finished = 0;
/* data size */
double task_comm_size = xbt_str_parse_double(argv[1], "Invalid task communication size: %s");
- /* slave name */
- char *slavename = argv[2];
+ /* worker name */
+ char *workername = argv[2];
int id = xbt_str_parse_int(argv[3], "Invalid ID as argument 3: %s"); //unique id to control statistics
char *id_alias = bprintf("flow_%d", id);
- slavenames[id] = slavename;
+ workernames[id] = workername;
TRACE_category(id_alias);
masternames[id] = MSG_host_get_name(MSG_host_self());
gl_data_size[id] = task_comm_size;
}
- MSG_host_by_name(slavename);
+ MSG_host_by_name(workername);
count_finished++;
timer_start = 1 ;
return 0;
}
-static int slave(int argc, char *argv[])
+static int worker(int argc, char *argv[])
{
msg_task_t task = NULL;
char id_alias[10];
xbt_assert(argc==2,"Strange number of arguments expected 1 got %d", argc - 1);
- XBT_DEBUG ("Slave started");
+ XBT_DEBUG ("Worker started");
int id = xbt_str_parse_int(argv[1], "Invalid id: %s");
sprintf(id_alias, "%d", id);
elapsed_time = MSG_get_clock() - start_time;
XBT_INFO("FLOW[%d] : Receive %.0f bytes from %s to %s", id, MSG_task_get_bytes_amount(task), masternames[id],
- slavenames[id]);
+ workernames[id]);
// MSG_task_execute(task);
MSG_task_destroy(task);
TRACE_declare_mark("endmark");
MSG_function_register("master", master);
- MSG_function_register("slave", slave);
+ MSG_function_register("worker", worker);
MSG_function_register("timer", timer);
MSG_launch_application(argv[2]);
$ ns3/ns3 ${srcdir:=.}/examples/platforms/small_platform_one_link_routes.xml ${srcdir:=.}/examples/msg/ns3/3hosts_2links_d.xml --cfg=network/model:NS3 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
-> [Jupiter:slave(2)] [msg_test/INFO] FLOW[1] : Receive 100 bytes from Tremblay to Jupiter
+> [Jupiter:worker(2)] [msg_test/INFO] FLOW[1] : Receive 100 bytes from Tremblay to Jupiter
p 6hosts 3links
$ ns3/ns3 ${srcdir:=.}/examples/platforms/small_platform_one_link_routes.xml ${srcdir:=.}/examples/msg/ns3/3links_d.xml --cfg=network/model:NS3 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
-> [Jupiter:slave(2)] [msg_test/INFO] FLOW[1] : Receive 100000 bytes from Tremblay to Jupiter
-> [Ginette:slave(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from Fafard to Ginette
-> [Lovelace:slave(6)] [msg_test/INFO] FLOW[3] : Receive 2000000 bytes from Bourassa to Lovelace
+> [Jupiter:worker(2)] [msg_test/INFO] FLOW[1] : Receive 100000 bytes from Tremblay to Jupiter
+> [Ginette:worker(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from Fafard to Ginette
+> [Lovelace:worker(6)] [msg_test/INFO] FLOW[3] : Receive 2000000 bytes from Bourassa to Lovelace
$ ns3/ns3 ${srcdir:=.}/examples/platforms/small_platform_one_link_routes.xml ${srcdir:=.}/examples/msg/ns3/3links-timer_d.xml --cfg=network/model:NS3 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
-> [Jupiter:slave(2)] [msg_test/INFO] FLOW[1] : Receive 100000 bytes from Tremblay to Jupiter
-> [Ginette:slave(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from Fafard to Ginette
-> [Lovelace:slave(6)] [msg_test/INFO] FLOW[3] : Receive 2000000 bytes from Bourassa to Lovelace
-> [Lovelace:slave(7)] [msg_test/INFO] FLOW[4] : Receive 2000000 bytes from Bourassa to Lovelace
+> [Jupiter:worker(2)] [msg_test/INFO] FLOW[1] : Receive 100000 bytes from Tremblay to Jupiter
+> [Ginette:worker(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from Fafard to Ginette
+> [Lovelace:worker(6)] [msg_test/INFO] FLOW[3] : Receive 2000000 bytes from Bourassa to Lovelace
+> [Lovelace:worker(7)] [msg_test/INFO] FLOW[4] : Receive 2000000 bytes from Bourassa to Lovelace
p One cluster
$ ns3/ns3 ${srcdir:=.}/examples/platforms/cluster.xml ${srcdir:=.}/examples/msg/ns3/one_cluster_d.xml --cfg=network/model:NS3 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
-> [node-6.acme.org:slave(2)] [msg_test/INFO] FLOW[1] : Receive 100 bytes from node-2.acme.org to node-6.acme.org
+> [node-6.acme.org:worker(2)] [msg_test/INFO] FLOW[1] : Receive 100 bytes from node-2.acme.org to node-6.acme.org
p Two clusters
$ ns3/ns3 ${srcdir:=.}/examples/platforms/clusters_routing_full.xml ${srcdir:=.}/examples/msg/ns3/two_clusters_d.xml --cfg=network/model:NS3 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
-> [node-16.acme.org:slave(2)] [msg_test/INFO] FLOW[1] : Receive 100 bytes from node-3.acme.org to node-16.acme.org
+> [node-16.acme.org:worker(2)] [msg_test/INFO] FLOW[1] : Receive 100 bytes from node-3.acme.org to node-16.acme.org
p Dogbone
! timeout 10
$ ns3/ns3 ${srcdir:=.}/examples/platforms/dogbone.xml ${srcdir:=.}/examples/msg/ns3/dogbone_d.xml --cfg=network/model:NS3 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
-> [C1:slave(3)] [msg_test/INFO] FLOW[0] : Receive 20000000 bytes from S1 to C1
-> [C2:slave(4)] [msg_test/INFO] FLOW[1] : Receive 20000000 bytes from S2 to C2
+> [C1:worker(3)] [msg_test/INFO] FLOW[0] : Receive 20000000 bytes from S1 to C1
+> [C2:worker(4)] [msg_test/INFO] FLOW[1] : Receive 20000000 bytes from S2 to C2
p 2hosts 1link
$ ns3/ns3 ${srcdir:=.}/examples/platforms/onelink.xml ${srcdir:=.}/examples/msg/ns3/onelink_d.xml --cfg=network/model:NS3 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
-> [C1:slave(2)] [msg_test/INFO] FLOW[1] : Receive 1000000 bytes from S1 to C1
+> [C1:worker(2)] [msg_test/INFO] FLOW[1] : Receive 1000000 bytes from S1 to C1
p Crosstraffic TCP option DISABLED
$ ns3/ns3 ${srcdir:=.}/examples/platforms/crosstraffic.xml ${srcdir:=.}/examples/msg/ns3/crosstraffic_d.xml --cfg=network/model:NS3 --cfg=network/crosstraffic:0 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/crosstraffic' to '0'
-> [C1:slave(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from S1 to C1
-> [C1:slave(2)] [msg_test/INFO] FLOW[1] : Receive 1000000 bytes from S1 to C1
-> [C1:slave(6)] [msg_test/INFO] FLOW[3] : Receive 1000000 bytes from S1 to C1
-> [S1:slave(8)] [msg_test/INFO] FLOW[4] : Receive 1000000 bytes from C1 to S1
+> [C1:worker(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from S1 to C1
+> [C1:worker(2)] [msg_test/INFO] FLOW[1] : Receive 1000000 bytes from S1 to C1
+> [C1:worker(6)] [msg_test/INFO] FLOW[3] : Receive 1000000 bytes from S1 to C1
+> [S1:worker(8)] [msg_test/INFO] FLOW[4] : Receive 1000000 bytes from C1 to S1
p Crosstraffic TCP option ENABLED
$ ns3/ns3 ${srcdir:=.}/examples/platforms/crosstraffic.xml ${srcdir:=.}/examples/msg/ns3/crosstraffic_d.xml --cfg=network/model:NS3 --cfg=network/crosstraffic:1 "--log=root.fmt:[%h:%P(%i)]%e[%c/%p]%e%m%n"
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'NS3'
> [:maestro(0)] [xbt_cfg/INFO] Configuration change: Set 'network/crosstraffic' to '1'
-> [C1:slave(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from S1 to C1
-> [C1:slave(2)] [msg_test/INFO] FLOW[1] : Receive 1000000 bytes from S1 to C1
-> [C1:slave(6)] [msg_test/INFO] FLOW[3] : Receive 1000000 bytes from S1 to C1
-> [S1:slave(8)] [msg_test/INFO] FLOW[4] : Receive 1000000 bytes from C1 to S1
+> [C1:worker(4)] [msg_test/INFO] FLOW[2] : Receive 1000000 bytes from S1 to C1
+> [C1:worker(2)] [msg_test/INFO] FLOW[1] : Receive 1000000 bytes from S1 to C1
+> [C1:worker(6)] [msg_test/INFO] FLOW[3] : Receive 1000000 bytes from S1 to C1
+> [S1:worker(8)] [msg_test/INFO] FLOW[4] : Receive 1000000 bytes from C1 to S1
<argument value="node-6.acme.org"/>
<argument value="1"/>
</process>
- <process host="node-6.acme.org" function="slave">
+ <process host="node-6.acme.org" function="worker">
<argument value="1"/>
</process>
</platform>
<argument value="C1"/>
<argument value="1"/>
</process>
- <process host="C1" function="slave">
+ <process host="C1" function="worker">
<argument value="1"/>
</process>
</platform>
<argument value="node-16.acme.org"/>
<argument value="1"/>
</process>
- <process host="node-16.acme.org" function="slave">
+ <process host="node-16.acme.org" function="worker">
<argument value="1"/>
</process>
</platform>
+++ /dev/null
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
-<platform version="4">
-<!-- For using with ping_pong, platform_sendrecv.xml -->
-
- <process host="Fafard" function="test">
- <argument value="76296000"/>
- <argument value="1.0"/>
- </process>
- <process host="Fafard" function="test">
- <argument value="76296000"/>
- <argument value="2.0"/>
- </process>
-</platform>
static int test(int argc, char *argv[])
{
- double computation_amount = 0.0;
- double priority = 1.0;
- msg_task_t task = NULL;
-
- XBT_ATTRIB_UNUSED int res = sscanf(argv[1], "%lg", &computation_amount);
- xbt_assert(res, "Invalid argument %s\n", argv[1]);
- res = sscanf(argv[2], "%lg", &priority);
- xbt_assert(res, "Invalid argument %s\n", argv[2]);
+ double computation_amount = xbt_str_parse_double(argv[1], "Invalid argument: %s");
+ double priority = xbt_str_parse_double(argv[2], "Invalid argument: %s");
XBT_INFO("Hello! Running a task of size %g with priority %g", computation_amount, priority);
- task = MSG_task_create("Task", computation_amount, 0.0, NULL);
+ msg_task_t task = MSG_task_create("Task", computation_amount, 0.0, NULL);
MSG_task_set_priority(task, priority);
MSG_task_execute(task);
#! ./tesh
-p Testing a simple master/slave example application
-
! output sort 19
-$ $SG_TEST_EXENV ${bindir:=.}/priority$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/priority/priority_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ $SG_TEST_EXENV ${bindir:=.}/task-priority$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/task-priority/task-priority_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:test@Fafard) Hello! Running a task of size 7.6296e+07 with priority 1
> [ 0.000000] (2:test@Fafard) Hello! Running a task of size 7.6296e+07 with priority 2
> [ 1.500000] (2:test@Fafard) Goodbye now!
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd">
+<platform version="4">
+ <process host="Fafard" function="test"> <argument value="76296000"/> <argument value="1.0"/> </process>
+ <process host="Fafard" function="test"> <argument value="76296000"/> <argument value="2.0"/> </process>
+</platform>
char mailbox[256];
msg_task_t task = NULL;
XBT_ATTRIB_UNUSED int res;
- if (host_number == 0){ //master send then receive
+ if (host_number == 0){ //root: send then receive
sprintf(mailbox, "%d", host_number+1);
task = MSG_task_create("Token", task_comp_size, task_comm_size, NULL);
XBT_INFO("Host \"%d\" send '%s' to Host \"%s\"",host_number,task->name,mailbox);
xbt_assert(res == MSG_OK, "MSG_task_get failed");
XBT_INFO("Host \"%d\" received \"%s\"",host_number, MSG_task_get_name(task));
MSG_task_destroy(task);
- } else{ //slave receive then send
+ } else{ // receive then send
res = MSG_task_receive(&(task), MSG_process_get_name(MSG_process_self()));
xbt_assert(res == MSG_OK, "MSG_task_get failed");
XBT_INFO("Host \"%d\" received \"%s\"",host_number, MSG_task_get_name(task));
/** @addtogroup MSG_examples
*
- * - <b>tracing/categories.c</b> This is a master/slave program where the master creates tasks, send them to the slaves.
- * For each task received, the slave executes it and then destroys it. This program declares several tracing categories
+ * - <b>tracing/categories.c</b> This is a master/worker program. The master creates tasks and send them to workers.
+ * For each task received, the worker executes it and then destroys it. This program declares several tracing categories
* that are used to classify tasks. When the program is executed, the tracing mechanism registers the resource
* utilization of hosts and links according to these categories. You might want to run this program with the following
* parameters:
static int master(int argc, char *argv[])
{
long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");
- long slaves_count = xbt_str_parse_int(argv[4], "Invalid amount of slaves: %s");
+ long workers_count = xbt_str_parse_int(argv[4], "Invalid amount of workers: %s");
int i;
for (i = 0; i < number_of_tasks; i++) {
MSG_task_send(task, "master_mailbox");
}
- for (i = 0; i < slaves_count; i++) {
+ for (i = 0; i < workers_count; i++) {
msg_task_t finalize = MSG_task_create("finalize", 0, 1000, 0);
MSG_task_set_category(finalize, "finalize");
MSG_task_send(finalize, "master_mailbox");
return 0;
}
-static int slave(int argc, char *argv[])
+static int worker(int argc, char *argv[])
{
msg_task_t task = NULL;
TRACE_category_with_color ("finalize", "0 0 0");//black
MSG_function_register("master", master);
- MSG_function_register("slave", slave);
+ MSG_function_register("worker", worker);
MSG_launch_application(argv[2]);
MSG_main();
#! ./tesh
-p Tracing multiple categories master/slave application
+p Tracing multiple categories master/worker application
-$ $SG_TEST_EXENV ${bindir:=.}/trace-categories$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:categories.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:categories.cat.plist --cfg=viva/uncategorized:categories.uncat.plist ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+$ $SG_TEST_EXENV ${bindir:=.}/trace-categories$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:categories.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:categories.cat.plist --cfg=viva/uncategorized:categories.uncat.plist ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'categories.trace'
MSG_task_destroy (task);
}
-static int master(int argc, char *argv[])
+static int trace_fun(int argc, char *argv[])
{
//Set initial values for the link user variables
//This example uses source and destination where source and destination are the name of hosts inthe platform file.
TRACE_link_variable_declare("Link_Capacity");
TRACE_link_variable_declare_with_color ("Link_Utilization", "0.9 0.1 0.1");
- //register "master" and "slave" functions and launch deployment
- MSG_function_register("master", master);
- MSG_function_register("slave", master);
+ //register functions and launch deployment
+ MSG_function_register("master", trace_fun);
+ MSG_function_register("worker", trace_fun);
MSG_launch_application(argv[2]);
MSG_main();
#! ./tesh
p Trace user variables associated to links of the platform file
-$ $SG_TEST_EXENV ${bindir:=.}/trace-link-srcdst-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+$ $SG_TEST_EXENV ${bindir:=.}/trace-link-srcdst-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
MSG_task_destroy (task);
}
-static int master(int argc, char *argv[])
+static int trace_fun(int argc, char *argv[])
{
//set initial values for the link user variables this example only shows for links identified by "6" and "3" in the
//platform file
TRACE_link_variable_declare("Link_Capacity");
TRACE_link_variable_declare_with_color ("Link_Utilization", "0.9 0.1 0.1");
- //register "master" and "slave" functions and launch deployment
- MSG_function_register("master", master);
- MSG_function_register("slave", master);
+ //register functions and launch deployment
+ MSG_function_register("master", trace_fun);
+ MSG_function_register("worker", trace_fun);
MSG_launch_application(argv[2]);
MSG_main();
#! ./tesh
p Trace user variables associated to links of the platform file
-$ $SG_TEST_EXENV ${bindir:=.}/trace-link-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+$ $SG_TEST_EXENV ${bindir:=.}/trace-link-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
/** @addtogroup MSG_examples
*
- * - <b>tracing/ms.c</b> This is a master/slave program where the master creates tasks, send them to the slaves. For
- * each task received, the slave executes it and then destroys it. This program uses several tracing functions that
+ * - <b>tracing/ms.c</b> This is a master/worker program where the master creates tasks, send them to the workers. For
+ * each task received, the worker executes it and then destroys it. This program uses several tracing functions that
* enable the tracing of categorized resource utilization, the use of trace marks, and user variables associated to the
* hosts of the platform file. You might want to run this program with the following parameters:
* --cfg=tracing/categorized:yes
long number_of_tasks = xbt_str_parse_int(argv[1], "Invalid amount of tasks: %s");
double task_comp_size = xbt_str_parse_double(argv[2], "Invalid computational size: %s");
double task_comm_size = xbt_str_parse_double(argv[3], "Invalid communication size: %s");
- long slaves_count = xbt_str_parse_int(argv[4], "Invalid amount of slaves: %s");
+ long workers_count = xbt_str_parse_int(argv[4], "Invalid amount of workers: %s");
//setting the variable "is_master" (previously declared) to value 1
TRACE_host_variable_set(MSG_host_get_name(MSG_host_self()), "is_master", 1);
}
TRACE_mark("msmark", "finish_send_tasks");
- for (i = 0; i < slaves_count; i++) {
+ for (i = 0; i < workers_count; i++) {
msg_task_t finalize = MSG_task_create("finalize", 0, 0, 0);
MSG_task_set_category(finalize, "finalize");
MSG_task_send(finalize, "master_mailbox");
return 0;
}
-static int slave(int argc, char *argv[])
+static int worker(int argc, char *argv[])
{
msg_task_t task = NULL;
- TRACE_host_variable_set(MSG_host_get_name(MSG_host_self()), "is_slave", 1);
+ TRACE_host_variable_set(MSG_host_get_name(MSG_host_self()), "is_worker", 1);
TRACE_host_variable_set(MSG_host_get_name(MSG_host_self()), "task_computation", 0);
while (1) {
MSG_task_receive(&(task), "master_mailbox");
MSG_create_environment(argv[1]);
//declaring user variables
- TRACE_host_variable_declare("is_slave");
+ TRACE_host_variable_declare("is_worker");
TRACE_host_variable_declare("is_master");
TRACE_host_variable_declare("task_creation");
TRACE_host_variable_declare("task_computation");
TRACE_category_with_color ("report", NULL);
MSG_function_register("master", master);
- MSG_function_register("slave", slave);
+ MSG_function_register("worker", worker);
MSG_launch_application(argv[2]);
MSG_main();
#! ./tesh
-p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterslave$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:trace-masterslave.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:trace-masterslave.cat.plist --cfg=viva/uncategorized:trace-masterslave.uncat.plist ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+p Tracing master/worker application
+$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:trace-masterworker.cat.plist --cfg=viva/uncategorized:trace-masterworker.uncat.plist ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterslave.trace'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'trace-masterslave.cat.plist'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'trace-masterslave.uncat.plist'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'trace-masterworker.cat.plist'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'trace-masterworker.uncat.plist'
> [4.214821] [msg_test/INFO] Declared tracing categories:
> [4.214821] [msg_test/INFO] request
> [4.214821] [msg_test/INFO] finalize
> [4.214821] [msg_test/INFO] Declared marks:
> [4.214821] [msg_test/INFO] msmark
-p Tracing master/slave application with xml config
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterslave$EXEEXT ${srcdir:=.}/config_tracing.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+p Tracing master/worker application with xml config
+$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT ${srcdir:=.}/config_tracing.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'trace-masterslave.cat.plist'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterslave.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'trace-masterslave.uncat.plist'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'trace-masterworker.cat.plist'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'trace-masterworker.uncat.plist'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [4.214821] [msg_test/INFO] Declared tracing categories:
> [4.214821] [msg_test/INFO] request
> [4.214821] [msg_test/INFO] Declared marks:
> [4.214821] [msg_test/INFO] msmark
-p Not tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterslave$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+p Not tracing master/worker application
+$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
p Testing tracing by process
-$ $SG_TEST_EXENV ${bindir:=.}/trace-masterslave$EXEEXT --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:trace-masterslave.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:trace-masterslave.cat.plist --cfg=viva/uncategorized:trace-masterslave.uncat.plist ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+$ $SG_TEST_EXENV ${bindir:=.}/trace-masterworker$EXEEXT --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:trace-masterworker.cat.plist --cfg=viva/uncategorized:trace-masterworker.uncat.plist ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterslave.trace'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'trace-masterslave.cat.plist'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'trace-masterslave.uncat.plist'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'trace-masterworker.cat.plist'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'trace-masterworker.uncat.plist'
> [4.214821] [msg_test/INFO] Declared tracing categories:
> [4.214821] [msg_test/INFO] request
> [4.214821] [msg_test/INFO] finalize
> [4.214821] [msg_test/INFO] Declared marks:
> [4.214821] [msg_test/INFO] msmark
-$ $SG_TEST_EXENV cat trace-masterslave.uncat.plist
+$ $SG_TEST_EXENV cat trace-masterworker.uncat.plist
> node = ("HOST","LINK");
> edge = ("0-LINK13-LINK13","0-LINK13-HOST1","0-HOST1-LINK13");
>
> values = ("bandwidth_used");
> };
-$ $SG_TEST_EXENV cat trace-masterslave.cat.plist
+$ $SG_TEST_EXENV cat trace-masterworker.cat.plist
> node = ("HOST","LINK");
> edge = ("0-LINK13-LINK13","0-LINK13-HOST1","0-HOST1-LINK13");
>
> values = ("bcompute","breport","bfinalize","brequest");
> };
-$ rm -rf trace-masterslave.trace trace-masterslave.cat.plist trace-masterslave.uncat.plist
+$ rm -rf trace-masterworker.trace trace-masterworker.cat.plist trace-masterworker.uncat.plist
XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example");
-static int master(int argc, char *argv[])
+static int trace_fun(int argc, char *argv[])
{
const char *hostname = MSG_host_get_name(MSG_host_self());
int i;
TRACE_host_variable_declare("HDD_utilization");
//register functions and launch deployment
- MSG_function_register("master", master);
- MSG_function_register("slave", master);
+ MSG_function_register("master", trace_fun);
+ MSG_function_register("worker", trace_fun);
MSG_launch_application(argv[2]);
MSG_main();
#! ./tesh
p Tracing user variables
-$ $SG_TEST_EXENV ${bindir:=.}/trace-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+$ $SG_TEST_EXENV ${bindir:=.}/trace-user-variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
> [0.004078] [msg_test/INFO] Declared host variables:
$ rm -f viva_graph.plist
p Not tracing user variables
-$ $SG_TEST_EXENV ${bindir:=.}/trace-user-variables$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterslave-mailbox/masterslave-mailbox_d.xml
+$ $SG_TEST_EXENV ${bindir:=.}/trace-user-variables$EXEEXT ${srcdir:=.}/small_platform.xml ${srcdir:=.}/../msg/masterworker-mailbox/masterworker-mailbox_d.xml
<prop id="tracing/uncategorized" value="yes"/>
<prop id="tracing/buffer" value="yes"/>
<prop id="tracing" value="yes"/>
- <prop id="viva/categorized" value="trace-masterslave.cat.plist"/>
- <prop id="tracing/filename" value="trace-masterslave.trace"/>
- <prop id="viva/uncategorized" value="trace-masterslave.uncat.plist"/>
+ <prop id="viva/categorized" value="trace-masterworker.cat.plist"/>
+ <prop id="tracing/filename" value="trace-masterworker.trace"/>
+ <prop id="viva/uncategorized" value="trace-masterworker.uncat.plist"/>
<prop id="tracing/categorized" value="yes"/>
</config>
continue;
XBT_INFO("Pair %d already reached (equal to pair %d) !",
new_pair->num, pair_test->num);
- livenessStack_.pop_back();
+ explorationStack_.pop_back();
if (dot_output != nullptr)
fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n",
initial_global_state->prev_pair, pair_test->num,
void LivenessChecker::prepare(void)
{
mc_model_checker->wait_for_requests();
-
initial_global_state->snapshot = simgrid::mc::take_snapshot(0);
initial_global_state->prev_pair = 0;
+ // For each initial state of the property automaton, push a
+ // (application_state, automaton_state) pair to the exploration stack:
unsigned int cursor = 0;
xbt_automaton_state_t automaton_state;
-
- xbt_dynar_foreach(simgrid::mc::property_automaton->states, cursor, automaton_state) {
- if (automaton_state->type == -1) { /* Initial automaton state */
-
- std::shared_ptr<Pair> initial_pair = std::make_shared<Pair>();
- initial_pair->automaton_state = automaton_state;
- initial_pair->graph_state = std::shared_ptr<simgrid::mc::State>(MC_state_new());
- initial_pair->atomic_propositions = this->getPropositionValues();
- initial_pair->depth = 1;
-
- /* Get enabled processes and insert them in the interleave set of the graph_state */
- for (auto& p : mc_model_checker->process().simix_processes())
- if (simgrid::mc::process_is_enabled(&p.copy))
- MC_state_interleave_process(initial_pair->graph_state.get(), &p.copy);
-
- initial_pair->requests = MC_state_interleave_size(initial_pair->graph_state.get());
- initial_pair->search_cycle = false;
-
- livenessStack_.push_back(std::move(initial_pair));
- }
- }
+ xbt_dynar_foreach(simgrid::mc::property_automaton->states, cursor, automaton_state)
+ if (automaton_state->type == -1)
+ explorationStack_.push_back(this->newPair(nullptr, automaton_state));
}
/* Intermediate backtracking */
if(_sg_mc_checkpoint > 0) {
- simgrid::mc::Pair* pair = livenessStack_.back().get();
+ simgrid::mc::Pair* pair = explorationStack_.back().get();
if(pair->graph_state->system_state){
simgrid::mc::restore_snapshot(pair->graph_state->system_state);
return;
/* Traverse the stack from the initial state and re-execute the transitions */
int depth = 1;
- for (std::shared_ptr<Pair> const& pair : livenessStack_) {
- if (pair == livenessStack_.back())
+ for (std::shared_ptr<Pair> const& pair : explorationStack_) {
+ if (pair == explorationStack_.back())
break;
std::shared_ptr<State> state = pair->graph_state;
RecordTrace LivenessChecker::getRecordTrace() // override
{
RecordTrace res;
- for (std::shared_ptr<Pair> const& pair : livenessStack_) {
+ for (std::shared_ptr<Pair> const& pair : explorationStack_) {
int value;
smx_simcall_t req = MC_state_get_executed_request(pair->graph_state.get(), &value);
if (req && req->call != SIMCALL_NONE) {
std::vector<std::string> LivenessChecker::getTextualTrace() // override
{
std::vector<std::string> trace;
- for (std::shared_ptr<Pair> const& pair : livenessStack_) {
+ for (std::shared_ptr<Pair> const& pair : explorationStack_) {
int value;
smx_simcall_t req = MC_state_get_executed_request(pair->graph_state.get(), &value);
if (req && req->call != SIMCALL_NONE) {
int LivenessChecker::main(void)
{
- int visited_num = -1;
-
- while (!livenessStack_.empty()){
-
- /* Get current pair */
- std::shared_ptr<Pair> current_pair = livenessStack_.back();
+ while (!explorationStack_.empty()){
+ std::shared_ptr<Pair> current_pair = explorationStack_.back();
/* Update current state in buchi automaton */
simgrid::mc::property_automaton->current_state = current_pair->automaton_state;
MC_state_interleave_size(current_pair->graph_state.get()), current_pair->num,
current_pair->requests);
- if (current_pair->requests > 0) {
+ if (current_pair->requests == 0) {
+ this->backtrack();
+ continue;
+ }
+
+ std::shared_ptr<VisitedPair> reached_pair;
+ if (current_pair->automaton_state->type == 1 && !current_pair->exploration_started
+ && (reached_pair = this->insertAcceptancePair(current_pair.get())) == nullptr) {
+ this->showAcceptanceCycle(current_pair->depth);
+ return SIMGRID_MC_EXIT_LIVENESS;
+ }
- std::shared_ptr<VisitedPair> reached_pair;
- if (current_pair->automaton_state->type == 1 && !current_pair->exploration_started
- && (reached_pair = this->insertAcceptancePair(current_pair.get())) == nullptr) {
- this->showAcceptanceCycle(current_pair->depth);
- return SIMGRID_MC_EXIT_LIVENESS;
+ /* Pair already visited ? stop the exploration on the current path */
+ int visited_num = -1;
+ if ((!current_pair->exploration_started)
+ && (visited_num = this->insertVisitedPair(
+ reached_pair, current_pair.get())) != -1) {
+ if (dot_output != nullptr){
+ fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", initial_global_state->prev_pair, visited_num, initial_global_state->prev_req);
+ fflush(dot_output);
}
+ XBT_DEBUG("Pair already visited (equal to pair %d), exploration on the current path stopped.", visited_num);
+ current_pair->requests = 0;
+ this->backtrack();
+ continue;
+ }
- /* Pair already visited ? stop the exploration on the current path */
- if ((!current_pair->exploration_started)
- && (visited_num = this->insertVisitedPair(
- reached_pair, current_pair.get())) != -1) {
+ int value;
+ smx_simcall_t req = MC_state_get_request(current_pair->graph_state.get(), &value);
- if (dot_output != nullptr){
- fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", initial_global_state->prev_pair, visited_num, initial_global_state->prev_req);
- fflush(dot_output);
- }
+ if (dot_output != nullptr) {
+ if (initial_global_state->prev_pair != 0 && initial_global_state->prev_pair != current_pair->num) {
+ fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", initial_global_state->prev_pair, current_pair->num, initial_global_state->prev_req);
+ xbt_free(initial_global_state->prev_req);
+ }
+ initial_global_state->prev_pair = current_pair->num;
+ initial_global_state->prev_req = simgrid::mc::request_get_dot_output(req, value);
+ if (current_pair->search_cycle)
+ fprintf(dot_output, "%d [shape=doublecircle];\n", current_pair->num);
+ fflush(dot_output);
+ }
- XBT_DEBUG("Pair already visited (equal to pair %d), exploration on the current path stopped.", visited_num);
- current_pair->requests = 0;
- goto backtracking;
-
- }else{
-
- int value;
- smx_simcall_t req = MC_state_get_request(current_pair->graph_state.get(), &value);
-
- if (dot_output != nullptr) {
- if (initial_global_state->prev_pair != 0 && initial_global_state->prev_pair != current_pair->num) {
- fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", initial_global_state->prev_pair, current_pair->num, initial_global_state->prev_req);
- xbt_free(initial_global_state->prev_req);
- }
- initial_global_state->prev_pair = current_pair->num;
- initial_global_state->prev_req = simgrid::mc::request_get_dot_output(req, value);
- if (current_pair->search_cycle)
- fprintf(dot_output, "%d [shape=doublecircle];\n", current_pair->num);
- fflush(dot_output);
- }
-
- char* req_str = simgrid::mc::request_to_string(req, value, simgrid::mc::RequestType::simix);
- XBT_DEBUG("Execute: %s", req_str);
- xbt_free(req_str);
-
- /* Set request as executed */
- MC_state_set_executed_request(current_pair->graph_state.get(), req, value);
-
- /* Update mc_stats */
- mc_stats->executed_transitions++;
- if (!current_pair->exploration_started)
- mc_stats->visited_pairs++;
-
- /* Answer the request */
- simgrid::mc::handle_simcall(req, value);
-
- /* Wait for requests (schedules processes) */
- mc_model_checker->wait_for_requests();
-
- current_pair->requests--;
- current_pair->exploration_started = true;
-
- /* Get values of atomic propositions (variables used in the property formula) */
- std::vector<int> prop_values = this->getPropositionValues();
-
- /* Evaluate enabled/true transitions in automaton according to atomic propositions values and create new pairs */
- int cursor = xbt_dynar_length(current_pair->automaton_state->out) - 1;
- while (cursor >= 0) {
- xbt_automaton_transition_t transition_succ = (xbt_automaton_transition_t)xbt_dynar_get_as(current_pair->automaton_state->out, cursor, xbt_automaton_transition_t);
- if (evaluate_label(transition_succ->label, prop_values)) {
- std::shared_ptr<Pair> next_pair = std::make_shared<Pair>();
- next_pair->graph_state = std::shared_ptr<simgrid::mc::State>(MC_state_new());
- next_pair->automaton_state = transition_succ->dst;
- next_pair->atomic_propositions = this->getPropositionValues();
- next_pair->depth = current_pair->depth + 1;
- /* Get enabled processes and insert them in the interleave set of the next graph_state */
- for (auto& p : mc_model_checker->process().simix_processes())
- if (simgrid::mc::process_is_enabled(&p.copy))
- MC_state_interleave_process(next_pair->graph_state.get(), &p.copy);
-
- next_pair->requests = MC_state_interleave_size(next_pair->graph_state.get());
-
- /* FIXME : get search_cycle value for each acceptant state */
- if (next_pair->automaton_state->type == 1 || current_pair->search_cycle)
- next_pair->search_cycle = true;
-
- /* Add new pair to the exploration stack */
- livenessStack_.push_back(std::move(next_pair));
-
- }
- cursor--;
- }
-
- } /* End of visited_pair test */
+ char* req_str = simgrid::mc::request_to_string(req, value, simgrid::mc::RequestType::simix);
+ XBT_DEBUG("Execute: %s", req_str);
+ xbt_free(req_str);
- } else {
+ /* Set request as executed */
+ MC_state_set_executed_request(current_pair->graph_state.get(), req, value);
- backtracking:
- if(visited_num == -1)
- XBT_DEBUG("No more request to execute. Looking for backtracking point.");
-
- /* Traverse the stack backwards until a pair with a non empty interleave
- set is found, deleting all the pairs that have it empty in the way. */
- while (!livenessStack_.empty()) {
- std::shared_ptr<simgrid::mc::Pair> current_pair = livenessStack_.back();
- livenessStack_.pop_back();
- if (current_pair->requests > 0) {
- /* We found a backtracking point */
- XBT_DEBUG("Backtracking to depth %d", current_pair->depth);
- livenessStack_.push_back(std::move(current_pair));
- this->replay();
- XBT_DEBUG("Backtracking done");
- break;
- }else{
- XBT_DEBUG("Delete pair %d at depth %d", current_pair->num, current_pair->depth);
- if (current_pair->automaton_state->type == 1)
- this->removeAcceptancePair(current_pair->num);
- }
- }
+ /* Update mc_stats */
+ mc_stats->executed_transitions++;
+ if (!current_pair->exploration_started)
+ mc_stats->visited_pairs++;
- } /* End of if (current_pair->requests > 0) else ... */
+ /* Answer the request */
+ simgrid::mc::handle_simcall(req, value);
+
+ /* Wait for requests (schedules processes) */
+ mc_model_checker->wait_for_requests();
+
+ current_pair->requests--;
+ current_pair->exploration_started = true;
+
+ /* Get values of atomic propositions (variables used in the property formula) */
+ std::vector<int> prop_values = this->getPropositionValues();
+
+ // For each enabled transition in the property automaton, push a
+ // (application_state, automaton_state) pair to the exploration stack:
+ int cursor = xbt_dynar_length(current_pair->automaton_state->out) - 1;
+ while (cursor >= 0) {
+ xbt_automaton_transition_t transition_succ = (xbt_automaton_transition_t)xbt_dynar_get_as(current_pair->automaton_state->out, cursor, xbt_automaton_transition_t);
+ if (evaluate_label(transition_succ->label, prop_values))
+ explorationStack_.push_back(this->newPair(
+ current_pair.get(), transition_succ->dst));
+ cursor--;
+ }
}
return SIMGRID_MC_EXIT_SUCCESS;
}
+std::shared_ptr<Pair> LivenessChecker::newPair(Pair* current_pair, xbt_automaton_state_t state)
+{
+ std::shared_ptr<Pair> next_pair = std::make_shared<Pair>();
+ next_pair->automaton_state = state;
+ next_pair->graph_state = std::shared_ptr<simgrid::mc::State>(MC_state_new());
+ next_pair->atomic_propositions = this->getPropositionValues();
+ if (current_pair)
+ next_pair->depth = current_pair->depth + 1;
+ else
+ next_pair->depth = 1;
+ /* Get enabled processes and insert them in the interleave set of the next graph_state */
+ for (auto& p : mc_model_checker->process().simix_processes())
+ if (simgrid::mc::process_is_enabled(&p.copy))
+ MC_state_interleave_process(next_pair->graph_state.get(), &p.copy);
+ next_pair->requests = MC_state_interleave_size(next_pair->graph_state.get());
+ /* FIXME : get search_cycle value for each acceptant state */
+ if (next_pair->automaton_state->type == 1 ||
+ (current_pair && current_pair->search_cycle))
+ next_pair->search_cycle = true;
+ else
+ next_pair->search_cycle = false;
+ return std::move(next_pair);
+}
+
+void LivenessChecker::backtrack()
+{
+ /* Traverse the stack backwards until a pair with a non empty interleave
+ set is found, deleting all the pairs that have it empty in the way. */
+ while (!explorationStack_.empty()) {
+ std::shared_ptr<simgrid::mc::Pair> current_pair = explorationStack_.back();
+ explorationStack_.pop_back();
+ if (current_pair->requests > 0) {
+ /* We found a backtracking point */
+ XBT_DEBUG("Backtracking to depth %d", current_pair->depth);
+ explorationStack_.push_back(std::move(current_pair));
+ this->replay();
+ XBT_DEBUG("Backtracking done");
+ break;
+ } else {
+ XBT_DEBUG("Delete pair %d at depth %d", current_pair->num, current_pair->depth);
+ if (current_pair->automaton_state->type == 1)
+ this->removeAcceptancePair(current_pair->num);
+ }
+ }
+}
+
int LivenessChecker::run()
{
XBT_INFO("Check the liveness property %s", _sg_mc_property_file);
namespace simgrid {
namespace mc {
-extern XBT_PRIVATE xbt_automaton_t property_automaton;
-
struct XBT_PRIVATE Pair {
int num = 0;
bool search_cycle = false;
void replay();
void removeAcceptancePair(int pair_num);
void purgeVisitedPairs();
+ void backtrack();
+ std::shared_ptr<Pair> newPair(Pair* pair, xbt_automaton_state_t state);
public:
+ // A stack of (application_state, automaton_state) pairs for DFS exploration:
+ std::list<std::shared_ptr<Pair>> explorationStack_;
std::list<std::shared_ptr<VisitedPair>> acceptancePairs_;
- std::list<std::shared_ptr<Pair>> livenessStack_;
std::list<std::shared_ptr<VisitedPair>> visitedPairs_;
};
#include "src/mc/mc_private.h"
#include "src/mc/mc_ignore.h"
#include "src/mc/mc_exit.h"
-#include "src/mc/LivenessChecker.hpp"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_ModelChecker, mc, "ModelChecker");
#include "src/internal_config.h"
#include "src/mc/mc_forward.hpp"
#include "src/mc/mc_safety.h"
-#include "src/mc/LivenessChecker.hpp"
#include "src/mc/mc_private.h"
#include "src/mc/mc_smx.h"
#include "src/mc/mc_dwarf.hpp"
#include "src/mc/mc_request.h"
#include "src/mc/mc_safety.h"
#include "src/mc/mc_snapshot.h"
-#include "src/mc/LivenessChecker.hpp"
#include "src/mc/mc_private.h"
#include "src/mc/mc_unw.h"
#include "src/mc/mc_smx.h"
+#include "src/mc/Checker.hpp"
#endif
#include "src/mc/mc_record.h"
XBT_PRIVATE
int snapshot_compare(int num1, simgrid::mc::Snapshot* s1, int num2, simgrid::mc::Snapshot* s2);
+// Move is somewhere else (in the LivenessChecker class, in the Session class?):
+extern XBT_PRIVATE xbt_automaton_t property_automaton;
+
}
}
#include "src/mc/mc_private.h"
#include "src/mc/mc_state.h"
#include "src/mc/mc_smx.h"
-#include "src/mc/LivenessChecker.hpp"
+#include "src/mc/Checker.hpp"
#endif
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_record, mc,
#include "src/mc/mc_comm_pattern.h"
#include "src/mc/mc_safety.h"
-#include "src/mc/LivenessChecker.hpp"
#include "src/mc/mc_private.h"
#include "src/mc/Process.hpp"
#include "src/mc/mc_smx.h"
#include "src/mc/mc_protocol.h"
#include "src/mc/mc_safety.h"
#include "src/mc/mc_comm_pattern.h"
-#include "src/mc/LivenessChecker.hpp"
#include "src/mc/mc_exit.h"
#include "src/mc/Session.hpp"
#include "src/mc/Checker.hpp"
structure which starts with a pointer to a do_append() function. do_append()
prints a message to a log.
-When a category is passed a message by one of the logging macros, the
-category performs the following actions:
+When a category is passed a message by one of the logging macros, the category performs the following actions:
- if the category has an appender, the message is passed to the
appender's do_append() function,
_set_inherited_thresholds(child);
}
}
-
-
}
void xbt_log_threshold_set(xbt_log_category_t cat, e_xbt_log_priority_t threshold)
return;
}
- /* Parse each entry and either use it right now (if the category was already
- created), or store it for further use */
+ /* Parse each entry and either use it right now (if the category was already created), or store it for further use */
xbt_dynar_foreach(set_strings, cpt, str) {
xbt_log_category_t cat = NULL;
# Add your CMakeLists file here to see your subdir built.
set(CMAKEFILES_TXT
examples/java/CMakeLists.txt
- examples/java/async/CMakeLists.txt
- examples/java/cloud/CMakeLists.txt
- examples/java/cloud/migration/CMakeLists.txt
- examples/java/mutualExclusion/CMakeLists.txt
- examples/java/pingPong/CMakeLists.txt
- examples/java/priority/CMakeLists.txt
- examples/java/tracing/CMakeLists.txt
examples/msg/CMakeLists.txt
examples/msg/cloud/CMakeLists.txt
examples/msg/mc/CMakeLists.txt