Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Added files to the sendrecv example.
authorvelho <velho@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 16 Jul 2007 14:40:33 +0000 (14:40 +0000)
committervelho <velho@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 16 Jul 2007 14:40:33 +0000 (14:40 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3805 48e7efb5-ca39-0410-a469-dd3cf9ba447f

examples/msg/sendrecv/README [new file with mode: 0644]
examples/msg/sendrecv/deployment_sendrecv.xml [new file with mode: 0644]
examples/msg/sendrecv/platform_sendrecv.xml [new file with mode: 0644]
examples/msg/sendrecv/sendrecv.c [new file with mode: 0644]
examples/msg/sendrecv/sendrecv_KCCFLN05.tesh.in [new file with mode: 0644]
examples/msg/sendrecv/sendrecv_KCCFLN05_Reno.tesh.in [new file with mode: 0644]
examples/msg/sendrecv/sendrecv_KCCFLN05_Vegas.tesh.in [new file with mode: 0644]
examples/msg/sendrecv/sendrecv_KCCFLN05_proportional.tesh.in [new file with mode: 0644]

diff --git a/examples/msg/sendrecv/README b/examples/msg/sendrecv/README
new file mode 100644 (file)
index 0000000..5577d64
--- /dev/null
@@ -0,0 +1,22 @@
+====================================================
+           Send/Recv - Simple MSG Example
+====================================================
+Directory : SG_INSTALL_DIR/examples/msg/sendrecv
+Content   : Simple sendrecv msg example
+Author    : SimGrid Team
+====================================================
+
+
+This directory contains a simple send/recv example 
+using MSG. The platform file is composed by two 
+hosts called Imnos and Bellevue. Two process are 
+implemented in sendrecv.c : sender and receiver. 
+Sender process runs on "Imnos" host taking as 
+parameter the receiver hostname "Bellevue". Receiver 
+process runs on "Bellevue" listening to messages 
+from any host.
+
+
+
+
+
diff --git a/examples/msg/sendrecv/deployment_sendrecv.xml b/examples/msg/sendrecv/deployment_sendrecv.xml
new file mode 100644 (file)
index 0000000..a9c097b
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version='1.0'?>
+<!DOCTYPE platform_description SYSTEM "surfxml.dtd">
+<!-- For using with ping_pong, platform_sendrecv.xml -->
+<platform_description version="1">
+  <process host="Inmos" function="sender">
+       <argument value="Bellevue"/>
+  </process>
+  <process host="Bellevue" function="receiver"/>
+</platform_description>
diff --git a/examples/msg/sendrecv/platform_sendrecv.xml b/examples/msg/sendrecv/platform_sendrecv.xml
new file mode 100644 (file)
index 0000000..8bd9d5a
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version='1.0'?>
+<!DOCTYPE platform_description SYSTEM "surfxml.dtd">
+<platform_description version="1">
+  <!-- For using with ping_pong example, very simple platform -->
+  <cpu name="Inmos" power="98095000"/>
+  <cpu name="Bellevue" power="76296000"/>
+  <network_link name="link" bandwidth="1000000" latency="0.1"/>
+  <route src="Inmos" dst="Bellevue">
+    <route_element name="link"/>
+  </route>
+  <route src="Bellevue" dst="Inmos">
+    <route_element name="link"/>
+  </route>
+</platform_description>
diff --git a/examples/msg/sendrecv/sendrecv.c b/examples/msg/sendrecv/sendrecv.c
new file mode 100644 (file)
index 0000000..8325890
--- /dev/null
@@ -0,0 +1,181 @@
+/*     $Id$        */
+/* Copyright (c) 2002,2003,2004 Arnaud Legrand. 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"
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test,"Messages specific for this msg example");
+
+int sender(int argc, char *argv[]);
+int receiver(int argc, char *argv[]);
+
+MSG_error_t test_all(const char *platform_file, const char *application_file);
+
+typedef enum 
+  {
+    PORT_22 = 0,
+    MAX_CHANNEL
+  } channel_t;
+
+double task_comm_size_lat = 10e0;
+double task_comm_size_bw  = 10e8;
+
+/** Emitter function  */
+int sender(int argc,char *argv[] )
+{
+  m_host_t host = NULL; 
+  double time;
+  m_task_t task_la=NULL;
+  m_task_t task_bw=NULL;
+  char sprintf_buffer_la[64];
+  char sprintf_buffer_bw[64];
+
+  INFO0("sender");
+  host = calloc(1, sizeof(m_host_t));
+    
+  INFO1("host = %s", argv[1]);
+  
+  host = MSG_get_host_by_name(argv[1]);
+  
+  if(host==NULL){
+    INFO1("Unknown host %s. Stopping Now! ", argv[1]);
+    abort();
+  }
+
+  /* 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;
+  INFO1("task_la->data = %le", *((double *)task_la->data));
+  MSG_task_put(task_la, host,PORT_22);
+  
+  /* 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;
+  INFO1("task_bw->data = %le", *((double *)task_bw->data) ); 
+  MSG_task_put(task_bw, host,PORT_22);  
+
+  return 0;
+} /* end_of_client */
+
+/** Receiver function  */
+int receiver(int argc, char *argv[])
+{
+  double time, time1, sender_time;
+  m_task_t task_la = NULL;
+  m_task_t task_bw = NULL;
+  int a;
+  double communication_time=0;
+
+  INFO0("receiver");
+
+  time = MSG_get_clock();
+  
+  /* Get Latency */
+  a = MSG_task_get(&task_la,PORT_22);
+  if (a == MSG_OK) {
+    time1=MSG_get_clock();
+    sender_time= *((double*)(task_la->data));
+    time=sender_time;
+    communication_time=time1-time;
+    INFO1("Task received : %s", task_la->name);
+    MSG_task_destroy(task_la);
+    INFO1("Communic. time %le",communication_time);
+    INFO1("--- la %f ----",communication_time);
+  }else{
+    xbt_assert0(0,"Unexpected behavior");
+  }
+
+
+  /* Get Bandwidth */
+  a=MSG_task_get(&task_bw,PORT_22);
+  if (a == MSG_OK) {
+    time1=MSG_get_clock();
+    sender_time= *((double*)(task_bw->data));
+    time=sender_time;
+    communication_time=time1-time;
+    INFO1("Task received : %s", task_bw->name);
+    MSG_task_destroy(task_bw);
+    INFO1("Communic. time %le",communication_time);
+    INFO1("--- bw %f ----",task_comm_size_bw/communication_time);
+  }else{
+    xbt_assert0(0,"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;
+
+  INFO0("test_all"); 
+                       
+  /*  Simulation setting */
+  MSG_set_channel_number(MAX_CHANNEL);
+  MSG_paje_output("msg_test.trace");
+  MSG_create_environment(platform_file);
+  /*   Application deployment */
+  MSG_function_register("sender", sender);
+  MSG_function_register("receiver", receiver);
+   
+  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;
+
+  
+  MSG_global_init(&argc,argv);
+
+
+  if (argc != 4){
+     CRITICAL1 ("Usage: %s platform_file deployment_file <model>\n",argv[0]);
+     CRITICAL1 ("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("surf_workstation_model", argv[3]);
+
+  res = test_all(argv[1],argv[2]);
+
+  INFO1("Total simulation time: %le", MSG_get_clock());
+
+  MSG_clean();
+
+  if(res==MSG_OK) return 0; 
+  else return 1;
+} /* end_of_main */
diff --git a/examples/msg/sendrecv/sendrecv_KCCFLN05.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05.tesh.in
new file mode 100644 (file)
index 0000000..0e24664
--- /dev/null
@@ -0,0 +1,20 @@
+#! ./tesh
+
+p Testing the surf network maxmin fairness model
+
+$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05
+> [0.000000] [xbt_cfg/INFO] type in variable = 2
+> [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/sendrecv/sendrecv_KCCFLN05_Reno.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05_Reno.tesh.in
new file mode 100644 (file)
index 0000000..357b574
--- /dev/null
@@ -0,0 +1,23 @@
+#! ./tesh
+
+p Testing the surf network Reno fairness model using lagrangian approach
+
+$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05_Reno
+> [0.000000] [xbt_cfg/INFO] type in variable = 2
+> [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
+> [0.100000] [surf_lagrange/INFO] Checking KKT: sat = 9.782929e-03 mu = 9.999998e-09
+> [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 ----
+> [0.200100] [surf_lagrange/INFO] Checking KKT: sat = 9.782929e-03 mu = 9.999998e-09
+> [Bellevue:receiver:(2) 10000.199122] [msg_test/INFO] Task received : bandwidth task
+> [Bellevue:receiver:(2) 10000.199122] [msg_test/INFO] Communic. time 1.000010e+04
+> [Bellevue:receiver:(2) 10000.199122] [msg_test/INFO] --- bw 99999.009793 ----
+> [10000.199122] [msg_test/INFO] Total simulation time: 1.000020e+04
+
+
diff --git a/examples/msg/sendrecv/sendrecv_KCCFLN05_Vegas.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05_Vegas.tesh.in
new file mode 100644 (file)
index 0000000..bee1fc3
--- /dev/null
@@ -0,0 +1,23 @@
+#! ./tesh
+
+p Testing the surf network Vegas fairness model using lagrangian approach
+
+$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05_Vegas
+> [0.000000] [xbt_cfg/INFO] type in variable = 2
+> [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
+> [0.100000] [surf_lagrange/INFO] Checking KKT: sat = 1.272565e-02 mu = 9.999999e-07
+> [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 ----
+> [0.200100] [surf_lagrange/INFO] Checking KKT: sat = 1.272565e-02 mu = 9.999999e-07
+> [Bellevue:receiver:(2) 10000.198827] [msg_test/INFO] Task received : bandwidth task
+> [Bellevue:receiver:(2) 10000.198827] [msg_test/INFO] Communic. time 1.000010e+04
+> [Bellevue:receiver:(2) 10000.198827] [msg_test/INFO] --- bw 99999.012735 ----
+> [10000.198827] [msg_test/INFO] Total simulation time: 1.000020e+04
+
+
diff --git a/examples/msg/sendrecv/sendrecv_KCCFLN05_proportional.tesh.in b/examples/msg/sendrecv/sendrecv_KCCFLN05_proportional.tesh.in
new file mode 100644 (file)
index 0000000..67024e0
--- /dev/null
@@ -0,0 +1,20 @@
+#! ./tesh
+
+p Testing the surf network proportional fairness model using SDP approach
+
+$ sendrecv/sendrecv @srcdir@/sendrecv/platform_sendrecv.xml @srcdir@/sendrecv/deployment_sendrecv.xml KCCFLN05_proportional
+> [0.000000] [xbt_cfg/INFO] type in variable = 2
+> [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.100010] [msg_test/INFO] task_bw->data = 1.000100e-01
+> [Bellevue:receiver:(2) 0.100010] [msg_test/INFO] Task received : latency task
+> [Bellevue:receiver:(2) 0.100010] [msg_test/INFO] Communic. time 1.000100e-01
+> [Bellevue:receiver:(2) 0.100010] [msg_test/INFO] --- la 0.100010 ----
+> [Bellevue:receiver:(2) 1000.199945] [msg_test/INFO] Task received : bandwidth task
+> [Bellevue:receiver:(2) 1000.199945] [msg_test/INFO] Communic. time 1.000100e+03
+> [Bellevue:receiver:(2) 1000.199945] [msg_test/INFO] --- bw 999900.074576 ----
+> [1000.199945] [msg_test/INFO] Total simulation time: 1.000200e+03
+