Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
get rid of surf_exit()
[simgrid.git] / doc / doxygen / uhood_arch.doc
1 /*! @page uhood_arch Project Architecture Overview
2
3 This page presents the current code organization, as you will see it
4 if you dig into the src/ directory. <b>But things will change during
5 the current Gran Refactoring leading to SimGrid 4</b>. So take the
6 information on this page with a grain of salt, and don't be afraid if
7 things are not exactly as documented here. 
8
9 At some point, we at least extend this page to present the overall
10 design that we are currently pursuing for SimGrid 4.
11
12 If you need to extend SimGrid, then you probably need to head to @ref
13 uhood_tech once you understant the overall design presented on this
14 page.
15
16 @htmlonly
17 <center>
18 <tt>htmlinclude simgrid_modules.map<tt>
19 <br><b>SimGrid Components (click to jump to API)</b>
20 </center>
21 @endhtmlonly
22
23
24 @section ug_overview Overview of the toolkit components
25
26
27 @subsection ug_overview_envs Programming environments layer
28
29 SimGrid provides several programming environments built on top of a unique
30 simulation kernel. Each environment targets a specific audience and
31 constitutes a different paradigm. To choose which of them you want to use,
32 you have to think about what you want to do and what would be the result of
33 your work.
34
35  - If you want to study a theoretical problem and compare several
36    heuristics, you probably want to try <b>@ref MSG_API</b> (yet another
37    historical name). It was designed exactly to that extend and should allow
38    you to build easily rather realistic multi-agents simulation. Yet,
39    realism is not the main goal of this environment and the most annoying
40    technical issues of real platforms are masked here. Check the @ref
41    MSG_API section for more information.
42
43  - If you want to study the behavior of an MPI application using emulation,
44    you should have a look at the <b>@ref SMPI_API</b> (Simulated
45    MPI) programming environment. Unfortunately, this work is still underway.
46    Check the @ref SMPI_API section for more information.
47
48 If your favorite programming environment/model is not there (BSP,
49 components, OpenMP, etc.) is not represented in the SimGrid toolkit yet, you may
50 consider adding it. You should contact us first on the
51 <a href=http://lists.gforge.inria.fr/mailman/listinfo/simgrid-devel>SimGrid
52 developers mailing list</a>, though.
53
54 @subsection ug_overview_kernel Simulation kernel layer
55
56 The core functionalities to simulate a virtual platform are provided by a
57 module called <b>@ref SURF_API</b>.  It is
58 very low-level and is not intended to be used as such by end-users. Instead,
59 it serve as a basis for the higher level layer.
60
61 SURF main features are a fast max-min linear solver and the ability to
62 change transparently the model used to describe the platform. This greatly
63 eases the comparison of the several models existing in the literature.
64
65 See the @ref SURF_API section for more details.
66
67 @subsection ug_overview_fundation Base layer
68
69 The base of the whole toolkit is constituted by the <b>@ref XBT_API
70 (eXtended Bundle of Tools)</b>.
71
72 It is a portable library providing some grounding features such as @ref
73 XBT_log, @ref XBT_ex and @ref XBT_config.
74
75 XBT also encompass the following convenient C data structures:
76 @ref XBT_dynar and @ref XBT_dict.
77 The code is being migrated in C++ so you should probably want
78 to use standard C++ containers instead of them if possible.
79
80 It contains some C++ polyfills and utilities as well.
81
82 See the @ref XBT_API section for more details.
83
84
85 @subsection ug_lucas_layer Tracing simulation
86 Finally, a transversal module allows you to trace your simulation. More documentation in the section @ref TRACE_doc
87
88 */