Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
1a97f1d740ddb7ca42fc18e281d286897b9084b7
[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 affraid 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 \endhtmlonly
19 \htmlinclude simgrid_modules.map
20 \htmlonly
21 <br><b>SimGrid Components (click to jump to API)</b>
22 </center>
23 \endhtmlonly
24
25
26 \section ug_overview Overview of the toolkit components
27
28
29 \subsection ug_overview_envs Programing environments layer
30
31 SimGrid provides several programming environments built on top of a unique
32 simulation kernel. Each environment targets a specific audience and
33 constitutes a different paradigm. To choose which of them you want to use,
34 you have to think about what you want to do and what would be the result of
35 your work.
36
37  - If you want to study a theoretical problem and compare several
38    heuristics, you probably want to try <b>\ref MSG_API</b> (yet another
39    historical name). It was designed exactly to that extend and should allow
40    you to build easily rather realistic multi-agents simulation. Yet,
41    realism is not the main goal of this environment and the most annoying
42    technical issues of real platforms are masked here. Check the \ref
43    MSG_API section for more information.
44
45  - If you want to study the behavior of a MPI application using emulation,
46    you should have a look at the <b>\ref SMPI_API</b> (Simulated
47    MPI) programming environment. Unfortunately, this work is still underway.
48    Check the \ref SMPI_API section for more information.
49
50 If your favorite programming environment/model is not there (BSP,
51 components, OpenMP, etc.) is not represented in the SimGrid toolkit yet, you may
52 consider adding it. You should contact us first on the
53 <a href=http://lists.gforge.inria.fr/mailman/listinfo/simgrid-devel>SimGrid
54 developers mailing list</a>, though.
55
56 \subsection ug_overview_kernel Simulation kernel layer
57
58 The core functionalities to simulate a virtual platform are provided by a
59 module called <b>\ref SURF_API</b>.  It is
60 very low-level and is not intended to be used as such by end-users. Instead,
61 it serve as a basis for the higher level layer.
62
63 SURF main features are a fast max-min linear solver and the ability to
64 change transparently the model used to describe the platform. This greatly
65 eases the comparison of the several models existing in the literature.
66
67 See the \ref SURF_API section for more details.
68
69 \subsection ug_overview_fundation Base layer
70
71 The base of the whole toolkit is constituted by the <b>\ref XBT_API
72 (eXtended Bundle of Tools)</b>.
73
74 It is a portable library providing some grounding features such as \ref
75 XBT_log, \ref XBT_ex and \ref XBT_config.
76
77 XBT also encompass the following convenient C data structures:
78 \ref XBT_dynar, \ref XBT_fifo, \ref XBT_dict, \ref XBT_heap, and
79 \ref XBT_swag. The code is being migrated in C++ so you should probably want
80 to use standard C++ containers instead of them if possible.
81
82 It contains some C++ polyfills and utilities as well.
83
84 See the \ref XBT_API section for more details.
85
86
87 \subsection ug_lucas_layer Tracing simulation
88 Finally, a transversal module allows you to trace your simulation. More documentation in the section \ref TRACE_doc
89
90 */