From: cristianrosa Date: Fri, 28 Jan 2011 14:48:18 +0000 (+0000) Subject: Add example pcontexts2 (parallel independent master/slave processes). X-Git-Tag: v3.6_beta2~407 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/cedff8d970304fe22e5ab6d359c47160ec82fdb3 Add example pcontexts2 (parallel independent master/slave processes). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9522 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/msg/parallel_contexts/CMakeLists.txt b/examples/msg/parallel_contexts/CMakeLists.txt index b66dfb4a23..be6a21f264 100644 --- a/examples/msg/parallel_contexts/CMakeLists.txt +++ b/examples/msg/parallel_contexts/CMakeLists.txt @@ -3,10 +3,13 @@ cmake_minimum_required(VERSION 2.6) set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}") add_executable(pcontexts "pcontexts.c") +add_executable(pcontexts2 "pcontexts2.c") ### Add definitions for compile if(WIN32) target_link_libraries(pcontexts simgrid ) +target_link_libraries(pcontexts2 simgrid ) else(WIN32) target_link_libraries(pcontexts simgrid m ) +target_link_libraries(pcontexts2 simgrid m ) endif(WIN32) diff --git a/examples/msg/parallel_contexts/deployment_pcontexts2_4.xml b/examples/msg/parallel_contexts/deployment_pcontexts2_4.xml new file mode 100644 index 0000000000..fc6b97b120 --- /dev/null +++ b/examples/msg/parallel_contexts/deployment_pcontexts2_4.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/examples/msg/parallel_contexts/pcontexts2.c b/examples/msg/parallel_contexts/pcontexts2.c new file mode 100644 index 0000000000..565ccd9002 --- /dev/null +++ b/examples/msg/parallel_contexts/pcontexts2.c @@ -0,0 +1,96 @@ +#include +/* Create a log channel to have nice outputs. */ +#include "xbt/log.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, + "Messages specific for this msg example"); +#define MAX_ITER 1 +#define WORK 0 + +int master(int argc, char **argv); +int slave(int argc, char **argv); + +MSG_error_t test_all(const char *, const char *); +int main(int argc, char *argv[]); + +int master(int argc, char** argv) +{ + int i,j, id; + m_task_t task; + char mailbox[80]; + + sscanf(argv[1], "%d", &id); + sprintf(mailbox, "slave-%d", id); + + for(i=0; i < MAX_ITER; i++){ + task = MSG_task_create("test", 100000000, 1, NULL); + + for(j=0; j < WORK; j++); + + MSG_task_send(task, mailbox); + INFO1("Task sent to %s", mailbox); + } + + return 0; +} + +int slave(int argc, char **argv) +{ + int i, id; + m_task_t task; + char mailbox[80]; + + sscanf(argv[1], "%d", &id); + sprintf(mailbox, "slave-%d", id); + + for(i=0; i < MAX_ITER; i++){ + MSG_task_receive(&task, mailbox); + INFO1("Task received to %s", mailbox); + MSG_task_destroy(task); + } + + return 0; +} + +/** Test function */ +MSG_error_t test_all(const char *platform_file, + const char *application_file) +{ + MSG_error_t res = MSG_OK; + + /* MSG_config("workstation/model","KCCFLN05"); */ + { /* Simulation setting */ + MSG_set_channel_number(0); + MSG_create_environment(platform_file); + } + { /* Application deployment */ + MSG_function_register("master", master); + MSG_function_register("slave", slave); + MSG_launch_application(application_file); + } + res = MSG_main(); + + INFO1("Simulation time %g", MSG_get_clock()); + 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 < 3) { + printf("Usage: %s platform_file deployment_file\n", argv[0]); + printf("example: %s msg_platform.xml msg_deployment.xml\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 */