Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Convert deprecated/msg/trace-masterworker to s4u/trace-masterworkers.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 7 Dec 2020 22:49:17 +0000 (23:49 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Tue, 8 Dec 2020 10:04:11 +0000 (11:04 +0100)
.gitignore
MANIFEST.in
examples/deprecated/msg/CMakeLists.txt
examples/deprecated/msg/trace-masterworker/trace-masterworker.c [deleted file]
examples/deprecated/msg/trace-masterworker/trace-masterworker.tesh [deleted file]
examples/s4u/CMakeLists.txt
examples/s4u/trace-masterworkers/s4u-trace-masterworkers.cpp [new file with mode: 0644]
examples/s4u/trace-masterworkers/s4u-trace-masterworkers.tesh [new file with mode: 0644]

index de21cbe..0149a15 100644 (file)
@@ -166,7 +166,6 @@ examples/deprecated/msg/mc/bugged3
 examples/deprecated/msg/mc/centralized_mutex
 examples/deprecated/msg/mc/electric_fence
 examples/deprecated/msg/synchro-semaphore/synchro-semaphore
-examples/deprecated/msg/trace-masterworker/trace-masterworker
 examples/deprecated/msg/trace-process-migration/trace-process-migration
 examples/deprecated/msg/*.pcap
 examples/deprecated/msg/*.tr
@@ -240,6 +239,7 @@ examples/s4u/synchro-semaphore/s4u-synchro-semaphore
 examples/s4u/trace-categories/s4u-trace-categories
 examples/s4u/trace-host-user-variables/s4u-trace-host-user-variables
 examples/s4u/trace-link-user-variables/s4u-trace-link-user-variables
+examples/s4u/trace-masterworkers/s4u-trace-masterworkers
 examples/s4u/trace-platform/s4u-trace-platform
 examples/s4u/trace-route-user-variables/s4u-trace-route-user-variables
 examples/deprecated/simdag/dag-dotload/sd_dag-dotload
index 61d62d6..27f3043 100644 (file)
@@ -262,8 +262,6 @@ include examples/deprecated/msg/mc/centralized_mutex.tesh
 include examples/deprecated/msg/mc/deploy_bugged2_liveness.xml
 include examples/deprecated/msg/mc/deploy_centralized_mutex.xml
 include examples/deprecated/msg/mc/promela_bugged2_liveness
-include examples/deprecated/msg/trace-masterworker/trace-masterworker.c
-include examples/deprecated/msg/trace-masterworker/trace-masterworker.tesh
 include examples/deprecated/msg/trace-process-migration/trace-process-migration.c
 include examples/deprecated/msg/trace-process-migration/trace-process-migration.tesh
 include examples/deprecated/simdag/dag-dotload/dag.dot
@@ -517,6 +515,8 @@ include examples/s4u/trace-host-user-variables/s4u-trace-host-user-variables.cpp
 include examples/s4u/trace-host-user-variables/s4u-trace-host-user-variables.tesh
 include examples/s4u/trace-link-user-variables/s4u-trace-link-user-variables.cpp
 include examples/s4u/trace-link-user-variables/s4u-trace-link-user-variables.tesh
+include examples/s4u/trace-masterworkers/s4u-trace-masterworkers.cpp
+include examples/s4u/trace-masterworkers/s4u-trace-masterworkers.tesh
 include examples/s4u/trace-platform/s4u-trace-platform.cpp
 include examples/s4u/trace-platform/s4u-trace-platform.tesh
 include examples/s4u/trace-route-user-variables/s4u-trace-route-user-variables.cpp
index bb6558d..4eb7711 100644 (file)
@@ -1,4 +1,4 @@
-foreach(x trace-masterworker trace-process-migration)
+foreach(x trace-process-migration)
   if(enable_msg)
     add_executable       (${x}  EXCLUDE_FROM_ALL ${x}/${x}.c)
     target_link_libraries(${x}  simgrid)
@@ -14,7 +14,7 @@ set(txt_files     ${txt_files}     ${CMAKE_CURRENT_SOURCE_DIR}/README.doc
 set(tesh_files    ${tesh_files}    PARENT_SCOPE)
 
 if(enable_msg)
-  foreach (x trace-masterworker trace-process-migration)
+  foreach (x trace-process-migration)
     ADD_TESH(msg-${x} --setenv bindir=${CMAKE_BINARY_DIR}/examples/deprecated/msg/${x}
                       --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/deprecated/msg/${x} 
                       --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms 
diff --git a/examples/deprecated/msg/trace-masterworker/trace-masterworker.c b/examples/deprecated/msg/trace-masterworker/trace-masterworker.c
deleted file mode 100644 (file)
index fcd6dff..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright (c) 2010-2020. 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. */
-
-#include "simgrid/msg.h"
-
-XBT_LOG_NEW_DEFAULT_CATEGORY(msg_trace_masterworker, "Messages specific for this msg example");
-
-static int master(int argc, char *argv[])
-{
-  xbt_assert(argc == 5);
-  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 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", "start_send_tasks");
-  for (int i = 0; i < number_of_tasks; i++) {
-    msg_task_t task = MSG_task_create("task", task_comp_size, task_comm_size, NULL);
-
-    //setting the variable "task_creation" to value i
-    TRACE_host_variable_set(MSG_host_get_name(MSG_host_self()), "task_creation", i);
-
-    //setting the category of task to "compute"
-    //the category of a task must be defined before it is sent or executed
-    MSG_task_set_category(task, "compute");
-    MSG_task_send(task, "master_mailbox");
-  }
-  TRACE_mark("msmark", "finish_send_tasks");
-
-  for (int 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 worker(XBT_ATTRIB_UNUSED int argc, XBT_ATTRIB_UNUSED char* argv[])
-{
-  msg_task_t task = NULL;
-
-  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");
-
-    if (strcmp(MSG_task_get_name(task), "finalize") == 0) {
-      MSG_task_destroy(task);
-      break;
-    }
-    // adding the value returned by MSG_task_get_compute_duration(task) to the variable "task_computation"
-    TRACE_host_variable_add(MSG_host_get_name(MSG_host_self()), "task_computation", MSG_task_get_flops_amount(task));
-    MSG_task_execute(task);
-    MSG_task_destroy(task);
-    task = NULL;
-  }
-  return 0;
-}
-
-int main(int argc, char *argv[])
-{
-  MSG_init(&argc, argv);
-  xbt_assert(argc > 2, "Usage: %s platform_file deployment_file\n"
-             "\tExample: %s msg_platform.xml msg_deployment.xml\n", argv[0], argv[0]);
-
-  MSG_create_environment(argv[1]);
-
-  //declaring user variables
-  TRACE_host_variable_declare("is_worker");
-  TRACE_host_variable_declare("is_master");
-  TRACE_host_variable_declare("task_creation");
-  TRACE_host_variable_declare("task_computation");
-
-  //declaring user markers and values
-  TRACE_declare_mark("msmark");
-  TRACE_declare_mark_value ("msmark", "start_send_tasks");
-  TRACE_declare_mark_value ("msmark", "finish_send_tasks");
-
-  //declaring user categories with RGB colors (values from 0 to 1)
-  TRACE_category_with_color ("compute", "1 0 0");  //compute is red
-  TRACE_category_with_color ("finalize", "0 1 0"); //finalize is green
-  //categories without user-defined colors receive random colors generated by the tracing system
-  TRACE_category ("request");
-  TRACE_category_with_color ("report", NULL);
-
-  MSG_function_register("master", master);
-  MSG_function_register("worker", worker);
-  MSG_launch_application(argv[2]);
-
-  MSG_main();
-
-  unsigned int cursor;
-  xbt_dynar_t categories = TRACE_get_categories ();
-  if (categories){
-    XBT_INFO ("Declared tracing categories:");
-    char *category;
-    xbt_dynar_foreach (categories, cursor, category){
-      XBT_INFO ("%s", category);
-    }
-    xbt_dynar_free (&categories);
-  }
-
-  xbt_dynar_t marks = TRACE_get_marks ();
-  if (marks){
-    XBT_INFO ("Declared marks:");
-    char *mark;
-    xbt_dynar_foreach (marks, cursor, mark){
-      XBT_INFO ("%s", mark);
-    }
-    xbt_dynar_free (&marks);
-  }
-
-  return 0;
-}
diff --git a/examples/deprecated/msg/trace-masterworker/trace-masterworker.tesh b/examples/deprecated/msg/trace-masterworker/trace-masterworker.tesh
deleted file mode 100644 (file)
index 9ab5b23..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/env tesh
-
-p Tracing master/worker application
-$ ${bindir:=.}/trace-masterworker --cfg=tracing:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir:=.}/../../../c/app-masterworker/app-masterworker_d.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
-> [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'
-> [4.214821] [msg_trace_masterworker/INFO] Declared tracing categories:
-> [4.214821] [msg_trace_masterworker/INFO] compute
-> [4.214821] [msg_trace_masterworker/INFO] finalize
-> [4.214821] [msg_trace_masterworker/INFO] report
-> [4.214821] [msg_trace_masterworker/INFO] request
-> [4.214821] [msg_trace_masterworker/INFO] Declared marks:
-> [4.214821] [msg_trace_masterworker/INFO] msmark
-
-p Tracing master/worker application with xml config
-$ ${bindir:=.}/trace-masterworker ${platfdir}/config_tracing.xml ${srcdir:=.}/../../../c/app-masterworker/app-masterworker_d.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
-> [4.214821] [msg_trace_masterworker/INFO] Declared tracing categories:
-> [4.214821] [msg_trace_masterworker/INFO] compute
-> [4.214821] [msg_trace_masterworker/INFO] finalize
-> [4.214821] [msg_trace_masterworker/INFO] report
-> [4.214821] [msg_trace_masterworker/INFO] request
-> [4.214821] [msg_trace_masterworker/INFO] Declared marks:
-> [4.214821] [msg_trace_masterworker/INFO] msmark
-
-p Not tracing master/worker application
-$ ${bindir:=.}/trace-masterworker ${platfdir}/small_platform.xml ${srcdir:=.}/../../../c/app-masterworker/app-masterworker_d.xml
-
-p Testing tracing by process
-$ ${bindir:=.}/trace-masterworker --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir:=.}/../../../c/app-masterworker/app-masterworker_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/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'
-> [4.214821] [msg_trace_masterworker/INFO] Declared tracing categories:
-> [4.214821] [msg_trace_masterworker/INFO] compute
-> [4.214821] [msg_trace_masterworker/INFO] finalize
-> [4.214821] [msg_trace_masterworker/INFO] report
-> [4.214821] [msg_trace_masterworker/INFO] request
-> [4.214821] [msg_trace_masterworker/INFO] Declared marks:
-> [4.214821] [msg_trace_masterworker/INFO] msmark
-
-$ rm -rf trace-masterworker.trace
index 25fec3b..a6941cb 100644 (file)
@@ -183,7 +183,7 @@ endif()
 # Examples not accepting factories
 ##################################
 
-foreach (example trace-categories trace-platform
+foreach (example trace-categories trace-platform trace-masterworkers
                  trace-host-user-variables trace-link-user-variables trace-route-user-variables)
   add_executable       (s4u-${example} EXCLUDE_FROM_ALL ${example}/s4u-${example}.cpp)
   target_link_libraries(s4u-${example} simgrid)
diff --git a/examples/s4u/trace-masterworkers/s4u-trace-masterworkers.cpp b/examples/s4u/trace-masterworkers/s4u-trace-masterworkers.cpp
new file mode 100644 (file)
index 0000000..3e189aa
--- /dev/null
@@ -0,0 +1,134 @@
+/* Copyright (c) 2010-2020. 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. */
+
+#include <simgrid/instr.h>
+#include <simgrid/s4u.hpp>
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_trace_masterworker, "Messages specific for this example");
+
+struct Task {
+  std::string name;
+  std::string category;
+  double flops;
+};
+
+static void master(std::vector<std::string> args)
+{
+  xbt_assert(args.size() > 4, "The master function expects at least 3 arguments");
+
+  long tasks_count        = std::stol(args[1]);
+  double compute_cost     = std::stod(args[2]);
+  long communication_cost = std::stol(args[3]);
+  size_t workers_count    = args.size() - 4;
+  const char* my_hostname = simgrid::s4u::this_actor::get_host()->get_cname();
+  auto mailbox            = simgrid::s4u::Mailbox::by_name("master_mailbox");
+
+  XBT_DEBUG("Got %zu workers and %ld tasks to process", workers_count, tasks_count);
+
+  // setting the variable "is_master" (previously declared) to value 1
+  TRACE_host_variable_set(my_hostname, "is_master", 1);
+
+  TRACE_mark("msmark", "start_send_tasks");
+  for (int i = 0; i < tasks_count; i++) {
+    // setting the variable "task_creation" to value i
+    TRACE_host_variable_set(my_hostname, "task_creation", i);
+
+    // setting the category of task to "compute"
+    Task task = {"task", "compute", compute_cost};
+    mailbox->put(new Task(task), communication_cost);
+  }
+  TRACE_mark("msmark", "finish_send_tasks");
+
+  XBT_DEBUG("All tasks have been dispatched. Request all workers to stop.");
+  for (unsigned int i = 0; i < workers_count; i++) {
+    Task finalize = {"finalize", "finalize", 0};
+    mailbox->put(new Task(finalize), 0);
+  }
+}
+
+static void worker(std::vector<std::string> args)
+{
+  xbt_assert(args.size() == 1, "The worker expects no argument");
+
+  const char* my_hostname = simgrid::s4u::this_actor::get_host()->get_cname();
+  auto mailbox            = simgrid::s4u::Mailbox::by_name("master_mailbox");
+
+  TRACE_host_variable_set(my_hostname, "is_worker", 1);
+  TRACE_host_variable_set(my_hostname, "task_computation", 0);
+
+  while (true) {
+    const auto* task = static_cast<Task*>(mailbox->get());
+    if (task->name == "finalize") {
+      delete task;
+      break;
+    }
+    // adding the task's cost to the variable "task_computation"
+    TRACE_host_variable_add(my_hostname, "task_computation", task->flops);
+    simgrid::s4u::this_actor::exec_init(task->flops)
+        ->set_name(task->name)
+        ->set_tracing_category(task->category)
+        ->wait();
+    delete task;
+  }
+
+  XBT_DEBUG("Exiting now.");
+}
+
+int main(int argc, char* argv[])
+{
+  simgrid::s4u::Engine e(&argc, argv);
+  xbt_assert(argc > 2, "Usage: %s platform_file deployment_file\n", argv[0]);
+
+  e.load_platform(argv[1]);
+
+  // declaring user variables
+  TRACE_host_variable_declare("is_worker");
+  TRACE_host_variable_declare("is_master");
+  TRACE_host_variable_declare("task_creation");
+  TRACE_host_variable_declare("task_computation");
+
+  // declaring user markers and values
+  TRACE_declare_mark("msmark");
+  TRACE_declare_mark_value("msmark", "start_send_tasks");
+  TRACE_declare_mark_value("msmark", "finish_send_tasks");
+
+  // declaring user categories with RGB colors (values from 0 to 1)
+  TRACE_category_with_color("compute", "1 0 0");  // compute is red
+  TRACE_category_with_color("finalize", "0 1 0"); // finalize is green
+  // categories without user-defined colors receive random colors generated by the tracing system
+  TRACE_category("request");
+  TRACE_category_with_color("report", NULL);
+
+  e.register_function("master", &master);
+  e.register_function("worker", &worker);
+  e.load_deployment(argv[2]);
+
+  e.run();
+
+  XBT_DEBUG("Simulation is over");
+
+  unsigned int cursor;
+  xbt_dynar_t categories = TRACE_get_categories();
+  if (categories) {
+    XBT_INFO("Declared tracing categories:");
+    char* category;
+    xbt_dynar_foreach (categories, cursor, category) {
+      XBT_INFO("%s", category);
+    }
+    xbt_dynar_free(&categories);
+  }
+
+  xbt_dynar_t marks = TRACE_get_marks();
+  if (marks) {
+    XBT_INFO("Declared marks:");
+    char* mark;
+    xbt_dynar_foreach (marks, cursor, mark) {
+      XBT_INFO("%s", mark);
+    }
+    xbt_dynar_free(&marks);
+  }
+
+  return 0;
+}
diff --git a/examples/s4u/trace-masterworkers/s4u-trace-masterworkers.tesh b/examples/s4u/trace-masterworkers/s4u-trace-masterworkers.tesh
new file mode 100644 (file)
index 0000000..a1b7c50
--- /dev/null
@@ -0,0 +1,48 @@
+#!/usr/bin/env tesh
+
+$ ${bindir:=.}/s4u-trace-masterworkers --cfg=tracing:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir:=.}/../app-masterworkers/s4u-app-masterworkers_d.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [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'
+> [4.214821] [s4u_trace_masterworker/INFO] Declared tracing categories:
+> [4.214821] [s4u_trace_masterworker/INFO] compute
+> [4.214821] [s4u_trace_masterworker/INFO] finalize
+> [4.214821] [s4u_trace_masterworker/INFO] report
+> [4.214821] [s4u_trace_masterworker/INFO] request
+> [4.214821] [s4u_trace_masterworker/INFO] Declared marks:
+> [4.214821] [s4u_trace_masterworker/INFO] msmark
+
+p Tracing master/worker application with xml config
+$ ${bindir:=.}/s4u-trace-masterworkers ${platfdir}/config_tracing.xml ${srcdir:=.}/../app-masterworkers/s4u-app-masterworkers_d.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'trace-masterworker.trace'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
+> [4.214821] [s4u_trace_masterworker/INFO] Declared tracing categories:
+> [4.214821] [s4u_trace_masterworker/INFO] compute
+> [4.214821] [s4u_trace_masterworker/INFO] finalize
+> [4.214821] [s4u_trace_masterworker/INFO] report
+> [4.214821] [s4u_trace_masterworker/INFO] request
+> [4.214821] [s4u_trace_masterworker/INFO] Declared marks:
+> [4.214821] [s4u_trace_masterworker/INFO] msmark
+
+p Not tracing master/worker application
+$ ${bindir:=.}/s4u-trace-masterworkers ${platfdir}/small_platform.xml ${srcdir:=.}/../app-masterworkers/s4u-app-masterworkers_d.xml
+
+p Testing tracing by process
+$ ${bindir:=.}/s4u-trace-masterworkers --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/filename:trace-masterworker.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes ${platfdir}/small_platform.xml ${srcdir:=.}/../app-masterworkers/s4u-app-masterworkers_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/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'
+> [4.214821] [s4u_trace_masterworker/INFO] Declared tracing categories:
+> [4.214821] [s4u_trace_masterworker/INFO] compute
+> [4.214821] [s4u_trace_masterworker/INFO] finalize
+> [4.214821] [s4u_trace_masterworker/INFO] report
+> [4.214821] [s4u_trace_masterworker/INFO] request
+> [4.214821] [s4u_trace_masterworker/INFO] Declared marks:
+> [4.214821] [s4u_trace_masterworker/INFO] msmark
+
+$ rm -f trace-masterworker.trace