Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Initial implementation of kadeploy look-alike
authorMaximiliano Geier <maximiliano.geier@loria.fr>
Fri, 28 Sep 2012 15:34:57 +0000 (17:34 +0200)
committerMaximiliano Geier <maximiliano.geier@loria.fr>
Wed, 28 Nov 2012 10:49:25 +0000 (11:49 +0100)
Used sendrecv as skeleton
Implemented a random iterator for xbt_dynar_t, which still segfaults

buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/MakeExe.cmake
examples/msg/kadeploy/CMakeLists.txt [new file with mode: 0644]
examples/msg/kadeploy/README [new file with mode: 0644]
examples/msg/kadeploy/deployment_kadeploy.xml [new file with mode: 0644]
examples/msg/kadeploy/kadeploy.c [new file with mode: 0644]
examples/msg/kadeploy/kadeploy_CLM03.tesh [new file with mode: 0644]
examples/msg/kadeploy/kadeploy_KCCFLN05.tesh [new file with mode: 0644]
examples/msg/kadeploy/kadeploy_Reno.tesh [new file with mode: 0644]
examples/msg/kadeploy/kadeploy_Vegas.tesh [new file with mode: 0644]
examples/msg/kadeploy/platform_kadeploy.xml [new file with mode: 0644]

index 51a92cf..eb923dd 100644 (file)
@@ -671,6 +671,7 @@ set(EXAMPLES_CMAKEFILES_TXT
   examples/msg/priority/CMakeLists.txt
   examples/msg/properties/CMakeLists.txt
   examples/msg/sendrecv/CMakeLists.txt
   examples/msg/priority/CMakeLists.txt
   examples/msg/properties/CMakeLists.txt
   examples/msg/sendrecv/CMakeLists.txt
+  examples/msg/kadeploy/CMakeLists.txt
   examples/msg/start_kill_time/CMakeLists.txt
   examples/msg/suspend/CMakeLists.txt
   examples/msg/token_ring/CMakeLists.txt
   examples/msg/start_kill_time/CMakeLists.txt
   examples/msg/suspend/CMakeLists.txt
   examples/msg/token_ring/CMakeLists.txt
index 8c1c4f7..6fc76d4 100644 (file)
@@ -35,6 +35,7 @@ add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/properties)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/actions)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/migration)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/actions)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/migration)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/kadeploy)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/suspend)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/parallel_task)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/priority)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/suspend)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/parallel_task)
 add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/msg/priority)
diff --git a/examples/msg/kadeploy/CMakeLists.txt b/examples/msg/kadeploy/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c3f9e4f
--- /dev/null
@@ -0,0 +1,37 @@
+cmake_minimum_required(VERSION 2.6)
+
+set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+
+add_executable(kadeploy kadeploy.c)
+
+### Add definitions for compile
+target_link_libraries(kadeploy simgrid m )
+
+set(tesh_files
+  ${tesh_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/kadeploy_CLM03.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/kadeploy_KCCFLN05.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/kadeploy_Reno.tesh
+  ${CMAKE_CURRENT_SOURCE_DIR}/kadeploy_Vegas.tesh
+  PARENT_SCOPE
+  )
+set(xml_files
+  ${xml_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/deployment_kadeploy.xml
+  ${CMAKE_CURRENT_SOURCE_DIR}/platform_kadeploy.xml
+  PARENT_SCOPE
+  )
+set(examples_src
+  ${examples_src}
+  ${CMAKE_CURRENT_SOURCE_DIR}/kadeploy.c
+  PARENT_SCOPE
+  )
+set(bin_files
+  ${bin_files}
+  PARENT_SCOPE
+  )
+set(txt_files
+  ${txt_files}
+  ${CMAKE_CURRENT_SOURCE_DIR}/README
+  PARENT_SCOPE
+  )
diff --git a/examples/msg/kadeploy/README b/examples/msg/kadeploy/README
new file mode 100644 (file)
index 0000000..ba36b08
--- /dev/null
@@ -0,0 +1,12 @@
+====================================================
+           Kadeploy MSG implementation
+====================================================
+Directory : SG_INSTALL_DIR/examples/msg/kadeploy
+Content   : Kadeploy MSG implementation
+Author    : Maximiliano Geier
+====================================================
+
+
+This directory contains an implementation of a
+file broadcasting system, similar to the one found
+in Kadeploy, using MSG. 
diff --git a/examples/msg/kadeploy/deployment_kadeploy.xml b/examples/msg/kadeploy/deployment_kadeploy.xml
new file mode 100644 (file)
index 0000000..a235bf9
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3"><!-- For using with kadeploy, platform_kadeploy.xml -->
+
+  <process host="Inmos" function="broadcaster">
+       <argument value="Bellevue"/>
+       <argument value="Test"/>
+  </process>
+  <process host="Bellevue" function="peer"/>
+</platform>
diff --git a/examples/msg/kadeploy/kadeploy.c b/examples/msg/kadeploy/kadeploy.c
new file mode 100644 (file)
index 0000000..4b27de3
--- /dev/null
@@ -0,0 +1,325 @@
+/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team.
+ * Copyright (c) 2012. Maximiliano Geier.
+ * 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<stdio.h>
+
+#include "msg/msg.h"            /* Yeah! If you want to use msg, you need to include msg/msg.h */
+#include "xbt/sysdep.h"         /* calloc */
+
+/* Create a log channel to have nice outputs. */
+#include "xbt/log.h"
+#include "xbt/asserts.h"
+
+/** @addtogroup MSG_examples
+ * 
+ *  - <b>kadeploy/kadeploy.c: Kadeploy implementation</b>.
+ */
+
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(msg_kadeploy,
+                             "Messages specific for kadeploy");
+
+/*
+ Data structures
+ */
+
+/* Random iterator for xbt_dynar */
+typedef struct xbt_dynar_iterator_struct {
+  xbt_dynar_t list;
+  xbt_dynar_t indices_list;
+  unsigned int current;
+  unsigned long length;
+  unsigned int (*criteria_fn)(void* it);
+} *xbt_dynar_iterator_t;
+typedef struct xbt_dynar_iterator_struct xbt_dynar_iterator_s;
+
+
+xbt_dynar_iterator_t xbt_dynar_iterator_new(xbt_dynar_t list, unsigned int (*criteria_fn)(void*));
+void *xbt_dynar_iterator_next(xbt_dynar_iterator_t it);
+void xbt_dynar_iterator_delete(xbt_dynar_iterator_t it);
+unsigned int xbt_dynar_iterator_forward_criteria(void *p);
+
+int broadcaster(int argc, char *argv[]);
+int peer(int argc, char *argv[]);
+
+void check_hosts(const int count, char **list);
+xbt_dynar_t build_hostlist_from_argv(int argc, char *argv[]);
+void build_chain(xbt_dynar_t host_list);
+
+int peer_wait_for_init();
+
+msg_error_t test_all(const char *platform_file,
+                     const char *application_file);
+
+double task_comm_size_lat = 10e0;
+double task_comm_size_bw = 10e8;
+
+/* Allocates and initializes a new xbt_dynar iterator for list, using criteria_fn as iteration criteria
+   criteria_fn: given an iterator, it must update the iterator and give the next element's index, 
+   less than 0 otherwise*/
+xbt_dynar_iterator_t xbt_dynar_iterator_new(xbt_dynar_t list, unsigned int (*criteria_fn)(void*))
+{
+  xbt_dynar_iterator_t it = xbt_new(xbt_dynar_iterator_s, 1);
+  
+  it->list = list;
+  it->length = xbt_dynar_length(list);
+  it->indices_list = xbt_dynar_new(sizeof(unsigned int), NULL);
+  it->criteria_fn = criteria_fn;
+  it->current = -1;
+}
+
+/* Returns the next element iterated by iterator it, NULL if there are no more elements */
+void *xbt_dynar_iterator_next(xbt_dynar_iterator_t it)
+{
+  unsigned int next = it->criteria_fn((xbt_dynar_iterator_t)it);
+  XBT_INFO("%d current\n", next);
+  if (next < 0)
+    return NULL;
+  else {
+    xbt_dynar_push(it->indices_list, &next);
+    return xbt_dynar_get_ptr(it->list, next);
+  }
+}
+
+void xbt_dynar_iterator_delete(xbt_dynar_iterator_t it)
+{
+  xbt_dynar_free_container(&(it->indices_list));
+  xbt_free_ref(&it);
+}
+
+unsigned int xbt_dynar_iterator_forward_criteria(void *p)
+{
+  xbt_dynar_iterator_t it = (xbt_dynar_iterator_t)p;
+  unsigned int r = -1;
+  if (it->current == -1) {
+    /* iterator initialization */
+    it->current = 0;
+  }
+  if (it->current < it->length) {
+    r = it->current;
+    it->current++;
+  }
+
+  return r;
+}
+
+xbt_dynar_t build_hostlist_from_argv(int argc, char *argv[])
+{
+  xbt_dynar_t host_list = xbt_dynar_new(sizeof(char*), NULL);
+  msg_host_t h = NULL;
+  int i = 1;
+  
+  for (; i < argc; i++) {
+    XBT_INFO("host%d = %s", i, argv[i]);
+    h = MSG_get_host_by_name(argv[i]);
+    if (h == NULL) {
+      XBT_INFO("Unknown host %s. Stopping Now! ", argv[i]);
+      abort();
+    } else {
+      xbt_dynar_push(host_list, &(argv[i]));
+    }
+  }
+  return host_list;
+}
+
+void delete_hostlist(xbt_dynar_t h)
+{
+  xbt_dynar_free_container(&h);
+}
+
+void build_chain(xbt_dynar_t host_list)
+{
+  xbt_dynar_iterator_t it = xbt_dynar_iterator_new(host_list, xbt_dynar_iterator_forward_criteria);
+  char **cur = NULL;
+
+  for (cur = (char**)xbt_dynar_iterator_next(it); cur != NULL; cur = (char**)xbt_dynar_iterator_next(it)) {
+    XBT_INFO("iterating host = %s", *cur);
+  }
+}
+
+/*void setup_chain_criteria(chain_criteria_t c, char *(*fn)(void))
+{
+  
+}
+
+void build_chain(const int hostcount, char **hostlist)
+{
+  int i;
+  for (i = 0; i < hostcount; i++) {
+    
+  }
+}*/
+
+/** Emitter function  */
+int broadcaster(int argc, char *argv[])
+{
+  double time;
+  xbt_dynar_t host_list = NULL;
+  msg_task_t task_la = NULL;
+  msg_task_t task_bw = NULL;
+  char sprintf_buffer_la[64];
+  char sprintf_buffer_bw[64];
+
+  XBT_INFO("broadcaster");
+
+  /* Check that every host in the command line actually exists and add it to a dynamic array */
+  host_list = build_hostlist_from_argv(argc, argv);
+  
+  build_chain(host_list);
+
+  /* Latency */
+  /*time = MSG_get_clock();
+  sprintf(sprintf_buffer_la, "latency task");
+  task_la =
+      MSG_task_create(sprintf_buffer_la, 0.0, task_comm_size_lat, NULL);
+  task_la->data = xbt_new(double, 1);
+  *(double *) task_la->data = time;
+  XBT_INFO("task_la->data = %le", *((double *) task_la->data));
+  MSG_task_send(task_la, argv[1]);*/
+
+  /* Bandwidth */
+  /*time = MSG_get_clock();
+  sprintf(sprintf_buffer_bw, "bandwidth task");
+  task_bw =
+      MSG_task_create(sprintf_buffer_bw, 0.0, task_comm_size_bw, NULL);
+  task_bw->data = xbt_new(double, 1);
+  *(double *) task_bw->data = time;
+  XBT_INFO("task_bw->data = %le", *((double *) task_bw->data));
+  MSG_task_send(task_bw, argv[1]);
+  */
+  return 0;
+}                               /* end_of_client */
+
+int peer_wait_for_init()
+{
+  return MSG_OK;
+}
+
+/** Peer function  */
+int peer(int argc, char *argv[])
+{
+  double time, time1, sender_time;
+  msg_task_t task_la = NULL;
+  msg_task_t task_bw = NULL;
+  int a;
+  double communication_time = 0;
+
+  XBT_INFO("peer");
+
+  time = MSG_get_clock();
+
+  a = peer_wait_for_init();
+  /* Get Latency */
+  /*a = MSG_task_receive(&task_la,MSG_host_get_name(MSG_host_self()));
+  if (a == MSG_OK) {
+    time1 = MSG_get_clock();
+    sender_time = *((double *) (task_la->data));
+    time = sender_time;
+    communication_time = time1 - time;
+    XBT_INFO("Task received : %s", task_la->name);
+    xbt_free(task_la->data);
+    MSG_task_destroy(task_la);
+    XBT_INFO("Communic. time %le", communication_time);
+    XBT_INFO("--- la %f ----", communication_time);
+  } else {
+    xbt_die("Unexpected behavior");
+  }*/
+
+
+  /* Get Bandwidth */
+  /*a = MSG_task_receive(&task_bw,MSG_host_get_name(MSG_host_self()));
+  if (a == MSG_OK) {
+    time1 = MSG_get_clock();
+    sender_time = *((double *) (task_bw->data));
+    time = sender_time;
+    communication_time = time1 - time;
+    XBT_INFO("Task received : %s", task_bw->name);
+    xbt_free(task_bw->data);
+    MSG_task_destroy(task_bw);
+    XBT_INFO("Communic. time %le", communication_time);
+    XBT_INFO("--- bw %f ----", task_comm_size_bw / communication_time);
+  } else {
+    xbt_die("Unexpected behavior");
+  }*/
+
+
+  return 0;
+}                               /* end_of_receiver */
+
+
+/** Test function */
+msg_error_t test_all(const char *platform_file,
+                     const char *application_file)
+{
+
+  msg_error_t res = MSG_OK;
+
+
+
+  XBT_INFO("test_all");
+
+  /*  Simulation setting */
+  MSG_create_environment(platform_file);
+
+  /*   Application deployment */
+  MSG_function_register("broadcaster", broadcaster);
+  MSG_function_register("peer", peer);
+
+  MSG_launch_application(application_file);
+
+  res = MSG_main();
+
+  return res;
+}                               /* end_of_test_all */
+
+
+/** Main function */
+int main(int argc, char *argv[])
+{
+  msg_error_t res = MSG_OK;
+
+#ifdef _MSC_VER
+  unsigned int prev_exponent_format =
+      _set_output_format(_TWO_DIGIT_EXPONENT);
+#endif
+
+  MSG_init(&argc, argv);
+
+
+  if (argc != 3) {
+    XBT_CRITICAL("Usage: %s platform_file deployment_file <model>\n",
+              argv[0]);
+    XBT_CRITICAL
+        ("example: %s msg_platform.xml msg_deployment.xml KCCFLN05_Vegas\n",
+         argv[0]);
+    exit(1);
+  }
+
+  /* Options for the workstation/model:
+
+     KCCFLN05              => for maxmin
+     KCCFLN05_proportional => for proportional (Vegas)
+     KCCFLN05_Vegas        => for TCP Vegas
+     KCCFLN05_Reno         => for TCP Reno
+   */
+  //MSG_config("workstation/model", argv[3]);
+
+  res = test_all(argv[1], argv[2]);
+
+  XBT_INFO("Total simulation time: %le", MSG_get_clock());
+
+  MSG_clean();
+
+#ifdef _MSC_VER
+  _set_output_format(prev_exponent_format);
+#endif
+
+  if (res == MSG_OK)
+    return 0;
+  else
+    return 1;
+}                               /* end_of_main */
diff --git a/examples/msg/kadeploy/kadeploy_CLM03.tesh b/examples/msg/kadeploy/kadeploy_CLM03.tesh
new file mode 100644 (file)
index 0000000..a5832ef
--- /dev/null
@@ -0,0 +1,22 @@
+#! ./tesh
+
+p Testing the deprecated CM02 network model
+
+! output sort
+$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+>  [  0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [  0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
+> [  0.000000] (0:@) test_all
+> [  0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [  0.000000] (1:sender@Inmos) sender
+> [  0.000000] (1:sender@Inmos) host = Bellevue
+> [  0.000000] (1:sender@Inmos) task_la->data = 0.000000e+00
+> [  0.000000] (2:receiver@Bellevue) receiver
+> [  0.100100] (1:sender@Inmos) task_bw->data = 1.001000e-01
+> [  0.100100] (2:receiver@Bellevue) Task received : latency task
+> [  0.100100] (2:receiver@Bellevue) Communic. time 1.001000e-01
+> [  0.100100] (2:receiver@Bellevue) --- la 0.100100 ----
+> [10000.200100] (0:@) Total simulation time: 1.000020e+04
+> [10000.200100] (2:receiver@Bellevue) Task received : bandwidth task
+> [10000.200100] (2:receiver@Bellevue) Communic. time 1.000010e+04
+> [10000.200100] (2:receiver@Bellevue) --- bw 99999.000010 ----
\ No newline at end of file
diff --git a/examples/msg/kadeploy/kadeploy_KCCFLN05.tesh b/examples/msg/kadeploy/kadeploy_KCCFLN05.tesh
new file mode 100644 (file)
index 0000000..2355d9c
--- /dev/null
@@ -0,0 +1,18 @@
+#! ./tesh
+
+p Testing the surf network maxmin fairness model
+
+$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml
+> [0.000000] [msg_test/INFO] test_all
+> [Inmos:sender:(1) 0.000000] [msg_test/INFO] sender
+> [Inmos:sender:(1) 0.000000] [msg_test/INFO] host = Bellevue
+> [Inmos:sender:(1) 0.000000] [msg_test/INFO] task_la->data = 0.000000e+00
+> [Bellevue:receiver:(2) 0.000000] [msg_test/INFO] receiver
+> [Inmos:sender:(1) 0.100100] [msg_test/INFO] task_bw->data = 1.001000e-01
+> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Task received : latency task
+> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] Communic. time 1.001000e-01
+> [Bellevue:receiver:(2) 0.100100] [msg_test/INFO] --- la 0.100100 ----
+> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] Task received : bandwidth task
+> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] Communic. time 1.000010e+04
+> [Bellevue:receiver:(2) 10000.200100] [msg_test/INFO] --- bw 99999.000010 ----
+> [10000.200100] [msg_test/INFO] Total simulation time: 1.000020e+04
diff --git a/examples/msg/kadeploy/kadeploy_Reno.tesh b/examples/msg/kadeploy/kadeploy_Reno.tesh
new file mode 100644 (file)
index 0000000..e4eb2bb
--- /dev/null
@@ -0,0 +1,22 @@
+#! ./tesh
+
+p Testing the surf network Reno fairness model using lagrangian approach
+
+! output sort
+$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=workstation/model:compound cpu/model:Cas01 network/model:Reno" --log=surf_lagrange.thres=critical "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [  0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [  0.000000] (0:@) Configuration change: Set 'network/model' to 'Reno'
+> [  0.000000] (0:@) test_all
+> [  0.000000] (1:sender@Inmos) sender
+> [  0.000000] (1:sender@Inmos) host = Bellevue
+> [  0.000000] (1:sender@Inmos) task_la->data = 0.000000e+00
+> [  0.000000] (2:receiver@Bellevue) receiver
+> [  1.040100] (1:sender@Inmos) task_bw->data = 1.040100e+00
+> [  1.040100] (2:receiver@Bellevue) Task received : latency task
+> [  1.040100] (2:receiver@Bellevue) Communic. time 1.040100e+00
+> [  1.040100] (2:receiver@Bellevue) --- la 1.040100 ----
+> [10002.080100] (0:@) Total simulation time: 1.000208e+04
+> [10002.080100] (2:receiver@Bellevue) Task received : bandwidth task
+> [10002.080100] (2:receiver@Bellevue) Communic. time 1.000104e+04
+> [10002.080100] (2:receiver@Bellevue) --- bw 99989.601081 ----
diff --git a/examples/msg/kadeploy/kadeploy_Vegas.tesh b/examples/msg/kadeploy/kadeploy_Vegas.tesh
new file mode 100644 (file)
index 0000000..b742fa4
--- /dev/null
@@ -0,0 +1,22 @@
+#! ./tesh
+
+p Testing the surf network Vegas fairness model using lagrangian approach
+
+! output sort
+$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml "--cfg=workstation/model:compound cpu/model:Cas01 network/model:Vegas" "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [  0.000000] (0:@) Configuration change: Set 'workstation/model' to 'compound'
+> [  0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [  0.000000] (0:@) Configuration change: Set 'network/model' to 'Vegas'
+> [  0.000000] (0:@) test_all
+> [  0.000000] (1:sender@Inmos) sender
+> [  0.000000] (1:sender@Inmos) host = Bellevue
+> [  0.000000] (1:sender@Inmos) task_la->data = 0.000000e+00
+> [  0.000000] (2:receiver@Bellevue) receiver
+> [  1.040100] (1:sender@Inmos) task_bw->data = 1.040100e+00
+> [  1.040100] (2:receiver@Bellevue) Task received : latency task
+> [  1.040100] (2:receiver@Bellevue) Communic. time 1.040100e+00
+> [  1.040100] (2:receiver@Bellevue) --- la 1.040100 ----
+> [10002.080100] (0:@) Total simulation time: 1.000208e+04
+> [10002.080100] (2:receiver@Bellevue) Task received : bandwidth task
+> [10002.080100] (2:receiver@Bellevue) Communic. time 1.000104e+04
+> [10002.080100] (2:receiver@Bellevue) --- bw 99989.601081 ----
diff --git a/examples/msg/kadeploy/platform_kadeploy.xml b/examples/msg/kadeploy/platform_kadeploy.xml
new file mode 100644 (file)
index 0000000..5aa7bdc
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version='1.0'?>
+ <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+ <platform version="3">
+ <AS  id="AS0"  routing="Full">
+   <!-- For using with ping_pong example, very simple platform -->
+   <host id="Inmos" power="98095000"/>
+   <host id="Bellevue" power="76296000"/>
+   <host id="Test" power="96296000"/>
+   <link id="link1" bandwidth="1000000" latency="0.1"/>
+   <link id="link2" bandwidth="1000000" latency="0.2"/>
+   <route src="Inmos" dst="Bellevue">
+     <link_ctn id="link1"/>
+   </route>
+   <route src="Test" dst="Bellevue">
+     <link_ctn id="link2"/>
+   </route>
+ </AS>
+ </platform>