X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9e68ca10e951fb61e944c99c7774b1e415ae9f6d..ad1ca6eaa8df8c8d05516938aace782d8e8480b9:/doc/doxygen/modules.doc diff --git a/doc/doxygen/modules.doc b/doc/doxygen/modules.doc index d21c24c94a..7b5f076a44 100644 --- a/doc/doxygen/modules.doc +++ b/doc/doxygen/modules.doc @@ -2,19 +2,6 @@ @defgroup MSG_API MSG @brief Simple programming environment -MSG was the first distributed programming environment provided within -SimGrid. While almost realistic, it remains quite simple -(simplistic?). - -@section MSG_who Who should use this (and who shouldn't) - -You should use this module if you want to study some heuristics for a -given problem you don't really want to implement. If you want to use -DAGs, have a look at the \ref SD_API programming environment. If you -want to study an existing MPI program, have a look at the \ref -SMPI_API one. If none of those programming environments fits your -needs, you may consider implementing your own directly on top of -\ref SURF_API (but you probably want to contact us before). */ /** @@ -52,101 +39,6 @@ parameter in the command line (see \ref tracing for details). /** \defgroup SMPI_API SMPI \brief Programming environment for the simulation of MPI applications - -This programming environment permits to study existing MPI application -by emulating them on top of the SimGrid simulator. In other words, it -will constitute an emulation solution for parallel codes. You don't -even have to modify your code for that, although that may help, as -detailed below. - -\section SMPI_who Who should use SMPI (and who shouldn't) - -You should use this programming environment of the SimGrid suite if -you want to study existing MPI applications. If you want to study -some heuristics for a given problem (and if your goal is to produce -theorems and publications, not code), have a look at the \ref MSG_API -environment, or the \ref SD_API one if you need to use DAGs. If none -of those programming environments fits your needs, you may consider -implementing your own directly on top of \ref SURF_API (but you -probably want to contact us before). - -\section SMPI_what What can run within SMPI? - -You can run unmodified MPI applications (both C and Fortran) within -SMPI, provided you only use MPI calls that we implemented in MPI. Our -coverage of the interface is not bad, but will probably never be -complete. One sided communications and I/O primitives are not targeted -for now. The full list of not yet implemented functions is available -in file include/smpi/smpi.h of the archive, between two lines -containing the FIXME marker. If you really need a missing -feature, please get in touch with us: we can guide you though the -SimGrid code to help you implementing it, and we'd glad to integrate -it in the main project afterward if you contribute them back. - -\section SMPI_adapting Adapting your MPI code to the use of SMPI - -As detailed in the reference article (available at -http://hal.inria.fr/inria-00527150), you may want to adapt your code -to improve the simulation performance. But these tricks may seriously -hinder the result qualtity (or even prevent the app to run) if used -wrongly. We assume that if you want to simulate an HPC application, -you know what you are doing. Don't prove us wrong! - -If you get short on memory (the whole app is executed on a single node -when simulated), you should have a look at the SMPI_SHARED_MALLOC and -SMPI_SHARED_FREE macros. It allows to share memory areas between -processes. For example, matrix multiplication code may want to store -the blocks on the same area. Of course, the resulting computations -will useless, but you can still study the application behavior this -way. Of course, if your code is data-dependent, this won't work. - -If your application is too slow, try using SMPI_SAMPLE_LOCAL, -SMPI_SAMPLE_GLOBAL and friends to indicate which computation loops can -be sampled. Some of the loop iterations will be executed to measure -their duration, and this duration will be used for the subsequent -iterations. These samples are done per processor with -SMPI_SAMPLE_LOCAL, and shared between all processors with -SMPI_SAMPLE_GLOBAL. Of course, none of this will work if the execution -time of your loop iteration are not stable. - -Yes, that's right, these macros are not documented yet, but we'll fix -it as soon as time permits. Sorry about that -- patch welcomed! -Meanwhile, grep for them on the examples for more information. - -\section SMPI_compiling Compiling your code - -This is very simply done with the smpicc script. If you -already compiled any MPI code before, you already know how to use it. -If not, you should try to get your MPI code running on top of MPI -before giving SMPI a spin. Actually, that's very simple even if it's -the first time you use MPI code: just use smpicc as a compiler (in -replacement of gcc or your usual compiler), and you're set. - -\section SMPI_executing Executing your code on top of the simulator - -This is done though the smpirun script as follows. -my_hostfile.txt is a classical MPI hostfile (that is, this -file lists the machines on which the processes must be dispatched, one -per line) my_platform.xml is a classical SimGrid platform -file. Of course, the hosts of the hostfile must exist in the provided -platform. ./program is the MPI program that you want to -simulate (must be compiled by smpicc) while -arg is -a command-line parameter passed to this program. - -\verbatim -smpirun -hostfile my_hostfile.txt -platform my_platform.xml ./program -arg -\endverbatim - -smpirun accepts other parameters, such as -np if you don't -want to use all the hosts defined in the hostfile, -map to -display on which host each rank gets mapped of -trace to -activate the tracing during the simulation. You can get the full list -by running -\verbatim -smpirun -help -\endverbatim - - */