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
\li <b>Cluster</b>: Cluster routing, specific to cluster tag, should
not be used.
-\subsection pf_switch I want to describe a switch but there is no switch tag !
+\subsection pf_switch How to describe a switch given that is no switch tag?
Actually we did not include switch tag, ok. But when you're trying to
simulate a switch, the only major impact it has when you're using
(as a link is not an edge by a hyperedge, you can connect more than 2
other links to it).
+\subsection pf_multicabinets How to model multi-cabinets clusters?
+
+You have several possibilities, as usual when modeling things. If your
+cabinets are homogeneous and the intercabinet network negligible for
+your study, you should just create a larger cluster with all hosts at
+the same layer.
+
+In the rare case where your hosts are not homogeneous between the
+cabinets, you can create your cluster completely manually. For that,
+create an As using the Cluster routing, and then use one
+<cabinet> for each cabinet. This cabinet tag can only be used an
+As using the Cluster routing schema, and creating
+
+Be warned that creating a cluster manually from the XML with
+<cabinet>, <backbone> and friends is rather tedious. The
+easiest way to retrieve some control of your model without diving into
+the <cluster> internals is certainly to create one separate
+<cluster> per cabinet and interconnect them together. This is
+what we did in the G5K example platform for the Graphen cluster.
+
\subsection pf_platform_multipath How to express multipath routing in platform files?
It is unfortunately impossible to express the fact that there is more
${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>
double speed();
int core_count();
xbt_dict_t properties();
+ const char*property(const char*key);
+ void setProperty(const char*key, const char *value);
xbt_swag_t processes();
double currentPowerPeak();
double powerPeakAt(int pstate_index);
*/
XBT_PUBLIC(void) xbt_cfg_register(xbt_cfg_t * cfg, const char *name, const char *description,
e_xbt_cfgelm_type_t type, int min, int max, xbt_cfg_cb_t cb_set);
+XBT_PUBLIC(void) xbt_cfg_register_double (xbt_cfg_t * cfg, const char *name, const char *desc, double default_val, xbt_cfg_cb_t cb_set);
+XBT_PUBLIC(void) xbt_cfg_register_int (xbt_cfg_t * cfg, const char *name, const char *desc, int default_val, xbt_cfg_cb_t cb_set);
+XBT_PUBLIC(void) xbt_cfg_register_string (xbt_cfg_t * cfg, const char *name, const char *desc, const char*default_val,xbt_cfg_cb_t cb_set);
+XBT_PUBLIC(void) xbt_cfg_register_boolean(xbt_cfg_t * cfg, const char *name, const char *desc, const char*default_val,xbt_cfg_cb_t cb_set);
XBT_PUBLIC(void) xbt_cfg_register_alias(xbt_cfg_t * cfg, const char *newname, const char *oldname);
XBT_PUBLIC(void) xbt_cfg_unregister(xbt_cfg_t cfg, const char *name);
XBT_PUBLIC(void) xbt_cfg_register_str(xbt_cfg_t * cfg, const char *entry);
+
XBT_PUBLIC(void) xbt_cfg_aliases(xbt_cfg_t cfg);
XBT_PUBLIC(void) xbt_cfg_help(xbt_cfg_t cfg);
XBT_PUBLIC(void) xbt_cfg_check(xbt_cfg_t cfg);
is_initialised = 1;
/* name of the tracefile */
- xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_FILENAME, "Trace file created by the instrumented SimGrid.",
- xbt_cfgelm_string, 1, 1, NULL);
- xbt_cfg_setdefault_string(_sg_cfg_set, OPT_TRACING_FILENAME, "simgrid.trace");
-
- /* tracing */
- xbt_cfg_register(&_sg_cfg_set, OPT_TRACING, "Enable Tracing.", xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING, "no");
-
- /* register platform in the trace */
- xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_PLATFORM, "Register the platform in the trace as a hierarchy.",
- xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_PLATFORM, "no");
-
- /* register platform in the trace */
- xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_TOPOLOGY, "Register the platform topology in the trace as a graph.",
- xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_TOPOLOGY, "yes");
-
- /* smpi */
- xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI, "Tracing of the SMPI interface.", xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI, "no");
-
- /* smpi grouped */
- xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_GROUP, "Group MPI processes by host.",
- xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_GROUP, "no");
-
- /* smpi computing */
- xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING,
- "Generate states for timing out of SMPI parts of the application", xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING, "no");
+ xbt_cfg_register_string (&_sg_cfg_set, OPT_TRACING_FILENAME, "Trace file created by the instrumented SimGrid.", "simgrid.trace", NULL);
+ xbt_cfg_register_boolean(&_sg_cfg_set, OPT_TRACING, "Enable Tracing.", "no", NULL);
+ xbt_cfg_register_boolean(&_sg_cfg_set, OPT_TRACING_PLATFORM, "Register the platform in the trace as a hierarchy.", "no", NULL);
+ xbt_cfg_register_boolean(&_sg_cfg_set, OPT_TRACING_TOPOLOGY, "Register the platform topology in the trace as a graph.", "yes", NULL);
+ xbt_cfg_register_boolean(&_sg_cfg_set, OPT_TRACING_SMPI, "Tracing of the SMPI interface.", "no", NULL);
+ xbt_cfg_register_boolean(&_sg_cfg_set, OPT_TRACING_SMPI_GROUP, "Group MPI processes by host.", "no", NULL);
+ xbt_cfg_register_boolean(&_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING,
+ "Generate states for timing out of SMPI parts of the application", "no", NULL);
/* smpi sleeping */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_SLEEPING,
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"
});
}
+/** Retrieve the property value (or NULL if not set) */
+const char*Host::property(const char*key) {
+ simgrid::surf::HostImpl* surf_host = this->extension<simgrid::surf::HostImpl>();
+ return surf_host->getProperty(key);
+}
+void Host::setProperty(const char*key, const char *value){
+ simgrid::simix::kernel([&] {
+ simgrid::surf::HostImpl* surf_host = this->extension<simgrid::surf::HostImpl>();
+ surf_host->setProperty(key,value);
+ });
+}
+
/** Get the processes attached to the host */
xbt_swag_t Host::processes()
{
xbt_cfgelm_string, 0, 1, &_sg_cfg_cb__plugin);
describe_model(description, surf_cpu_model_description, "model", "The model to use for the CPU");
- xbt_cfg_register(&_sg_cfg_set, "cpu/model", description, xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__cpu_model);
- xbt_cfg_setdefault_string(_sg_cfg_set, "cpu/model", "Cas01");
+ xbt_cfg_register_string(&_sg_cfg_set, "cpu/model", description, "Cas01", &_sg_cfg_cb__cpu_model);
describe_model(description, surf_optimization_mode_description, "optimization mode", "The optimization modes to use for the CPU");
- xbt_cfg_register(&_sg_cfg_set, "cpu/optim", description, xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__optimization_mode);
- xbt_cfg_setdefault_string(_sg_cfg_set, "cpu/optim", "Lazy");
+ xbt_cfg_register_string(&_sg_cfg_set, "cpu/optim", description, "Lazy", &_sg_cfg_cb__optimization_mode);
describe_model(description, surf_storage_model_description, "model", "The model to use for the storage");
- xbt_cfg_register(&_sg_cfg_set, "storage/model", description, xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__storage_mode);
- xbt_cfg_setdefault_string(_sg_cfg_set, "storage/model", "default");
+ xbt_cfg_register_string(&_sg_cfg_set, "storage/model", description, "default", &_sg_cfg_cb__storage_mode);
describe_model(description, surf_network_model_description, "model", "The model to use for the network");
- xbt_cfg_register(&_sg_cfg_set, "network/model", description, xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__network_model);
- xbt_cfg_setdefault_string(_sg_cfg_set, "network/model", "LV08");
+ xbt_cfg_register_string(&_sg_cfg_set, "network/model", description, "LV08", &_sg_cfg_cb__network_model);
describe_model(description, surf_optimization_mode_description, "optimization mode", "The optimization modes to use for the network");
- xbt_cfg_register(&_sg_cfg_set, "network/optim", description, xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__optimization_mode);
- xbt_cfg_setdefault_string(_sg_cfg_set, "network/optim", "Lazy");
+ xbt_cfg_register_string(&_sg_cfg_set, "network/optim", description, "Lazy", &_sg_cfg_cb__optimization_mode);
describe_model(description, surf_host_model_description, "model", "The model to use for the host");
- xbt_cfg_register(&_sg_cfg_set, "host/model", description, xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__host_model);
- xbt_cfg_setdefault_string(_sg_cfg_set, "host/model", "default");
+ xbt_cfg_register_string(&_sg_cfg_set, "host/model", description, "default", &_sg_cfg_cb__host_model);
describe_model(description, surf_vm_model_description, "model", "The model to use for the vm");
- xbt_cfg_register(&_sg_cfg_set, "vm/model", description, xbt_cfgelm_string, 1, 1, &_sg_cfg_cb__vm_model);
- xbt_cfg_setdefault_string(_sg_cfg_set, "vm/model", "default");
+ xbt_cfg_register_string(&_sg_cfg_set, "vm/model", description, "default", &_sg_cfg_cb__vm_model);
- xbt_cfg_register(&_sg_cfg_set, "network/TCP_gamma",
- "Size of the biggest TCP window (cat /proc/sys/net/ipv4/tcp_[rw]mem for recv/send window; Use the last given value, which is the max window size)",
- xbt_cfgelm_double, 1, 1, _sg_cfg_cb__tcp_gamma);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/TCP_gamma", 4194304.0);
+ xbt_cfg_register_double(&_sg_cfg_set, "network/TCP_gamma",
+ "Size of the biggest TCP window (cat /proc/sys/net/ipv4/tcp_[rw]mem for recv/send window; Use the last given value, which is the max window size)",
+ 4194304.0, _sg_cfg_cb__tcp_gamma);
- xbt_cfg_register(&_sg_cfg_set, "surf/precision", "Numerical precision used when updating simulation times (in seconds)",
- xbt_cfgelm_double, 1, 1, _sg_cfg_cb__surf_precision);
- xbt_cfg_setdefault_double(_sg_cfg_set, "surf/precision", 0.00001);
+ xbt_cfg_register_double(&_sg_cfg_set, "surf/precision", "Numerical precision used when updating simulation times (in seconds)",
+ 0.00001, _sg_cfg_cb__surf_precision);
- xbt_cfg_register(&_sg_cfg_set, "maxmin/precision",
- "Numerical precision used when computing resource sharing (in ops/sec or bytes/sec)",
- xbt_cfgelm_double, 1, 1, _sg_cfg_cb__maxmin_precision);
- xbt_cfg_setdefault_double(_sg_cfg_set, "maxmin/precision", 0.00001);
+ xbt_cfg_register_double(&_sg_cfg_set, "maxmin/precision",
+ "Numerical precision used when computing resource sharing (in ops/sec or bytes/sec)",
+ 0.00001, _sg_cfg_cb__maxmin_precision);
/* The parameters of network models */
- xbt_cfg_register(&_sg_cfg_set, "network/sender_gap", "Minimum gap between two overlapping sends",
- xbt_cfgelm_double, 1, 1, _sg_cfg_cb__sender_gap);
- /* real default for "network/sender_gap" is set in network_smpi.cpp */
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/sender_gap", NAN);
-
- xbt_cfg_register(&_sg_cfg_set, "network/latency_factor",
- "Correction factor to apply to the provided latency (default value set by network model)",
- xbt_cfgelm_double, 1, 1, _sg_cfg_cb__latency_factor);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 1.0);
-
- xbt_cfg_register(&_sg_cfg_set, "network/bandwidth_factor",
- "Correction factor to apply to the provided bandwidth (default value set by network model)",
- xbt_cfgelm_double, 1, 1, _sg_cfg_cb__bandwidth_factor);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 1.0);
-
- xbt_cfg_register(&_sg_cfg_set, "network/weight_S",
- "Correction factor to apply to the weight of competing streams (default value set by network model)",
- xbt_cfgelm_double, 1, 1, _sg_cfg_cb__weight_S);
- /* real default for "network/weight_S" is set in network_*.cpp */
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", NAN);
+ xbt_cfg_register_double(&_sg_cfg_set, "network/sender_gap", "Minimum gap between two overlapping sends",
+ NAN, _sg_cfg_cb__sender_gap); /* real default for "network/sender_gap" is set in network_smpi.cpp */
+ xbt_cfg_register_double(&_sg_cfg_set, "network/latency_factor",
+ "Correction factor to apply to the provided latency (default value set by network model)",
+ 1.0, _sg_cfg_cb__latency_factor);
+ xbt_cfg_register_double(&_sg_cfg_set, "network/bandwidth_factor",
+ "Correction factor to apply to the provided bandwidth (default value set by network model)",
+ 1.0, _sg_cfg_cb__bandwidth_factor);
+ xbt_cfg_register_double(&_sg_cfg_set, "network/weight_S",
+ "Correction factor to apply to the weight of competing streams (default value set by network model)",
+ NAN, _sg_cfg_cb__weight_S); /* real default for "network/weight_S" is set in network_*.cpp */
/* Inclusion path */
xbt_cfg_register(&_sg_cfg_set, "path",
"Lookup path for inclusions in platform and deployment XML files",
xbt_cfgelm_string, 1, 0, _sg_cfg_cb__surf_path);
- xbt_cfg_register(&_sg_cfg_set, "cpu/maxmin_selective_update",
- "Update the constraint set propagating recursively to others constraints (off by default when optim is set to lazy)",
- xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "cpu/maxmin_selective_update", "no");
-
- xbt_cfg_register(&_sg_cfg_set, "network/maxmin_selective_update",
- "Update the constraint set propagating recursively to others constraints (off by default when optim is set to lazy)",
- xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "network/maxmin_selective_update", "no");
-
+ xbt_cfg_register_boolean(&_sg_cfg_set, "cpu/maxmin_selective_update",
+ "Update the constraint set propagating recursively to others constraints (off by default when optim is set to lazy)",
+ "no", NULL);
+ xbt_cfg_register_boolean(&_sg_cfg_set, "network/maxmin_selective_update",
+ "Update the constraint set propagating recursively to others constraints (off by default when optim is set to lazy)",
+ "no", NULL);
/* Replay (this part is enabled even if MC it disabled) */
xbt_cfg_register(&_sg_cfg_set, "model-check/replay",
"Enable replay mode with the given path", xbt_cfgelm_string, 0, 1, _sg_cfg_cb_model_check_replay);
#if HAVE_MC
/* do model-checking-record */
- xbt_cfg_register(&_sg_cfg_set, "model-check/record",
- "Record the model-checking paths",
- xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb_model_check_record);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/record", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/record", "Record the model-checking paths",
+ "no", _sg_cfg_cb_model_check_record);
/* do stateful model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/checkpoint",
+ xbt_cfg_register_int(&_sg_cfg_set, "model-check/checkpoint",
"Specify the amount of steps between checkpoints during stateful model-checking (default: 0 => stateless verification). "
"If value=1, one checkpoint is saved for each step => faster verification, but huge memory consumption; higher values are good compromises between speed and memory consumption.",
- xbt_cfgelm_int, 1, 1, _mc_cfg_cb_checkpoint);
- xbt_cfg_setdefault_int(_sg_cfg_set, "model-check/checkpoint", 0);
+ 0, _mc_cfg_cb_checkpoint);
/* do stateful model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/sparse_checkpoint",
- "Use sparse per-page snapshots.",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_sparse_checkpoint);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/sparse_checkpoint", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/sparse_checkpoint", "Use sparse per-page snapshots.",
+ "no", _mc_cfg_cb_sparse_checkpoint);
/* do stateful model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/soft-dirty",
- "Use sparse per-page snapshots.",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_soft_dirty);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/soft-dirty", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/soft-dirty", "Use sparse per-page snapshots.",
+ "no", _mc_cfg_cb_soft_dirty);
xbt_cfg_register(&_sg_cfg_set, "model-check/ksm",
"Kernel same-page merging",
xbt_cfg_setdefault_string(_sg_cfg_set, "model-check/property", "");
/* do communications determinism model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/communications_determinism",
- "Enable/disable the detection of determinism in the communications schemes",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_comms_determinism);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/communications_determinism", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/communications_determinism",
+ "Enable/disable the detection of determinism in the communications schemes", "no", _mc_cfg_cb_comms_determinism);
/* do send determinism model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/send_determinism",
- "Enable/disable the detection of send-determinism in the communications schemes",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_send_determinism);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/send_determinism", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/send_determinism",
+ "Enable/disable the detection of send-determinism in the communications schemes", "no", _mc_cfg_cb_send_determinism);
/* Specify the kind of model-checking reduction */
- xbt_cfg_register(&_sg_cfg_set, "model-check/reduction",
- "Specify the kind of exploration reduction (either none or DPOR)",
- xbt_cfgelm_string, 1, 1, _mc_cfg_cb_reduce);
- xbt_cfg_setdefault_string(_sg_cfg_set, "model-check/reduction", "dpor");
+ xbt_cfg_register_string(&_sg_cfg_set, "model-check/reduction", "Specify the kind of exploration reduction (either none or DPOR)",
+ "dpor", _mc_cfg_cb_reduce);
/* Enable/disable timeout for wait requests with model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/timeout",
- "Enable/Disable timeout for wait requests",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_timeout);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/timeout", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/timeout", "Enable/Disable timeout for wait requests", "no",
+ _mc_cfg_cb_timeout);
/* Enable/disable global hash computation with model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/hash",
- "Enable/Disable state hash for state comparison (experimental)",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_hash);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/hash", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/hash", "Enable/Disable state hash for state comparison (experimental)", "no",
+ _mc_cfg_cb_hash);
/* Set max depth exploration */
- /* Currently, this option cannot be used. */
- xbt_cfg_register(&_sg_cfg_set, "model-check/snapshot_fds",
- "Whether file descriptors must be snapshoted",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_snapshot_fds);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/snapshot_fds", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/snapshot_fds", "Whether file descriptors must be snapshoted (currently unusable)", "no",
+ _mc_cfg_cb_snapshot_fds);
/* Set max depth exploration */
- xbt_cfg_register(&_sg_cfg_set, "model-check/max_depth",
- "Specify the max depth of exploration (default : 1000)",
- xbt_cfgelm_int, 1, 1, _mc_cfg_cb_max_depth);
- xbt_cfg_setdefault_int(_sg_cfg_set, "model-check/max_depth", 1000);
+ xbt_cfg_register_int(&_sg_cfg_set, "model-check/max_depth", "Specify the max depth of exploration (default: 1000)", 1000,
+ _mc_cfg_cb_max_depth);
/* Set number of visited state stored for state comparison reduction*/
- xbt_cfg_register(&_sg_cfg_set, "model-check/visited",
+ xbt_cfg_register_int(&_sg_cfg_set, "model-check/visited",
"Specify the number of visited state stored for state comparison reduction. If value=5, the last 5 visited states are stored",
- xbt_cfgelm_int, 1, 1, _mc_cfg_cb_visited);
- xbt_cfg_setdefault_int(_sg_cfg_set, "model-check/visited", 0);
+ 0, _mc_cfg_cb_visited);
/* Set file name for dot output of graph state */
- xbt_cfg_register(&_sg_cfg_set, "model-check/dot_output",
+ xbt_cfg_register_string(&_sg_cfg_set, "model-check/dot_output",
"Specify the name of dot file corresponding to graph state",
- xbt_cfgelm_string, 1, 1, _mc_cfg_cb_dot_output);
- xbt_cfg_setdefault_string(_sg_cfg_set, "model-check/dot_output", "");
+ "", _mc_cfg_cb_dot_output);
/* Enable/disable non progressive cycles detection with model-checking */
- xbt_cfg_register(&_sg_cfg_set, "model-check/termination",
+ xbt_cfg_register_boolean(&_sg_cfg_set, "model-check/termination",
"Enable/Disable non progressive cycle detection",
- xbt_cfgelm_boolean, 1, 1, _mc_cfg_cb_termination);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "model-check/termination", "no");
+ "no", _mc_cfg_cb_termination);
#endif
/* do verbose-exit */
- xbt_cfg_register(&_sg_cfg_set, "verbose-exit",
- "Activate the \"do nothing\" mode in Ctrl-C",
- xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb_verbose_exit);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "verbose-exit", "yes");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "verbose-exit", "Activate the \"do nothing\" mode in Ctrl-C",
+ "yes", _sg_cfg_cb_verbose_exit);
/* context factory */
const char *dflt_ctx_fact = "thread";
#endif
sprintf(p, ".");
}
- xbt_cfg_register(&_sg_cfg_set, "contexts/factory", description,
- xbt_cfgelm_string, 1, 1, _sg_cfg_cb_context_factory);
- xbt_cfg_setdefault_string(_sg_cfg_set, "contexts/factory", dflt_ctx_fact);
+ xbt_cfg_register_string(&_sg_cfg_set, "contexts/factory", description, dflt_ctx_fact, _sg_cfg_cb_context_factory);
/* stack size of contexts in KiB */
- xbt_cfg_register(&_sg_cfg_set, "contexts/stack_size",
- "Stack size of contexts in KiB",
- xbt_cfgelm_int, 1, 1, _sg_cfg_cb_context_stack_size);
- xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/stack_size", 8*1024);
- /* No, it was not set yet (the above setdefault() changed this to 1). */
+ xbt_cfg_register_int(&_sg_cfg_set, "contexts/stack_size", "Stack size of contexts in KiB",
+ 8*1024, _sg_cfg_cb_context_stack_size);
+ /* (FIXME: this is unpleasant) Reset this static variable that was altered when setting the default value. */
smx_context_stack_size_was_set = 0;
/* guard size for contexts stacks in memory pages */
smx_context_guard_size_was_set = 0;
/* number of parallel threads for user processes */
- xbt_cfg_register(&_sg_cfg_set, "contexts/nthreads",
+ xbt_cfg_register_int(&_sg_cfg_set, "contexts/nthreads",
"Number of parallel threads used to execute user contexts",
- xbt_cfgelm_int, 1, 1, _sg_cfg_cb_contexts_nthreads);
- xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/nthreads", 1);
+ 1, _sg_cfg_cb_contexts_nthreads);
/* minimal number of user contexts to be run in parallel */
- xbt_cfg_register(&_sg_cfg_set, "contexts/parallel_threshold",
+ xbt_cfg_register_int(&_sg_cfg_set, "contexts/parallel_threshold",
"Minimal number of user contexts to be run in parallel (raw contexts only)",
- xbt_cfgelm_int, 1, 1, _sg_cfg_cb_contexts_parallel_threshold);
- xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/parallel_threshold", 2);
+ 2, _sg_cfg_cb_contexts_parallel_threshold);
/* synchronization mode for parallel user contexts */
- xbt_cfg_register(&_sg_cfg_set, "contexts/synchro",
+ xbt_cfg_register_string(&_sg_cfg_set, "contexts/synchro",
"Synchronization mode to use when running contexts in parallel (either futex, posix or busy_wait)",
- xbt_cfgelm_string, 1, 1, _sg_cfg_cb_contexts_parallel_mode);
#if HAVE_FUTEX_H
- xbt_cfg_setdefault_string(_sg_cfg_set, "contexts/synchro", "futex");
+ "futex", _sg_cfg_cb_contexts_parallel_mode);
#else //No futex on mac and posix is unimplememted yet
- xbt_cfg_setdefault_string(_sg_cfg_set, "contexts/synchro", "busy_wait");
+ "busy_wait", _sg_cfg_cb_contexts_parallel_mode);
#endif
- xbt_cfg_register(&_sg_cfg_set, "network/coordinates",
+ xbt_cfg_register_boolean(&_sg_cfg_set, "network/coordinates",
"\"yes\" or \"no\", specifying whether we use a coordinate-based routing (as Vivaldi)",
- xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb__surf_network_coordinates);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "network/coordinates", "no");
+ "no", _sg_cfg_cb__surf_network_coordinates);
- xbt_cfg_register(&_sg_cfg_set, "network/crosstraffic",
+ xbt_cfg_register_boolean(&_sg_cfg_set, "network/crosstraffic",
"Activate the interferences between uploads and downloads for fluid max-min models (LV08, CM02)",
- xbt_cfgelm_boolean, 1, 1, _sg_cfg_cb__surf_network_crosstraffic);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "network/crosstraffic", "yes");
+ "yes", _sg_cfg_cb__surf_network_crosstraffic);
#if HAVE_NS3
- xbt_cfg_register(&_sg_cfg_set, "ns3/TcpModel",
- "The ns3 tcp model can be : NewReno or Reno or Tahoe",
- xbt_cfgelm_string, 1, 1, NULL);
- xbt_cfg_setdefault_string(_sg_cfg_set, "ns3/TcpModel", "default");
+ xbt_cfg_register_string(&_sg_cfg_set, "ns3/TcpModel", "The ns3 tcp model can be : NewReno or Reno or Tahoe", "default", NULL);
#endif
//For smpi/bw_factor and smpi/lat_factor
//Values can be modified with command line --cfg=smpi/bw_factor:"threshold0:value0;threshold1:value1;...;thresholdN:valueN"
// or with tag config put line <prop id="smpi/bw_factor" value="threshold0:value0;threshold1:value1;...;thresholdN:valueN"></prop>
// SMPI model can be used without enable_smpi, so keep this out of the ifdef.
- xbt_cfg_register(&_sg_cfg_set, "smpi/bw_factor",
- "Bandwidth factors for smpi.",
- xbt_cfgelm_string, 1, 1, NULL);
- xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/bw_factor", "65472:0.940694;15424:0.697866;9376:0.58729;5776:1.08739;3484:0.77493;1426:0.608902;732:0.341987;257:0.338112;0:0.812084");
+ xbt_cfg_register_string(&_sg_cfg_set, "smpi/bw_factor", "Bandwidth factors for smpi.",
+ "65472:0.940694;15424:0.697866;9376:0.58729;5776:1.08739;3484:0.77493;1426:0.608902;732:0.341987;257:0.338112;0:0.812084", NULL);
- xbt_cfg_register(&_sg_cfg_set, "smpi/lat_factor",
- "Latency factors for smpi.",
- xbt_cfgelm_string, 1, 1, NULL);
- xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/lat_factor", "65472:11.6436;15424:3.48845;9376:2.59299;5776:2.18796;3484:1.88101;1426:1.61075;732:1.9503;257:1.95341;0:2.01467");
+ xbt_cfg_register_string(&_sg_cfg_set, "smpi/lat_factor", "Latency factors for smpi.",
+ "65472:11.6436;15424:3.48845;9376:2.59299;5776:2.18796;3484:1.88101;1426:1.61075;732:1.9503;257:1.95341;0:2.01467", NULL);
- xbt_cfg_register(&_sg_cfg_set, "smpi/IB_penalty_factors",
- "Correction factor to communications using Infiniband model with contention (default value based on Stampede cluster profiling)",
- xbt_cfgelm_string, 1, 1, NULL);
- xbt_cfg_setdefault_string(_sg_cfg_set, "smpi/IB_penalty_factors", "0.965;0.925;1.35");
+ xbt_cfg_register_string(&_sg_cfg_set, "smpi/IB_penalty_factors",
+ "Correction factor to communications using Infiniband model with contention (default value based on Stampede cluster profiling)",
+ "0.965;0.925;1.35", NULL);
#if HAVE_SMPI
- xbt_cfg_register(&_sg_cfg_set, "smpi/running_power",
- "Power of the host running the simulation (in flop/s). Used to bench the operations.",
- xbt_cfgelm_double, 1, 1, NULL);
- xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/running_power", 20000.0);
+ xbt_cfg_register_double(&_sg_cfg_set, "smpi/running_power",
+ "Power of the host running the simulation (in flop/s). Used to bench the operations.", 20000.0, NULL);
- xbt_cfg_register(&_sg_cfg_set, "smpi/display_timing",
- "Boolean indicating whether we should display the timing after simulation.",
- xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "smpi/display_timing", "no");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "smpi/display_timing",
+ "Boolean indicating whether we should display the timing after simulation.", "no", NULL);
- xbt_cfg_register(&_sg_cfg_set, "smpi/simulate_computation",
- "Boolean indicating whether the computational part of the simulated application should be simulated.",
- xbt_cfgelm_boolean, 1, 1, NULL);
- xbt_cfg_setdefault_boolean(_sg_cfg_set, "smpi/simulate_computation", "yes");
+ xbt_cfg_register_boolean(&_sg_cfg_set, "smpi/simulate_computation",
+ "Boolean indicating whether the computational part of the simulated application should be simulated.", "yes", NULL);
xbt_cfg_register(&_sg_cfg_set, "smpi/use_shared_malloc",
"Boolean indicating whether we should use shared memory when using SMPI_SHARED_MALLOC. Allows user to disable it for debug purposes.",
/*********
* Model *
*********/
-HostImpl *HostModel::createHost(const char *name,NetCard *netElm, Cpu *cpu, xbt_dict_t props){
+HostImpl *HostModel::createHost(const char *name, NetCard *netElm, Cpu *cpu){
xbt_dynar_t storageList = (xbt_dynar_t)xbt_lib_get_or_null(storage_lib, name, ROUTING_STORAGE_HOST_LEVEL);
- HostImpl *host = new simgrid::surf::HostImpl(surf_host_model, name, props, storageList, cpu);
+ HostImpl *host = new simgrid::surf::HostImpl(surf_host_model, name, storageList, cpu);
XBT_DEBUG("Create host %s with %ld mounted disks", name, xbt_dynar_length(host->p_storage));
return host;
}
/* FIXME: we should use lmm_update_variable_weight() ? */
/* FIXME: If we assign 1.05 and 0.05, the system makes apparently wrong values. */
- ws_vm->p_action->setPriority(1);
+ ws_vm->action_->setPriority(1);
} else {
/* no task exits on this VM */
XBT_DEBUG("set the weight of the dummy CPU action on PM to 0");
- ws_vm->p_action->setPriority(0);
+ ws_vm->action_->setPriority(0);
}
}
}
}
}
-HostImpl::HostImpl(simgrid::surf::HostModel *model, const char *name, xbt_dict_t props,
- xbt_dynar_t storage, Cpu *cpu)
+HostImpl::HostImpl(simgrid::surf::HostModel *model, const char *name, xbt_dynar_t storage, Cpu *cpu)
: Resource(model, name)
- , PropertyHolder(props)
+ , PropertyHolder(nullptr)
, p_storage(storage), p_cpu(cpu)
{
p_params.ramsize = 0;
}
-HostImpl::HostImpl(simgrid::surf::HostModel *model, const char *name, xbt_dict_t props, lmm_constraint_t constraint,
+HostImpl::HostImpl(simgrid::surf::HostModel *model, const char *name, lmm_constraint_t constraint,
xbt_dynar_t storage, Cpu *cpu)
: Resource(model, name, constraint)
- , PropertyHolder(props)
+ , PropertyHolder(nullptr)
, p_storage(storage), p_cpu(cpu)
{
p_params.ramsize = 0;
iter != simgrid::surf::VMModel::ws_vms.end(); ++iter) {
simgrid::surf::VirtualMachine *ws_vm = &*iter;
- if (this == ws_vm->p_hostPM->extension(simgrid::surf::HostImpl::EXTENSION_ID))
+ if (this == ws_vm->getPm()->extension(simgrid::surf::HostImpl::EXTENSION_ID))
xbt_dynar_push(dyn, &ws_vm);
}
HostModel() : Model() {}
~HostModel() override {}
- HostImpl *createHost(const char *name, NetCard *net, Cpu *cpu, xbt_dict_t props);
+ HostImpl *createHost(const char *name, NetCard *net, Cpu *cpu);
virtual void adjustWeightOfDummyCpuActions();
virtual Action *executeParallelTask(int host_nb, sg_host_t *host_list,
* @param storage The Storage associated to this Host
* @param cpu The Cpu associated to this Host
*/
- HostImpl(HostModel *model, const char *name, xbt_dict_t props, xbt_dynar_t storage, Cpu *cpu);
+ HostImpl(HostModel *model, const char *name, xbt_dynar_t storage, Cpu *cpu);
/**
* @brief Host constructor
* @param storage The Storage associated to this Host
* @param cpu The Cpu associated to this Host
*/
- HostImpl(HostModel *model, const char *name, xbt_dict_t props,
+ HostImpl(HostModel *model, const char *name,
lmm_constraint_t constraint, xbt_dynar_t storage, Cpu *cpu);
/* Host destruction logic */
namespace surf {
PropertyHolder::PropertyHolder(xbt_dict_t props)
-: p_properties(props)
+: properties_(props)
{
}
PropertyHolder::~PropertyHolder() {
- xbt_dict_free(&p_properties);
+ xbt_dict_free(&properties_);
}
/** @brief Return the property associated to the provided key (or NULL if not existing) */
const char *PropertyHolder::getProperty(const char*key) {
- if (p_properties == NULL)
+ if (properties_ == NULL)
return NULL;
- return (const char*) xbt_dict_get_or_null(p_properties,key);
+ return (const char*) xbt_dict_get_or_null(properties_,key);
}
/** @brief Change the value of a given key in the property set */
void PropertyHolder::setProperty(const char*key, const char*value) {
- if (!p_properties)
- p_properties = xbt_dict_new();
- xbt_dict_set(p_properties, key, xbt_strdup(value), &xbt_free_f);
+ if (!properties_)
+ properties_ = xbt_dict_new();
+ xbt_dict_set(properties_, key, xbt_strdup(value), &xbt_free_f);
}
/** @brief Return the whole set of properties. Don't mess with it, dude! */
xbt_dict_t PropertyHolder::getProperties() {
- if (!p_properties)
- p_properties = xbt_dict_new();
- return p_properties;
+ if (!properties_)
+ properties_ = xbt_dict_new();
+ return properties_;
}
} /* namespace surf */
*/
xbt_dict_t getProperties();
private:
- xbt_dict_t p_properties = NULL;
+ xbt_dict_t properties_ = NULL;
};
} /* namespace surf */
}
}
-Link* NetworkCm02Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy, xbt_dict_t properties)
+Link* NetworkCm02Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
+ xbt_dict_t properties)
{
- return new NetworkCm02Link(this, name, properties, maxminSystem_, sg_bandwidth_factor * bandwidth, bandwidth, latency, policy);
+ return new NetworkCm02Link(this, name, properties, bandwidth, latency, policy, maxminSystem_);
}
void NetworkCm02Model::updateActionsStateLazy(double now, double /*delta*/)
* Resource *
************/
NetworkCm02Link::NetworkCm02Link(NetworkCm02Model *model, const char *name, xbt_dict_t props,
- lmm_system_t system,
- double constraint_value,
- double bandwidth, double latency,
- e_surf_link_sharing_policy_t policy)
-: Link(model, name, props, lmm_constraint_new(system, this, constraint_value))
+ double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
+ lmm_system_t system)
+: Link(model, name, props, lmm_constraint_new(system, this, sg_bandwidth_factor * bandwidth))
{
m_bandwidth.scale = 1.0;
m_bandwidth.peak = bandwidth;
class NetworkCm02Link : public Link {
public:
NetworkCm02Link(NetworkCm02Model *model, const char *name, xbt_dict_t props,
- lmm_system_t system,
- double constraint_value, double bandwidth, double latency,
- e_surf_link_sharing_policy_t policy);
+ double bandwidth, double latency, e_surf_link_sharing_policy_t policy,
+ lmm_system_t system);
void apply_event(tmgr_trace_iterator_t event, double value) override;
void updateBandwidth(double value) override;
namespace simgrid {
namespace surf {
- class NetworkModel;
class NetworkAction;
- /*************
- * Callbacks *
- *************/
-
-
/** @brief Callback signal fired when the state of a NetworkAction changes
* Signature: `void(NetworkAction *action, simgrid::surf::Action::State old, simgrid::surf::Action::State current)` */
XBT_PUBLIC_DATA(simgrid::xbt::signal<void(simgrid::surf::NetworkAction*, simgrid::surf::Action::State, simgrid::surf::Action::State)>) networkActionStateChangedCallbacks;
- }
+ }
}
/*********
* Model *
* @param bandwidth The initial bandwidth of the Link in bytes per second
* @param latency The initial latency of the Link in seconds
* @param policy The sharing policy of the Link
- * @param properties Dictionary of properties associated to this Resource
- * @return The created Link
*/
virtual Link* createLink(const char *name, double bandwidth, double latency,
e_surf_link_sharing_policy_t policy, xbt_dict_t properties)=0;
/**
* @brief Create a communication between two hosts.
* @details It makes calls to the routing part, and execute the communication
- * between the two end points.
+ * between the two end points.
*
* @param src The source of the communication
* @param dst The destination of the communication
public simgrid::surf::Resource,
public simgrid::surf::PropertyHolder {
public:
- /**
- * @brief Link constructor
- *
- * @param model The NetworkModel associated to this Link
- * @param name The name of the Link
- * @param props Dictionary of properties associated to this Link
- */
- Link(simgrid::surf::NetworkModel *model, const char *name, xbt_dict_t props);
- /**
- * @brief Link constructor
- *
- * @param model The NetworkModel associated to this Link
- * @param name The name of the Link
- * @param props Dictionary of properties associated to this Link
- * @param constraint The lmm constraint associated to this Cpu if it is part of a LMM component
- */
+ /** @brief Constructor of non-LMM links */
+ Link(simgrid::surf::NetworkModel *model, const char *name, xbt_dict_t props);
+ /** @brief Constructor of LMM links */
Link(simgrid::surf::NetworkModel *model, const char *name, xbt_dict_t props, lmm_constraint_t constraint);
/* Link destruction logic */
cpu->setStateTrace(host->state_trace);
if (host->speed_trace)
cpu->setSpeedTrace(host->speed_trace);
- surf_host_model->createHost(host->id, netcard, cpu, host->properties)->attach(h);
+ surf_host_model->createHost(host->id, netcard, cpu)->attach(h);
+
+ if (host->properties) {
+ xbt_dict_cursor_t cursor=NULL;
+ char *key,*data;
+ xbt_dict_foreach(host->properties,cursor,key,data)
+ h->setProperty(key,data);
+ }
if (host->pstate != 0)
cpu->setPState(host->pstate);
bool operator==(const Resource &other) const;
/**
- * @brief Apply an event of external load event to that storage
+ * @brief Apply an event of external load event to that resource
*
* @param event What happened
* @param value [TODO]
* Resource *
************/
-VirtualMachine::VirtualMachine(HostModel *model, const char *name, xbt_dict_t props, simgrid::s4u::Host *hostPM)
-: HostImpl(model, name, props, NULL, NULL, NULL)
-, p_hostPM(hostPM)
+VirtualMachine::VirtualMachine(HostModel *model, const char *name, simgrid::s4u::Host *hostPM)
+: HostImpl(model, name, NULL, NULL, NULL)
+, hostPM_(hostPM)
{
VMModel::ws_vms.push_back(*this);
simgrid::s4u::Host::by_name_or_create(name)->extension_set<simgrid::surf::HostImpl>(this);
VMDestructedCallbacks(this);
VMModel::ws_vms.erase(VMModel::vm_list_t::s_iterator_to(*this));
/* Free the cpu_action of the VM. */
- XBT_ATTRIB_UNUSED int ret = p_action->unref();
+ XBT_ATTRIB_UNUSED int ret = action_->unref();
xbt_assert(ret == 1, "Bug: some resource still remains");
}
/** @brief returns the physical machine on which the VM is running **/
sg_host_t VirtualMachine::getPm() {
- return p_hostPM;
+ return hostPM_;
}
}
*/
class VirtualMachine : public HostImpl {
public:
- /**
- * @brief Constructor
- *
- * @param model VMModel associated to this VM
- * @param name The name of the VM
- * @param props Dictionary of properties associated to this VM
- * @param host The host
- */
- VirtualMachine(simgrid::surf::HostModel *model, const char *name, xbt_dict_t props, simgrid::s4u::Host *host);
-
- /** @brief Destructor */
+ VirtualMachine(simgrid::surf::HostModel *model, const char *name, simgrid::s4u::Host *host);
~VirtualMachine();
/** @brief Suspend the VM */
virtual void setAffinity(Cpu *cpu, unsigned long mask)=0;
/* The vm object of the lower layer */
- CpuAction *p_action;
- simgrid::s4u::Host *p_hostPM;
+ CpuAction *action_;
+protected:
+ simgrid::s4u::Host *hostPM_;
+public:
void turnOn() override;
void turnOff() override;
-public:
e_surf_vm_state_t getState();
void setState(e_surf_vm_state_t state);
protected:
VirtualMachine *VMHL13Model::createVM(const char *name, sg_host_t host_PM)
{
- VirtualMachine* vm = new VMHL13(this, name, NULL, host_PM);
+ VirtualMachine* vm = new VMHL13(this, name, host_PM);
VMCreatedCallbacks(vm);
return vm;
}
Cpu *cpu = ws_vm->p_cpu;
xbt_assert(cpu, "cpu-less host");
- double solved_value = ws_vm->p_action->getVariable()->value;
- XBT_DEBUG("assign %f to vm %s @ pm %s", solved_value, ws_vm->getName(), ws_vm->p_hostPM->name().c_str());
+ double solved_value = ws_vm->action_->getVariable()->value;
+ XBT_DEBUG("assign %f to vm %s @ pm %s", solved_value, ws_vm->getName(), ws_vm->getPm()->name().c_str());
// TODO: check lmm_update_constraint_bound() works fine instead of the below manual substitution.
// cpu_cas01->constraint->bound = solved_value;
/************
* Resource *
************/
-VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, sg_host_t host_PM)
- : VirtualMachine(model, name, props, host_PM)
+VMHL13::VMHL13(VMModel *model, const char* name, sg_host_t host_PM)
+ : VirtualMachine(model, name, host_PM)
{
/* Currently, we assume a VM has no storage. */
p_storage = NULL;
/* We create cpu_action corresponding to a VM process on the host operating system. */
/* FIXME: TODO: we have to periodically input GUESTOS_NOISE to the system? how ? */
- p_action = sub_cpu->execution_start(0);
+ action_ = sub_cpu->execution_start(0);
- XBT_VERB("Create VM(%s)@PM(%s) with %ld mounted disks", name, p_hostPM->name().c_str(), xbt_dynar_length(p_storage));
+ XBT_VERB("Create VM(%s)@PM(%s) with %ld mounted disks", name, hostPM_->name().c_str(), xbt_dynar_length(p_storage));
}
void VMHL13::suspend()
{
- p_action->suspend();
+ action_->suspend();
p_vm_state = SURF_VM_STATE_SUSPENDED;
}
void VMHL13::resume()
{
- p_action->resume();
+ action_->resume();
p_vm_state = SURF_VM_STATE_RUNNING;
}
p_vm_state = SURF_VM_STATE_SAVING;
/* FIXME: do something here */
- p_action->suspend();
+ action_->suspend();
p_vm_state = SURF_VM_STATE_SAVED;
}
p_vm_state = SURF_VM_STATE_RESTORING;
/* FIXME: do something here */
- p_action->resume();
+ action_->resume();
p_vm_state = SURF_VM_STATE_RUNNING;
}
{
HostImpl *surfHost_dst = host_dest->extension<HostImpl>();
const char *vm_name = getName();
- const char *pm_name_src = p_hostPM->name().c_str();
+ const char *pm_name_src = hostPM_->name().c_str();
const char *pm_name_dst = surfHost_dst->getName();
/* update net_elm with that of the destination physical host */
sg_host_by_name(vm_name)->pimpl_netcard = sg_host_by_name(pm_name_dst)->pimpl_netcard;
- p_hostPM = host_dest;
+ hostPM_ = host_dest;
/* Update vcpu's action for the new pm */
{
/* create a cpu action bound to the pm model at the destination. */
CpuAction *new_cpu_action = static_cast<CpuAction*>(host_dest->pimpl_cpu->execution_start(0));
- Action::State state = p_action->getState();
+ Action::State state = action_->getState();
if (state != Action::State::done)
XBT_CRITICAL("FIXME: may need a proper handling, %d", static_cast<int>(state));
- if (p_action->getRemainsNoUpdate() > 0)
- XBT_CRITICAL("FIXME: need copy the state(?), %f", p_action->getRemainsNoUpdate());
+ if (action_->getRemainsNoUpdate() > 0)
+ XBT_CRITICAL("FIXME: need copy the state(?), %f", action_->getRemainsNoUpdate());
/* keep the bound value of the cpu action of the VM. */
- double old_bound = p_action->getBound();
+ double old_bound = action_->getBound();
if (old_bound != 0) {
XBT_DEBUG("migrate VM(%s): set bound (%f) at %s", vm_name, old_bound, pm_name_dst);
new_cpu_action->setBound(old_bound);
}
- XBT_ATTRIB_UNUSED int ret = p_action->unref();
+ XBT_ATTRIB_UNUSED int ret = action_->unref();
xbt_assert(ret == 1, "Bug: some resource still remains");
- p_action = new_cpu_action;
+ action_ = new_cpu_action;
}
XBT_DEBUG("migrate VM(%s): change PM (%s to %s)", vm_name, pm_name_src, pm_name_dst);
}
void VMHL13::setBound(double bound){
- p_action->setBound(bound);
+ action_->setBound(bound);
}
void VMHL13::setAffinity(Cpu *cpu, unsigned long mask){
- p_action->setAffinity(cpu, mask);
+ action_->setAffinity(cpu, mask);
}
}
class VMHL13 : public VirtualMachine {
public:
- VMHL13(VMModel *model, const char* name, xbt_dict_t props, sg_host_t host_PM);
+ VMHL13(VMModel *model, const char* name, sg_host_t host_PM);
~VMHL13() {}
void suspend() override;
xbt_dict_set((xbt_dict_t) * cfg, name, res, NULL);
}
+void xbt_cfg_register_double(xbt_cfg_t * cfg, const char *name, const char *desc, double default_value,xbt_cfg_cb_t cb_set){
+ xbt_cfg_register(cfg,name,desc,xbt_cfgelm_double,1,1,cb_set);
+ xbt_cfg_setdefault_double(cfg, name, default_value);
+}
+void xbt_cfg_register_int(xbt_cfg_t * cfg, const char *name, const char *desc, int default_value,xbt_cfg_cb_t cb_set){
+ xbt_cfg_register(cfg,name,desc,xbt_cfgelm_int,1,1,cb_set);
+ xbt_cfg_setdefault_int(cfg, name, default_value);
+}
+void xbt_cfg_register_string(xbt_cfg_t * cfg, const char *name, const char *desc, const char *default_value, xbt_cfg_cb_t cb_set){
+ xbt_cfg_register(cfg,name,desc,xbt_cfgelm_string,1,1,cb_set);
+ xbt_cfg_setdefault_string(cfg, name, default_value);
+}
+void xbt_cfg_register_boolean(xbt_cfg_t * cfg, const char *name, const char *desc, const char*default_value,xbt_cfg_cb_t cb_set){
+ xbt_cfg_register(cfg,name,desc,xbt_cfgelm_boolean,1,1,cb_set);
+ xbt_cfg_setdefault_boolean(cfg, name, default_value);
+}
+
void xbt_cfg_register_alias(xbt_cfg_t * cfg, const char *newname, const char *oldname)
{
if (*cfg == NULL)
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;
-set(bin_files
- ${bin_files}
- ${CMAKE_CURRENT_SOURCE_DIR}/generate_report
- PARENT_SCOPE)
+set(bin_files ${bin_files} ${CMAKE_CURRENT_SOURCE_DIR}/generate_report PARENT_SCOPE)
if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_HOME_DIRECTORY}")
else()
endforeach()
endif()
-set(txt_files
- ${txt_files}
- ${CMAKE_CURRENT_SOURCE_DIR}/README
- ${CMAKE_CURRENT_SOURCE_DIR}/runtests
- ${CMAKE_CURRENT_SOURCE_DIR}/testlist
- ${CMAKE_CURRENT_SOURCE_DIR}/hostfile
- ${CMAKE_CURRENT_SOURCE_DIR}/checktests
- ${CMAKE_CURRENT_SOURCE_DIR}/generate_report
- ${CMAKE_CURRENT_SOURCE_DIR}/util/mtest.c
- ${CMAKE_CURRENT_SOURCE_DIR}/util/dtypes.c
- ${CMAKE_CURRENT_SOURCE_DIR}/util/mtest_manual.c
- ${CMAKE_CURRENT_SOURCE_DIR}/f77/testlist
- ${CMAKE_CURRENT_SOURCE_DIR}/f90/testlist
- ${CMAKE_CURRENT_SOURCE_DIR}/include/mpitestconf.h
- ${CMAKE_CURRENT_SOURCE_DIR}/include/dtypes.h
- ${CMAKE_CURRENT_SOURCE_DIR}/include/mpitest.h
- PARENT_SCOPE)
-
+set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/README
+ ${CMAKE_CURRENT_SOURCE_DIR}/runtests
+ ${CMAKE_CURRENT_SOURCE_DIR}/testlist
+ ${CMAKE_CURRENT_SOURCE_DIR}/hostfile
+ ${CMAKE_CURRENT_SOURCE_DIR}/checktests
+ ${CMAKE_CURRENT_SOURCE_DIR}/generate_report
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/mtest.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/dtypes.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/mtest_manual.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/f77/testlist
+ ${CMAKE_CURRENT_SOURCE_DIR}/f90/testlist
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/mpitestconf.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/dtypes.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/mpitest.h PARENT_SCOPE)
#build only once files used in each test (C version compiled here at root, F77 is in f77/util, and F90 in F90/util)
include_directories(BEFORE "${CMAKE_HOME_DIRECTORY}/include/smpi")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include/")
- add_executable(attr2type attr2type.c)
- add_executable(attrend2 attrend2.c)
- add_executable(attrend attrend.c)
- add_executable(attrerr attrerr.c)
- add_executable(attrerrcomm attrerrcomm.c)
- add_executable(attrerrtype attrerrtype.c)
-# add_executable(attric attric.c)
- add_executable(attrorder attrorder.c)
- add_executable(attrordercomm attrordercomm.c)
- add_executable(attrordertype attrordertype.c)
- add_executable(attrt attrt.c)
- add_executable(baseattr2 baseattr2.c)
- add_executable(baseattrcomm baseattrcomm.c)
- add_executable(fkeyval fkeyval.c)
-# add_executable(fkeyvalcomm fkeyvalcomm.c)
-# add_executable(fkeyvaltype fkeyvaltype.c)
-# add_executable(keyval_double_free keyval_double_free.c)
-
- target_link_libraries(attr2type simgrid mtest_c)
- target_link_libraries(attrend2 simgrid mtest_c)
- target_link_libraries(attrend simgrid mtest_c)
- target_link_libraries(attrerr simgrid mtest_c)
- target_link_libraries(attrerrcomm simgrid mtest_c)
- target_link_libraries(attrerrtype simgrid mtest_c)
-# target_link_libraries(attric simgrid mtest_c)
- target_link_libraries(attrorder simgrid mtest_c)
- target_link_libraries(attrordercomm simgrid mtest_c)
- target_link_libraries(attrordertype simgrid mtest_c)
- target_link_libraries(attrt simgrid mtest_c)
- target_link_libraries(baseattr2 simgrid mtest_c)
- target_link_libraries(baseattrcomm simgrid mtest_c)
- target_link_libraries(fkeyval simgrid mtest_c)
-# target_link_libraries(fkeyvalcomm simgrid mtest_c)
-# target_link_libraries(fkeyvaltype simgrid mtest_c)
-# target_link_libraries(keyval_double_free simgrid mtest_c)
-
+ foreach(file attr2type attrend2 attrend attrerr attrerrcomm attrerrtype attrorder attrordercomm attrordertype attrt
+ baseattr2 baseattrcomm fkeyval) #attric fkeyvalcomm fkeyvaltype keyval_double_free
+ add_executable(${file} ${file}.c)
+ target_link_libraries(${file} simgrid mtest_c)
+ endforeach()
endif()
-set(examples_src
- ${examples_src}
- ${CMAKE_CURRENT_SOURCE_DIR}/attr2type.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrend2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrend.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrerr.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrerrcomm.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrerrtype.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attric.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrorder.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrordercomm.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrordertype.c
- ${CMAKE_CURRENT_SOURCE_DIR}/attrt.c
- ${CMAKE_CURRENT_SOURCE_DIR}/baseattr2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/baseattrcomm.c
- ${CMAKE_CURRENT_SOURCE_DIR}/fkeyval.c
- ${CMAKE_CURRENT_SOURCE_DIR}/fkeyvalcomm.c
- ${CMAKE_CURRENT_SOURCE_DIR}/fkeyvaltype.c
- ${CMAKE_CURRENT_SOURCE_DIR}/keyval_double_free.c
- PARENT_SCOPE)
-set(txt_files
- ${txt_files}
- ${CMAKE_CURRENT_SOURCE_DIR}/testlist
- PARENT_SCOPE)
+foreach(file attr2type attrend2 attrend attrerr attrerrcomm attrerrtype attrorder attrordercomm attrordertype attrt
+ baseattr2 baseattrcomm fkeyval attric fkeyvalcomm fkeyvaltype keyval_double_free)
+ set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.c)
+endforeach()
+set(examples_src ${examples_src} PARENT_SCOPE)
+set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/testlist PARENT_SCOPE)
include_directories(BEFORE "${CMAKE_HOME_DIRECTORY}/include/smpi")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include/")
- add_executable(cmfree cmfree.c)
- add_executable(cmsplit2 cmsplit2.c)
- add_executable(cmsplit cmsplit.c)
- add_executable(cmsplit_type cmsplit_type.c)
- add_executable(commcreate1 commcreate1.c)
- add_executable(comm_create_group comm_create_group.c)
- add_executable(comm_group_half comm_group_half.c)
- add_executable(comm_group_rand comm_group_rand.c)
-# add_executable(comm_idup comm_idup.c)
-# add_executable(comm_idup_mul comm_idup_mul.c)
-# add_executable(comm_idup_overlap comm_idup_overlap.c)
- add_executable(comm_info comm_info.c)
-# add_executable(commname commname.c)
- add_executable(ctxalloc ctxalloc.c)
- add_executable(ctxsplit ctxsplit.c)
- add_executable(dup dup.c)
-# add_executable(dupic dupic.c)
- add_executable(dup_with_info dup_with_info.c)
-# add_executable(ic1 ic1.c)
-# add_executable(ic2 ic2.c)
-# add_executable(iccreate iccreate.c)
-# add_executable(icgroup icgroup.c)
-# add_executable(icm icm.c)
-# add_executable(icsplit icsplit.c)
-# add_executable(probe-intercomm probe-intercomm.c)
-
- target_link_libraries(cmfree simgrid mtest_c)
- target_link_libraries(cmsplit2 simgrid mtest_c)
- target_link_libraries(cmsplit simgrid mtest_c)
- target_link_libraries(cmsplit_type simgrid mtest_c)
- target_link_libraries(commcreate1 simgrid mtest_c)
- target_link_libraries(comm_create_group simgrid mtest_c)
- target_link_libraries(comm_group_half simgrid mtest_c)
- target_link_libraries(comm_group_rand simgrid mtest_c)
-# target_link_libraries(comm_idup simgrid mtest_c)
- target_link_libraries(comm_info simgrid mtest_c)
-# target_link_libraries(commname simgrid mtest_c)
- target_link_libraries(ctxalloc simgrid mtest_c)
- target_link_libraries(ctxsplit simgrid mtest_c)
- target_link_libraries(dup simgrid mtest_c)
-# target_link_libraries(dupic simgrid mtest_c)
- target_link_libraries(dup_with_info simgrid mtest_c)
-# target_link_libraries(ic1 simgrid mtest_c)
-# target_link_libraries(ic2 simgrid mtest_c)
-# target_link_libraries(iccreate simgrid mtest_c)
-# target_link_libraries(icgroup simgrid mtest_c)
-# target_link_libraries(icm simgrid mtest_c)
-# target_link_libraries(icsplit simgrid mtest_c)
-# target_link_libraries(probe-intercomm simgrid mtest_c)
-
+ foreach(file cmfree cmsplit2 cmsplit cmsplit_type commcreate1 comm_create_group comm_group_half comm_group_rand
+ comm_info ctxalloc ctxsplit dup dup_with_info)
+ # not compiled files
+ # comm_idup comm_idup_mul comm_idup_overlap commname dupic ic1 ic2 iccreate icgroup icm icsplit probe-intercomm
+ add_executable(${file} ${file}.c)
+ target_link_libraries(${file} simgrid mtest_c)
+ endforeach()
endif()
-set(examples_src
- ${examples_src}
- ${CMAKE_CURRENT_SOURCE_DIR}/cmfree.c
- ${CMAKE_CURRENT_SOURCE_DIR}/cmsplit2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/cmsplit.c
- ${CMAKE_CURRENT_SOURCE_DIR}/cmsplit_type.c
- ${CMAKE_CURRENT_SOURCE_DIR}/commcreate1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/comm_create_group.c
- ${CMAKE_CURRENT_SOURCE_DIR}/comm_group_half.c
- ${CMAKE_CURRENT_SOURCE_DIR}/comm_group_rand.c
- ${CMAKE_CURRENT_SOURCE_DIR}/comm_idup.c
- ${CMAKE_CURRENT_SOURCE_DIR}/comm_idup_overlap.c
- ${CMAKE_CURRENT_SOURCE_DIR}/comm_idup_mul.c
- ${CMAKE_CURRENT_SOURCE_DIR}/comm_info.c
- ${CMAKE_CURRENT_SOURCE_DIR}/commname.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ctxalloc.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ctxsplit.c
- ${CMAKE_CURRENT_SOURCE_DIR}/dup.c
- ${CMAKE_CURRENT_SOURCE_DIR}/dupic.c
- ${CMAKE_CURRENT_SOURCE_DIR}/dup_with_info.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ic1.c
- ${CMAKE_CURRENT_SOURCE_DIR}/ic2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/iccreate.c
- ${CMAKE_CURRENT_SOURCE_DIR}/icgroup.c
- ${CMAKE_CURRENT_SOURCE_DIR}/icm.c
- ${CMAKE_CURRENT_SOURCE_DIR}/icsplit.c
- ${CMAKE_CURRENT_SOURCE_DIR}/probe-intercomm.c
- PARENT_SCOPE)
-set(txt_files
- ${txt_files}
- ${CMAKE_CURRENT_SOURCE_DIR}/testlist
- PARENT_SCOPE)
+foreach(file cmfree cmsplit2 cmsplit cmsplit_type commcreate1 comm_create_group comm_group_half comm_group_rand
+ comm_idup comm_idup_overlap comm_idup_mul comm_info commname ctxalloc ctxsplit dup dupic dup_with_info ic1 ic2
+ iccreate icgroup icm icsplit probe-intercomm)
+ set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.c)
+endforeach()
+
+set(examples_src ${examples_src} PARENT_SCOPE)
+set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/testlist PARENT_SCOPE)
include_directories(BEFORE "${CMAKE_HOME_DIRECTORY}/include/smpi")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include/")
-# add_executable(blockindexed-misc blockindexed-misc.c)
- add_executable(blockindexed-zero-count blockindexed-zero-count.c)
-# add_executable(contents contents.c)
- add_executable(contigstruct contigstruct.c)
- add_executable(contig-zero-count contig-zero-count.c)
- add_executable(cxx-types cxx-types.c)
-# add_executable(darray-cyclic darray-cyclic.c)
-# add_executable(darray-pack darray-pack.c)
- add_executable(dataalign dataalign.c)
- add_executable(gaddress gaddress.c)
-# add_executable(get-elements get-elements.c)
-# add_executable(get-elements-pairtype get-elements-pairtype.c)
-# add_executable(getpartelm getpartelm.c)
-# add_executable(get-struct get-struct.c)
- add_executable(hindexed_block hindexed_block.c)
- add_executable(hindexed_block_contents hindexed_block_contents.c)
-# add_executable(hindexed-zeros hindexed-zeros.c)
-# add_executable(hvecblklen hvecblklen.c)
-# add_executable(indexed-misc indexed-misc.c)
-# add_executable(large-count large-count.c)
-# add_executable(large_type large_type.c)
-# add_executable(large_type_sendrec large_type_sendrec.c)
-# add_executable(lbub lbub.c)
- add_executable(localpack localpack.c)
- add_executable(longdouble longdouble.c)
-# add_executable(lots-of-types lots-of-types.c)
-# add_executable(pairtype-pack pairtype-pack.c)
-# add_executable(pairtype-size-extent pairtype-size-extent.c)
-# add_executable(segtest segtest.c)
+ foreach(file blockindexed-zero-count contigstruct contig-zero-count cxx-types dataalign gaddress hindexed_block
+ hindexed_block_contents localpack longdouble simple-commit simple-pack simple-resized simple-size-extent
+ struct-derived-zeros struct-ezhov struct-pack struct-verydeep struct-zero-count tfree transpose-pack tresized2
+ tresized typecommit typefree typelb typename unpack zeroblks zeroparms)
+ # not compiled files
+ # blockindexed-misc contents darray-cyclic darray-pack get-elements get-elements-pairtype getpartelm get-struct
+ # hindexed-zeros hvecblklen indexed-misc large-count large_type large_type_sendrec lbub lots-of-type pairtype-pack
+ # pairtype-size-extent segtest simple-pack-external sizedtypes slice-pack slice-pack-external struct-empty-el
+ # struct-no-real-type structpack2 subarray subarray-pack tmatchsize triangular-pack unusual-noncontigs vecblklen
+ # zero-blklen-vector
+ add_executable(${file} ${file}.c)
+ target_link_libraries(${file} simgrid mtest_c)
+ endforeach()
+
add_executable(sendrecvt2 ${CMAKE_CURRENT_SOURCE_DIR}/../util/dtypes.c sendrecvt2.c)
add_executable(sendrecvt4 ${CMAKE_CURRENT_SOURCE_DIR}/../util/dtypes.c sendrecvt4.c)
- add_executable(simple-commit simple-commit.c)
- add_executable(simple-pack simple-pack.c)
-# add_executable(simple-pack-external simple-pack-external.c)
- add_executable(simple-resized simple-resized.c)
- add_executable(simple-size-extent simple-size-extent.c)
-# add_executable(sizedtypes sizedtypes.c)
-# add_executable(slice-pack slice-pack.c)
-# add_executable(slice-pack-external slice-pack-external.c)
- add_executable(struct-derived-zeros struct-derived-zeros.c)
-# add_executable(struct-empty-el struct-empty-el.c)
- add_executable(struct-ezhov struct-ezhov.c)
-# add_executable(struct-no-real-types struct-no-real-types.c)
- add_executable(struct-pack struct-pack.c)
-# add_executable(structpack2 structpack2.c)
- add_executable(struct-verydeep struct-verydeep.c)
- add_executable(struct-zero-count struct-zero-count.c)
-# add_executable(subarray subarray.c)
-# add_executable(subarray-pack subarray-pack.c)
- add_executable(tfree tfree.c)
-# add_executable(tmatchsize tmatchsize.c)
- add_executable(transpose-pack transpose-pack.c)
- add_executable(tresized2 tresized2.c)
- add_executable(tresized tresized.c)
-# add_executable(triangular-pack triangular-pack.c)
- add_executable(typecommit typecommit.c)
- add_executable(typefree typefree.c)
- add_executable(typelb typelb.c)
- add_executable(typename typename.c)
- add_executable(unpack unpack.c)
-# add_executable(unusual-noncontigs unusual-noncontigs.c)
-# add_executable(vecblklen vecblklen.c)
-# add_executable(zero-blklen-vector zero-blklen-vector.c)
- add_executable(zeroblks zeroblks.c)
- add_executable(zeroparms zeroparms.c)
-
-# target_link_libraries(blockindexed-misc simgrid mtest_c)
- target_link_libraries(blockindexed-zero-count simgrid mtest_c)
-# target_link_libraries(contents simgrid mtest_c)
- target_link_libraries(contigstruct simgrid mtest_c)
- target_link_libraries(contig-zero-count simgrid mtest_c)
- target_link_libraries(cxx-types simgrid mtest_c)
-# target_link_libraries(darray-cyclic simgrid mtest_c)
-# target_link_libraries(darray-pack simgrid mtest_c)
- target_link_libraries(dataalign simgrid mtest_c)
- target_link_libraries(gaddress simgrid mtest_c)
-# target_link_libraries(get-elements simgrid mtest_c)
-# target_link_libraries(get-elements-pairtype simgrid mtest_c)
-# target_link_libraries(getpartelm simgrid mtest_c)
-# target_link_libraries(get-struct simgrid mtest_c)
- target_link_libraries(hindexed_block simgrid mtest_c)
- target_link_libraries(hindexed_block_contents simgrid mtest_c)
-# target_link_libraries(hindexed-zeros simgrid mtest_c).
-# target_link_libraries(hvecblklen simgrid mtest_c)
-# target_link_libraries(indexed-misc simgrid mtest_c)
-# target_link_libraries(large-count simgrid mtest_c)
-# target_link_libraries(large_type simgrid mtest_c)
-# target_link_libraries(large_type_sendrec simgrid mtest_c)
-# target_link_libraries(lbub simgrid mtest_c)
- target_link_libraries(localpack simgrid mtest_c)
- target_link_libraries(longdouble simgrid mtest_c)
-# target_link_libraries(lots-of-types simgrid mtest_c)
-# target_link_libraries(pairtype-pack simgrid mtest_c)
-# target_link_libraries(pairtype-size-extent simgrid mtest_c)
-# target_link_libraries(segtest simgrid mtest_c)
target_link_libraries(sendrecvt2 simgrid mtest_c)
target_link_libraries(sendrecvt4 simgrid mtest_c)
- target_link_libraries(simple-commit simgrid mtest_c)
- target_link_libraries(simple-pack simgrid mtest_c)
-# target_link_libraries(simple-pack-external simgrid mtest_c)
- target_link_libraries(simple-resized simgrid mtest_c)
- target_link_libraries(simple-size-extent simgrid mtest_c)
-# target_link_libraries(sizedtypes simgrid mtest_c)
-# target_link_libraries(slice-pack simgrid mtest_c)
-# target_link_libraries(slice-pack-external simgrid mtest_c)
- target_link_libraries(struct-derived-zeros simgrid mtest_c)
-# target_link_libraries(struct-empty-el simgrid mtest_c)
- target_link_libraries(struct-ezhov simgrid mtest_c)
-# target_link_libraries(struct-no-real-types simgrid mtest_c)
- target_link_libraries(struct-pack simgrid mtest_c)
-# target_link_libraries(structpack2 simgrid mtest_c)
- target_link_libraries(struct-verydeep simgrid mtest_c)
- target_link_libraries(struct-zero-count simgrid mtest_c)
-# target_link_libraries(subarray simgrid mtest_c)
-# target_link_libraries(subarray-pack simgrid mtest_c)
- target_link_libraries(tfree simgrid mtest_c)
-# target_link_libraries(tmatchsize simgrid mtest_c)
- target_link_libraries(transpose-pack simgrid mtest_c)
- target_link_libraries(tresized2 simgrid mtest_c)
- target_link_libraries(tresized simgrid mtest_c)
-# target_link_libraries(triangular-pack simgrid mtest_c)
- target_link_libraries(typecommit simgrid mtest_c)
- target_link_libraries(typefree simgrid mtest_c)
- target_link_libraries(typelb simgrid mtest_c)
- target_link_libraries(typename simgrid mtest_c)
- target_link_libraries(unpack simgrid mtest_c)
-# target_link_libraries(unusual-noncontigs simgrid mtest_c)
-# target_link_libraries(vecblklen simgrid mtest_c)
-# target_link_libraries(zero-blklen-vector simgrid mtest_c)
- target_link_libraries(zeroblks simgrid mtest_c)
- target_link_libraries(zeroparms simgrid mtest_c)
-
endif()
-set(examples_src
- ${examples_src}
- ${CMAKE_CURRENT_SOURCE_DIR}/blockindexed-misc.c
- ${CMAKE_CURRENT_SOURCE_DIR}/blockindexed-zero-count.c
- ${CMAKE_CURRENT_SOURCE_DIR}/contents.c
- ${CMAKE_CURRENT_SOURCE_DIR}/contigstruct.c
- ${CMAKE_CURRENT_SOURCE_DIR}/contig-zero-count.c
- ${CMAKE_CURRENT_SOURCE_DIR}/cxx-types.c
- ${CMAKE_CURRENT_SOURCE_DIR}/darray-cyclic.c
- ${CMAKE_CURRENT_SOURCE_DIR}/darray-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/dataalign.c
- ${CMAKE_CURRENT_SOURCE_DIR}/gaddress.c
- ${CMAKE_CURRENT_SOURCE_DIR}/get-elements.c
- ${CMAKE_CURRENT_SOURCE_DIR}/get-elements-pairtype.c
- ${CMAKE_CURRENT_SOURCE_DIR}/getpartelm.c
- ${CMAKE_CURRENT_SOURCE_DIR}/get-struct.c
- ${CMAKE_CURRENT_SOURCE_DIR}/hindexed_block.c
- ${CMAKE_CURRENT_SOURCE_DIR}/hindexed_block_contents.c
- ${CMAKE_CURRENT_SOURCE_DIR}/hindexed-zeros.c
- ${CMAKE_CURRENT_SOURCE_DIR}/hvecblklen.c
- ${CMAKE_CURRENT_SOURCE_DIR}/indexed-misc.c
- ${CMAKE_CURRENT_SOURCE_DIR}/large-count.c
- ${CMAKE_CURRENT_SOURCE_DIR}/large_type.c
- ${CMAKE_CURRENT_SOURCE_DIR}/large_type_sendrec.c
- ${CMAKE_CURRENT_SOURCE_DIR}/lbub.c
- ${CMAKE_CURRENT_SOURCE_DIR}/localpack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/longdouble.c
- ${CMAKE_CURRENT_SOURCE_DIR}/lots-of-types.c
- ${CMAKE_CURRENT_SOURCE_DIR}/pairtype-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/pairtype-size-extent.c
- ${CMAKE_CURRENT_SOURCE_DIR}/segtest.c
- ${CMAKE_CURRENT_SOURCE_DIR}/sendrecvt2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/sendrecvt4.c
- ${CMAKE_CURRENT_SOURCE_DIR}/simple-commit.c
- ${CMAKE_CURRENT_SOURCE_DIR}/simple-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/simple-pack-external.c
- ${CMAKE_CURRENT_SOURCE_DIR}/simple-resized.c
- ${CMAKE_CURRENT_SOURCE_DIR}/simple-size-extent.c
- ${CMAKE_CURRENT_SOURCE_DIR}/sizedtypes.c
- ${CMAKE_CURRENT_SOURCE_DIR}/slice-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/slice-pack-external.c
- ${CMAKE_CURRENT_SOURCE_DIR}/struct-derived-zeros.c
- ${CMAKE_CURRENT_SOURCE_DIR}/struct-empty-el.c
- ${CMAKE_CURRENT_SOURCE_DIR}/struct-ezhov.c
- ${CMAKE_CURRENT_SOURCE_DIR}/struct-no-real-types.c
- ${CMAKE_CURRENT_SOURCE_DIR}/struct-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/structpack2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/struct-verydeep.c
- ${CMAKE_CURRENT_SOURCE_DIR}/struct-zero-count.c
- ${CMAKE_CURRENT_SOURCE_DIR}/subarray.c
- ${CMAKE_CURRENT_SOURCE_DIR}/subarray-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tfree.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tmatchsize.c
- ${CMAKE_CURRENT_SOURCE_DIR}/transpose-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tresized2.c
- ${CMAKE_CURRENT_SOURCE_DIR}/tresized.c
- ${CMAKE_CURRENT_SOURCE_DIR}/triangular-pack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/typecommit.c
- ${CMAKE_CURRENT_SOURCE_DIR}/typefree.c
- ${CMAKE_CURRENT_SOURCE_DIR}/typelb.c
- ${CMAKE_CURRENT_SOURCE_DIR}/typename.c
- ${CMAKE_CURRENT_SOURCE_DIR}/unpack.c
- ${CMAKE_CURRENT_SOURCE_DIR}/unusual-noncontigs.c
- ${CMAKE_CURRENT_SOURCE_DIR}/vecblklen.c
- ${CMAKE_CURRENT_SOURCE_DIR}/zero-blklen-vector.c
- ${CMAKE_CURRENT_SOURCE_DIR}/zeroblks.c
- ${CMAKE_CURRENT_SOURCE_DIR}/zeroparms.c
- PARENT_SCOPE)
-set(txt_files
- ${txt_files}
- ${CMAKE_CURRENT_SOURCE_DIR}/testlist
- PARENT_SCOPE)
+foreach(file blockindexed-misc blockindexed-zero-count contents contigstruct contig-zero-count cxx-types darray-cyclic
+ darray-pack dataalign gaddress get-elements get-elements-pairtype getpartelm get-struct hindexed_block
+ hindexed_block_contents hindexed-zeros hvecblklen indexed-misc large-count large_type large_type_sendrec lbub
+ localpack longdouble lots-of-types pairtype-pack pairtype-size-extent segtest sendrecvt2 sendrecvt4
+ simple-commit simple-pack simple-pack-external simple-resized simple-size-extent sizedtypes slice-pack
+ slice-pack-external struct-derived-zeros struct-empty-el struct-ezhov struct-no-real-types struct-pack
+ structpack2 struct-verydeep struct-zero-count subarray subarray-pack tfree tmatchsize transpose-pack tresized2
+ tresized triangular-pack typecommit typefree typelb typename unpack unusual-noncontigs vecblklen
+ zero-blklen-vector zeroblks zeroparms)
+ set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.c)
+endforeach()
+
+set(examples_src ${examples_src} PARENT_SCOPE)
+set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/testlist PARENT_SCOPE)
)
set(SIMGRID_SRC
- src/simgrid/sg_config.c
+ src/simgrid/sg_config.cpp
src/simgrid/host.cpp
src/simgrid/util.hpp
)
# 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