1 /** \defgroup MSG_JAVA jMSG
3 \brief Java bindings to MSG (\ref MSG_API)
6 DOXYGEN_NAVBAR_LABEL="JAVA bindings"
7 DOXYGEN_NAVBAR_CHILD "Simulation functions"=classsimgrid_1_1msg_1_1Msg.html
8 DOXYGEN_NAVBAR_CHILD "Host"=classsimgrid_1_1msg_1_1Host.html
9 DOXYGEN_NAVBAR_CHILD "Process"=classsimgrid_1_1msg_1_1Process.html
10 DOXYGEN_NAVBAR_CHILD "Task"=classsimgrid_1_1msg_1_1Task.html
11 DOXYGEN_NAVBAR_CHILD "MsgException"=classsimgrid_1_1msg_1_1MsgException.html
14 MSG was the first distributed programming environment provided within
15 SimGrid. While almost realistic, it remains quite simple (simplistic?).
16 This describes the Java bindings to this interface.
18 \section jMSG_who Who should use this (and who shouldn't)
20 You should use MSG if you want to study some heuristics for a
21 given problem you don't really want to implement. If you want to
22 use the Java programming language, your are in the right
23 section. To use the C interface, please refer to \ref MSG_C.
26 /** \defgroup MSG_C MSG native
28 \brief Native interface to MSG (\ref MSG_API)
30 \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Native interface" --> \endhtmlonly
32 MSG was the first distributed programming environment provided within
33 SimGrid. While almost realistic, it remains quite simple (simplistic?).
34 This describes the native to MSG.
36 \section jMSG_who Who should use this (and who shouldn't)
38 You should use MSG if you want to study some heuristics for a
39 given problem you don't really want to implement. If you want to
40 use the C programming language, your are in the right
41 section. To use the Java programming interface, please refer to
48 \defgroup MSG_LUA lMSG
50 \brief Lua bindings to MSG (\ref MSG_API)
53 DOXYGEN_NAVBAR_LABEL="LUA bindings"
56 MSG was the first distributed programming environment provided within
57 SimGrid. While almost realistic, it remains quite simple (simplistic?).
58 This describes the Lua bindings to this interface.
60 \section lMSG_who Who should use this (and who shouldn't)
62 You should use MSG if you want to study some heuristics for a
63 given problem you don't really want to implement. If you want to
64 use the Lua script language, your are in the right
65 section. To use the C interface, please refer to \ref MSG_C.
71 \section MSG_funct Offered functionnalities
72 - \ref m_process_management
73 - \ref m_datatypes_management
74 - \ref m_host_management
75 - \ref m_task_management
76 - \ref msg_gos_functions
77 - \ref m_channel_management
78 - \ref msg_easier_life
81 \section MSG_examples Examples of MSG
83 - \ref MSG_ex_master_slave
84 - \ref MSG_ex_asynchronous_communications
85 - \ref MSG_ex_master_slave_scrip_lua
88 /** @addtogroup MSG_LUA
90 \section MSG_Lua_funct Lua offered functionnalities in MSG
91 - \ref host_management
92 - \ref tasks_management
93 - \ref environment_management
94 \section Lua_examples Examples of lua MSG
96 - \ref MSG_ex_master_slave_lua
97 - \ref MSG_ex_master_slave_lua_bypass
101 /** @defgroup m_datatypes_management MSG Data Types
103 @brief This section describes the different datatypes provided by MSG.
105 \htmlonly <!-- DOXYGEN_NAVBAR_LABEL="Data types" --> \endhtmlonly
107 /** \addtogroup m_process_management
109 /** \addtogroup m_host_management
111 /** \addtogroup m_task_management
113 /** \addtogroup msg_gos_functions
115 /** \addtogroup m_channel_management
117 /** \addtogroup msg_easier_life
119 /** \addtogroup msg_simulation
123 /** \page MSG_ex_asynchronous_communications Asynchronous communication applications
125 Simulation of asynchronous communications between a sender and a receiver using a realistic platform and
126 an external description of the deployment.
128 \section MSG_ex_ms_TOC Table of contents:
129 - \ref MSG_ext_icomms_code
130 - \ref MSG_ext_icomms_preliminary
131 - \ref MSG_ext_icomms_Sender
132 - \ref MSG_ext_icomms_Receiver
133 - \ref MSG_ext_icomms_core
134 - \ref MSG_ext_icomms_Main
135 - \ref MSG_ext_icomms_fct
139 \dontinclude msg/icomms/peer.c
141 \section MSG_ext_icomms_code Code of the application
143 \subsection MSG_ext_icomms_preliminary Preliminary declarations
145 \until Sender function
147 \subsection MSG_ext_icomms_Sender Sender function
149 The sender send to a receiver an asynchronous message with the function "MSG_task_isend()". Cause this function is non-blocking
150 we have to make "MSG_comm_test()" to know if the communication is finished for finally destroy it with function "MSG_comm_destroy()".
151 It also available to "make MSG_comm_wait()" which make both of them.
153 C style arguments (argc/argv) are interpreted as:
154 - the number of tasks to distribute
155 - the computation size of each task
156 - the size of the files associated to each task
157 - a list of host that will accept those tasks.
158 - the time to sleep at the beginning of the function
159 - This time defined the process sleep time
160 if time = 0 use of MSG_comm_wait()
161 if time > 0 use of MSG_comm_test()
164 \until Receiver function
166 \subsection MSG_ext_icomms_Receiver Receiver function
168 This function executes tasks when it receives them. As the receiving is asynchronous we have to test the communication to know
169 if it is completed or not with "MSG_comm_test()" or wait for the completion "MSG_comm_wait()".
171 C style arguments (argc/argv) are interpreted as:
172 - the id to use for received the communication.
173 - the time to sleep at the beginning of the function
174 - This time defined the process sleep time
175 if time = 0 use of MSG_comm_wait()
176 if time > 0 use of MSG_comm_test()
180 \subsection MSG_ext_icomms_core Simulation core
182 This function is the core of the simulation and is divided only into 3 parts
183 thanks to MSG_create_environment() and MSG_launch_application().
184 -# Simulation settings : MSG_create_environment() creates a realistic
186 -# Application deployment : create the agents on the right locations with
187 MSG_launch_application()
188 -# The simulation is run with #MSG_main()
191 - <i>platform_file</i>: the name of a file containing an valid surfxml platform description.
192 - <i>application_file</i>: the name of a file containing a valid surfxml application description
196 \subsection MSG_ext_icomms_Main Main function
198 This initializes MSG, runs a simulation, and free all data-structures created by MSG.
202 \dontinclude msg/icomms/peer2.c
204 \section MSG_ext_icomms_fct Waitall function for sender
206 The use of this function permit to send all messages and wait for the completion of all in one time.
208 \skipline Sender function
213 /** \page MSG_ex_master_slave_scrip_lua Master/slave application using lua console
215 Simulation of a master-slave application using a realistic platform and
216 an external description of the deployment via a lua script.
218 \section MSG_ex_msl_TOC Table of contents:
220 - \ref MSG_ext_msl_code
221 - \ref MSG_ext_msl_preliminary
222 - \ref MSG_ext_msl_master
223 - \ref MSG_ext_msl_slave
224 - \ref MSG_ext_msl_core
225 - \ref MSG_ext_msl_main
226 - \ref MSG_ext_msl_helping
227 - \ref MSG_ext_msl_platform
231 \dontinclude msg/masterslave/masterslave_console.c
233 \section MSG_ext_msl_code Code of the application
235 \subsection MSG_ext_msl_preliminary Preliminary declarations
240 \subsection MSG_ext_msl_master Master code
242 This function has to be assigned to a m_process_t that will behave as the master.
243 It should not be called directly but either given as a parameter to
244 #MSG_process_create() or registered as a public function through
245 #MSG_function_register() and then automatically assigned to a process through
246 #MSG_load_platform_script().
248 C style arguments (argc/argv) are interpreted as:
249 - the number of tasks to distribute
250 - the computation size of each task
251 - the size of the files associated to each task
252 - number of hosts that will accept those tasks.
254 Tasks are dumbly sent in a round-robin style.
257 \subsection MSG_ext_msl_slave Slave code
259 This function has to be assigned to a #m_process_t that has to behave as a slave.
260 Just like the master fuction (described in \ref MSG_ext_ms_master), it should not be called directly.
262 This function keeps waiting for tasks and executes them as it receives them.
266 \subsection MSG_ext_msl_core Simulation core
268 This function is the core of the simulation and is divided now only into 2 parts
269 thanks to MSG_load_platform_script().
270 -# Simulation settings and application deployment : MSG_load_platform_script() loads and creates a realistic
271 environment and the agents on the right locations, described in the lua script file (see example below).
272 Note that the use of this function require a lua installation on your machine.
273 -# The simulation is run with #MSG_main().
276 - <i>platform_script_file</i>: the name of the script file containing a valid platform and application description, using bound lua methods to bypass the surfxml parser.
278 \until end_of_test_all
280 \subsection MSG_ext_msl_main Main() function
282 This initializes MSG, runs a simulation, and free all data-structures created by MSG.
286 \section MSG_ext_msl_helping Helping files
288 \subsection MSG_ext_msl_platform Example of platform script file
290 \include msg/masterslave/platform_script.lua
295 /** \page MSG_ex_master_slave Master/slave application
297 Simulation of a master-slave application using a realistic platform and
298 an external description of the deployment.
300 \section MSG_ex_ms_TOC Table of contents:
302 - \ref MSG_ext_ms_code
303 - \ref MSG_ext_ms_preliminary
304 - \ref MSG_ext_ms_master
305 - \ref MSG_ext_ms_slave
306 - \ref MSG_ext_ms_forwarder
307 - \ref MSG_ext_ms_core
308 - \ref MSG_ext_ms_main
309 - \ref MSG_ext_ms_helping
310 - \ref MSG_ext_ms_application
311 - \ref MSG_ext_ms_platform
315 \dontinclude msg/masterslave/masterslave_forwarder.c
317 \section MSG_ext_ms_code Code of the application
319 \subsection MSG_ext_ms_preliminary Preliminary declarations
325 \subsection MSG_ext_ms_master Master code
327 This function has to be assigned to a m_process_t that will behave as the master.
328 It should not be called directly but either given as a parameter to
329 #MSG_process_create() or registered as a public function through
330 #MSG_function_register() and then automatically assigned to a process through
331 #MSG_launch_application().
333 C style arguments (argc/argv) are interpreted as:
334 - the number of tasks to distribute
335 - the computation size of each task
336 - the size of the files associated to each task
337 - a list of host that will accept those tasks.
339 Tasks are dumbly sent in a round-robin style.
343 \subsection MSG_ext_ms_slave Slave code
345 This function has to be assigned to a #m_process_t that has to behave as a slave.
346 Just like the master fuction (described in \ref MSG_ext_ms_master), it should not be called directly.
348 This function keeps waiting for tasks and executes them as it receives them.
352 \subsection MSG_ext_ms_forwarder Forwarder code
354 This function has to be assigned to a #m_process_t that has to behave as a forwarder.
355 Just like the master function (described in \ref MSG_ext_ms_master), it should not be called directly.
357 C style arguments (argc/argv) are interpreted as a list of host
358 that will accept those tasks.
360 This function keeps waiting for tasks and dispathes them to its slaves.
362 \until end_of_forwarder
364 \subsection MSG_ext_ms_core Simulation core
366 This function is the core of the simulation and is divided only into 3 parts
367 thanks to MSG_create_environment() and MSG_launch_application().
368 -# Simulation settings : MSG_create_environment() creates a realistic
370 -# Application deployment : create the agents on the right locations with
371 MSG_launch_application()
372 -# The simulation is run with #MSG_main()
375 - <i>platform_file</i>: the name of a file containing an valid surfxml platform description.
376 - <i>application_file</i>: the name of a file containing a valid surfxml application description
378 \until end_of_test_all
380 \subsection MSG_ext_ms_main Main() function
382 This initializes MSG, runs a simulation, and free all data-structures created by MSG.
386 \section MSG_ext_ms_helping Helping files
388 \subsection MSG_ext_ms_application Example of application file
390 \include msg/masterslave/deployment_masterslave.xml
392 \subsection MSG_ext_ms_platform Example of platform file
394 \include msg/small_platform.xml
398 /** \page MSG_ex_master_slave_lua Master/slave Lua application
400 Simulation of a master-slave application using lua bindings
401 - \ref MSG_ext_ms_code_lua
402 - \ref MSG_ext_ms_master_lua
403 - \ref MSG_ext_ms_slave_lua
404 - \ref MSG_ext_ms_core_lua
406 - \ref MSG_ext_ms_helping
407 - \ref MSG_ext_ms_application
408 - \ref MSG_ext_ms_platform
411 \dontinclude lua/master_slave.lua
413 \section MSG_ext_ms_code_lua Code of the application
415 \subsection MSG_ext_ms_master_lua Master code
417 as described ine the C native master/Slave exmaple , this function has to be assigned to a m_process_t that will behave as the master.
419 Lua style arguments (...) in for the master are interpreted as:
420 - the number of tasks to distribute
421 - the computation size of each task
422 - the size of the files associated to each task
423 - a list of host that will accept those tasks.
425 Tasks are dumbly sent in a round-robin style.
430 \subsection MSG_ext_ms_slave_lua Slave code
432 This function has to be assigned to a #m_process_t that has to behave as a slave.
433 This function keeps waiting for tasks and executes them as it receives them.
436 \subsection MSG_ext_ms_core_lua Simulation core
438 in this section the core of the simulation which start by including the simgrid lib for bindings
439 : <i>require "simgrid" </i>
441 -# Simulation settings : <i>simgrid.platform</i> creates a realistic
443 -# Application deployment : create the agents on the right locations with
444 <i>simgrid.application</i>
445 -# The simulation is run with <i>simgrid.run</i>
448 - <i>platform_file</i>: the name of a file containing an valid surfxml platform description.( first command line argument)
449 - <i>application_file</i>: the name of a file containing a valid surfxml application description ( second commande line argument )
451 \until simgrid.clean()
455 /** \page MSG_ex_master_slave_lua_bypass Master/slave Bypass Lua application
457 Simulation of a master-slave application using lua bindings, Bypassing the XML parser
458 - \ref MSG_ext_ms_code_lua
459 - \ref MSG_ext_ms_master_lua
460 - \ref MSG_ext_ms_slave_lua
461 - \ref MSG_ext_ms_core_lua
464 \dontinclude lua/master_slave_bypass.lua
466 \section MSG_ext_ms_code_lua Code of the application
468 \subsection MSG_ext_ms_master_lua Master code
470 as described ine the C native master/Slave exmaple , this function has to be assigned to a m_process_t that will behave as the master.
472 Lua style arguments (...) in for the master are interpreted as:
473 - the number of tasks to distribute
474 - the computation size of each task
475 - the size of the files associated to each task
476 - a list of host that will accept those tasks.
478 Tasks are dumbly sent in a round-robin style.
483 \subsection MSG_ext_ms_slave_lua Slave code
485 This function has to be assigned to a #m_process_t that has to behave as a slave.
486 This function keeps waiting for tasks and executes them as it receives them.
489 \subsection MSG_ext_ms_core_lua Simulation core
491 in this section the core of the simulation which start by including the simgrid lib for bindings, then create the resources we need to set up our environment bypassing the XML parser.
492 : <i>require "simgrid" </i>
494 -# Hosts : <i>simgrid.Host.new</i> instanciate a new host with an id, and power.
495 -# Links : <i>simgrid.Link.new</i> instanictae a new link that will require an id, bandwith and latency values.
496 -# Route : <i>simgrid.Route.new</i> define a route between two hosts specifying the links to use.
497 -# Simulation settings : <i>simgrid.register_platform();</i> register own platform without using the XML SURF parser.
499 we can also bypass the XML deployment file, and associate functions for each of defined hosts.
500 - <i>simgrid.Host.setFunction</i>: associate a function to a host, specifying arguments if needed.
501 - <i>simgrid.register_application()</i>: saving the deployment settings before running the simualtion.
503 \until simgrid.clean()