From 320dd2ebba27932ac6cbec8b51dd50cc169a61f4 Mon Sep 17 00:00:00 2001 From: alegrand Date: Wed, 30 Mar 2005 23:37:24 +0000 Subject: [PATCH] Updating the documentation and uploading to gforge. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1195 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- doc/FAQ.doc | 182 ++++++++++++++++++++++++++++++++++++------------ doc/Makefile.am | 1 + doc/index.doc | 8 ++- 3 files changed, 143 insertions(+), 48 deletions(-) diff --git a/doc/FAQ.doc b/doc/FAQ.doc index ce07849ee2..e03db66025 100644 --- a/doc/FAQ.doc +++ b/doc/FAQ.doc @@ -1,6 +1,6 @@ /*! \page faq Frequently Asked Questions -\author Arnaud Legrand +\author Arnaud Legrand \section faq_installation Installing the SimGrid library @@ -9,7 +9,7 @@ often, the questions were not really about SimGrid but on the installation process. This section is intended to help people that are not familiar with compiling C files under UNIX. If you follow these instructions and still have some troubles, drop an e-mail to -. +. \subsection faq_compiling Compiling SimGrid @@ -147,7 +147,7 @@ You are at the right place... Having a look to these slides may give you some insights on what SimGrid can help you to do and what are its limitations. Then you definitely should read the \ref -MSG_examples. +MSG_examples. There is also a mailing list: . \subsection faq_generic Building a generic simulator @@ -192,17 +192,21 @@ though). \subsection faq_visualization Visualizing the schedule It is sometime convenient to "see" how the agents are behaving. If you -like colors, you can use tools/colorize.pl as a filter to you -MSG outputs. It is intended to work with the output generated by -PRINT_MESSAGE() (a macro defined in -example/msg/messages.h). Beware, PRINT_MESSAGE() prints on -stderr. Do not forget to redirect if you want to filter (e.g. with -bash): -\verbatim ./masterslave3 platform.txt deployment.txt 2>&1 | ../../tools/colorize.pl \endverbatim - -That would be great to have something more graphical. As soon as I'll -have a little bit more time, I will write a piece of code that +like colors, you can use tools/MSG_visualization/colorize.pl +as a filter to your MSG outputs. It works directly with INFO. Beware, +INFO() prints on stderr. Do not forget to redirect if you want to +filter (e.g. with bash): +\verbatim +./msg_test small_platform.xml small_deployment.xml 2>&1 | ../../tools/MSG_visualization/colorize.pl +\endverbatim + +We also have a more graphical output. Have a look at MSG_paje_output(). It generates an input to Paje. +
+\htmlonly + +\endhtmlonly +
\subsection faq_context I have tons of process and it is limiting my simulation. @@ -220,39 +224,127 @@ Nevertheless, be aware that this code does not work on some system. It is not very clean. As usual, as soon as I will have a little bit more time, I will recode it in a cleaner way. -\section faq_stupid Stupid Questions - -\subsection faq_GridSim Are SimGrid and GridSim the same ? - -Are you kidding ? SimGrid is plain C and GridSim is written in -Java... I'm sarcastic but I'm pissed of all these poeple arguing that -their software is well-structured and higly portable thanks to Java. A -C program can also be structured in an object-oriented way and be -highly portable (just try to run Java on IRIX... ;). - -According to different published papers, both SimGrid and GridSim seem -to have the same kind of goal but I have never succeeded in compiling -GridSim (but I may not be very objective since I always have troubles -when trying to run java programs) and its documentation has not -enlightened me. If you have suceeded and can tell me more about it, -please tell me. - -\subsection faq_stupid_MSG What is MSG and why do you like it ? +\section faq_SG Where has SG disappeared ?!? + +OK, it's time to explain what's happening to the SimGrid project. Let's +start with a little bit of history. + +* Historically, SimGrid was a low-level toolkit for scheduling with +classical models such as DAGs. That was SimGrid v.1.* aka SG, written by +Henri Casanova. I had been using it in its earliest versions during an +internship at UCSD. + +Then we have realized that encoding distributed algorithm in SG was a +real pain. + +* So we have built MSG on top of SG and have released SimGrid v.2.*. MSG +offered a very basic API to encode a distributed application easily. +However encoding MSG on top of SG was not really convenient and did not +use the DAG part since the control of the task synchronization was done +on top of MSG and no more in SG. We have been playing a little bit with +MSG. We have realized that: + + \li 1) the platform modeling was quite flexible and could be "almost" + automated (e.g. using random generator and post-annotations); + + \li 2) SG was the bottleneck because of the way we were using + it. We needed to simulate concurrent transfers, complex load + sharing mechanisms. Many optimizations (e.g. trace integration) + were totally inefficient when combined with MSG and made extending SG + to implement new sharing policies, parallel tasks models, or failures + (many people were asking for these kind of features) a real pain; + + \li 3) the application modeling was not really easy. Even though the + application modeling depends on people's applications, we thought + we could improve things here. One of our target here was realistic +distributed applications ranging from computer sensor networks like +the NWS to peer-to-peer applications; + +* So we have been planning mainly two things for SimGrid 3: + + \li 1) I have proposed to get rid of SG and to re-implement a new kernel + that would be faster and more flexible. That is what I did in the +end of 2004: SURF. SURF is based on a fast max-min linear solver +using O(1) data-structures. I have quickly replaced SG by SURF in +MSG and the result has been that on the MSG example, the new +version was more than 10 times faster while we had gain a lot of +flexibility. I think I could still easily make MSG faster but I +have to work on MSG now (e.g. using some of the O(1) +data-structures I've been using to build SURF) since it has become +the bottleneck. Some MSG functions have been removed from the API +but they were mainly intended to build the platform by hand (they +had appeared in the earliest versions of MSG) and were therefore +not useful anymore since we are providing a complete mechanism to +automatically build the platform and deploy the agents on it.; + + \li 2) GRAS is a new project Martin and I have come up with. The idea is +to have a programming environment that let you program real +distributed applications while letting you the ability to run it in +the simulator without having to change the slightest line of your +code. From the simulation point of view, GRAS performs the +application modeling automatically... Up until now, GRAS works on +top MSG for historical reasons but I'm going to make it work +directly on top of SURF so that it can use all the flex and the +speed provided by SURF. + +Those two things are working, but we want to make everything as clean as +possible before releasing SimGrid v.3. + +So what about those nice DAGs we used to have in SimGrid v.1. ? They're not +anymore in SimGrid v.3. Let me recall you the way SimGrid 3 is organized: -Monosodium glutamate (MSG) is used as a flavor enhancer in a variety -of foods prepared at home, in restaurants, and by food processors. Its -use has become controversial in the past 30 years because of reports of -adverse reactions in people who've eaten foods that contain MSG. Research -on the role of glutamate--a group of chemicals that includes MSG--in the -nervous system also has raised questions about the chemical's safety. - -For more information, see http://www.truthinlabeling.org/ or -http://www.msg.net/ +\verbatim +________________ +| User code | +|______________| +| | MSG | GRAS | +| -------------| +| | SURF | +| -------------| +| XBT | +---------------- +\endverbatim -It also stands for Meta-SimgGrid. It is a simulator written on top of -Simgrid that can be used to easily simulate many process running on a -computing platform. +XBT is our tool box and now, you should have an idea of what the other ones +are. As you can see, the primitive SG is not here anymore. However it could +still be brought back if people really need it. Here is how it would fit. -I also like it because it gives flavor and it's addictive. ;) +\verbatim +______________________ +| User code | +|____________________| +| | MSG | GRAS | SG | +| -------------------| +| | SURF | +| -------------------| +| XBT | +---------------------- +\endverbatim -*/ +Re-implementing SG on top of SURF is really straightforward (it only +requires a little bit of time that I really don't have right now) +since the only thing that lacks to SURF is the DAG part. But adding it +to SURF would slow it down and therefore slow MSG and GRAS which is +not a good thing. However it is really not on the top of our TODO +list because we have to work on GRAS, and its MPI counterpart, and a +parallel task model, and ... Anyway, we finally have migrated our CVS +to gforge so people that are interested by helping on this part will +have the possibility to do it. + +\subsection But I wanted to implement a distributed dynamic scheduler of DAGs... How can I do that it SG is not available anymore in the next versions ? + +Distributed is somehow "contagious". If you start making distributed +decisions, there is no way to handle DAGs directly anymore (unless I am +missing something). You have to encode your DAGs in term of communicating +process to make the whole scheduling process distributed. Believe me, it is +worth the effort since you'll then be able to try your algorithms in a very +wide variety of conditions. + +If you decide that the distributed part is not that much important and that +DAG is really the level of abstraction you want to work with (but it +prevents you from having "realistic" platform modeling), then you should +keep using the 2.18.5 versions until somebody has ported SG on top of SURF. +Note however that SURF will be slower than the old SG to handle traces with +a lots of variations (there is no trace integration anymore). + +*/ \ No newline at end of file diff --git a/doc/Makefile.am b/doc/Makefile.am index 5fd9ece7f2..ba987a384b 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -24,6 +24,7 @@ html: $(DOCSOURCES) Doxyfile.API Doxyfile.Examples Doxyfile.main logcategories.d doxygen Doxyfile.Examples >/dev/null @top_srcdir@/tools/doxygen/index_create.pl html/API/API.tag api_index.doc cp @srcdir@/simgrid_logo.png @srcdir@/simgrid_modules.png html/ + cp @srcdir@/Paje_MSG_screenshot_thn.jpg @srcdir@/Paje_MSG_screenshot.jpg html/ doxygen Doxyfile.API >/dev/null doxygen Doxyfile.Examples >/dev/null doxygen Doxyfile.main >/dev/null diff --git a/doc/index.doc b/doc/index.doc index 443d1aed5b..64081d60f7 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -17,8 +17,10 @@ Grids. \subsection quick_dl Getting and installing the software -The SimGrid software package can be downloaded from -here. + - The official webpage is simgrid.gforge.inria.fr. + - The development webpage is gforge.inria.fr/projects/simgrid. + - The user mailing list is + - The SimGrid software package can be downloaded from here. To compile and install it, simply type the following. If you are not familiar with compiling C files under UNIX and using libraries, please check @@ -147,7 +149,7 @@ The authors of SimGrid are: bandwidth-sharing. - Julien Lerouge : wrote a XML parser for ENV descriptions and helped for the general design during a 4 month period (march-june 2002) - in the