From: velho Date: Tue, 25 Nov 2008 16:18:36 +0000 (+0000) Subject: Gtnets file that cope with previous Kayo Fujiwara experiments. The bandwidth share... X-Git-Tag: v3.3~76 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5291c7914252e918b75c44d8195ce1c3a871e4f1 Gtnets file that cope with previous Kayo Fujiwara experiments. The bandwidth share is the overall bandwidth share, don't use communication remaining to compute bandwidth share. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6103 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/msg/Makefile.am b/examples/msg/Makefile.am index 9e90778ec1..b95deda8db 100644 --- a/examples/msg/Makefile.am +++ b/examples/msg/Makefile.am @@ -66,7 +66,7 @@ CLEANFILES = sendrecv/*~ \ properties/msg_prop if HAVE_GTNETS - CLEANFILES += gtnets/gtnets + CLEANFILES += gtnets/gtnets gtnets/gtnets_kayo endif @@ -83,7 +83,7 @@ noinst_PROGRAMS = sendrecv/sendrecv \ properties/msg_prop if HAVE_GTNETS - noinst_PROGRAMS += gtnets/gtnets + noinst_PROGRAMS += gtnets/gtnets gtnets/gtnets_kayo endif @@ -124,10 +124,12 @@ masterslave_masterslave_bypass_LDADD = $(top_builddir)/src/libsimgrid.la # verify if the GTNETS feature is working if HAVE_GTNETS -gtnets_gtnets_SOURCES = gtnets/gtnets.c +gtnets_gtnets_SOURCES = gtnets/gtnets.c +gtnets_gtnets_kayo_SOURCES = gtnets/gtnets_kayo.c gtnets_gtnets_LDADD = $(top_builddir)/src/libsimgrid.la +gtnets_gtnets_kayo_LDADD = $(top_builddir)/src/libsimgrid.la else - EXTRA_DIST+= gtnets/gtnets.c + EXTRA_DIST+= gtnets/gtnets.c gtnets/gtnets_kayo.c endif EXTRA_DIST+=$(TESTS) diff --git a/examples/msg/gtnets/gtnets_kayo.c b/examples/msg/gtnets/gtnets_kayo.c new file mode 100644 index 0000000000..9bb9f39445 --- /dev/null +++ b/examples/msg/gtnets/gtnets_kayo.c @@ -0,0 +1,129 @@ +#include +#include +#include "msg/msg.h" +#include "xbt/log.h" +#include "xbt/asserts.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test,"Messages specific for this msg example"); + +int master(int argc, char *argv[]); +int slave(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; + +//keep a pointer to all surf running tasks. +#define NTASKS 1500 +int bool_printed=0; +double start_time, end_time, elapsed_time; +double gl_data_size[NTASKS]; +m_task_t gl_task_array[NTASKS]; +const char * slavenames[NTASKS]; +const char * masternames[NTASKS]; +int gl_task_array_id=0; + +#define FINALIZE ((void*)221297) /* a magic number to tell people to stop working */ + +/** master */ +int master(int argc, char *argv[]) +{ + char *slavename = NULL; + double task_comm_size = 0; + m_task_t todo; + m_host_t slave; + char id_alias[10]; + //unique id to control statistics + int id = -1; + + if(argc != 4){ + INFO1("Strange number of arguments expected 3 got %d", argc-1 ); + } + + /* data size */ + xbt_assert1(sscanf(argv[1],"%lg", &task_comm_size), + "Invalid argument %s\n", argv[1]); + + /* slave name */ + slavename = argv[2]; + id = atoi(argv[3]); + sprintf(id_alias, "%d",id); + slavenames[id] = slavename; + + masternames[id] = MSG_host_get_name(MSG_host_self()); + + { /* Task creation. */ + char sprintf_buffer[64] = "Task_0"; + todo = MSG_task_create(sprintf_buffer, 0, task_comm_size, NULL); + //keep track of running tasks + gl_task_array[id] = todo; + gl_data_size[id]=task_comm_size; + } + + { /* Process organisation */ + slave = MSG_get_host_by_name(slavename); + } + + /* time measurement */ + start_time = MSG_get_clock(); + MSG_task_send(todo, id_alias); + end_time = MSG_get_clock(); + + INFO5("===> Estimated Bw of FLOW[%d] : %f ; message from %s to %s with remaining : %f", id+1, task_comm_size/(end_time-start_time), masternames[id], slavenames[id], 0.0); + + + return 0; +} /* end_of_master */ + +/** Receiver function */ +int slave(int argc, char *argv[]) +{ + + m_task_t task = NULL; + int a; + int id=0; + char id_alias[10]; + + if(argc != 2){ + INFO1("Strange number of arguments expected 1 got %d", argc-1 ); + } + id = atoi(argv[1]); + sprintf(id_alias, "%d",id); + + a = MSG_task_receive(&(task), id_alias ); + return 0; +} /* end_of_slave */ + +/** Test function */ +MSG_error_t test_all(const char *platform_file, + const char *application_file){ + MSG_error_t res = MSG_OK; + MSG_set_channel_number(MAX_CHANNEL); + MSG_create_environment(platform_file); + MSG_function_register("master", master); + MSG_function_register("slave", slave); + 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; + bool_printed = 0; + + MSG_global_init(&argc,argv); + if (argc < 3) { + printf ("Usage: %s platform_file deployment_file\n",argv[0]); + exit(1); + } + res = test_all(argv[1],argv[2]); + + MSG_clean(); + + if(res==MSG_OK) return 0; + else return 1; +} /* end_of_main */