Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
d6462287f94714495c959b38a99824679b401024
[simgrid.git] / doc / doxygen / internals.doc
1 /*! @page internals SimGrid Developer Guide
2
3 This page does not exist yet, sorry. We are currently refurbishing the
4 user documentation -- the internal documentation will follow (FIXME).
5
6 All we can say for now is that once you learn a bit about the SimGrid
7 internals, you will probably look a bit like this:
8
9 @image html DiscoveringSimgrid.gif Discovering SimGrid's Internals.
10
11 There is two main things you want to know about the internals of
12 SimGrid. First, you need to understand the component organization, as
13 SimGrid is heavily layered, with each level being rather highly
14 specialized and optimized toward a task. For that, please keep reading
15 this page. If you work actively on the SimGrid project, the second
16 point you need to understand is about the infrastructure of the
17 SimGrid project, ie how to extend the framework in any way, how the
18 automatic tests are run, and so on. These informations are split on
19 several pages, as follows:
20
21  - @subpage inside_tests
22  - @subpage inside_doxygen
23  - @subpage inside_extending
24  - @subpage inside_cmake
25  - @subpage inside_release
26
27
28 \htmlonly
29 <center>
30 \endhtmlonly
31 \htmlinclude simgrid_modules.map
32 \htmlonly
33 <br><b>SimGrid Components (click to jump to API)</b>
34 </center>
35 \endhtmlonly
36
37
38 \section ug_overview Overview of the toolkit components
39
40
41 \subsection ug_overview_envs Programmation environments layer
42
43 SimGrid provides several programmation environments built on top of a unique
44 simulation kernel. Each environment targets a specific audiance and
45 constitutes a different paradigm. To choose which of them you want to use,
46 you have to think about what you want to do and what would be the result of
47 your work.
48
49  - If you want to study a theoritical problem and compare several
50    heuristics, you probably want to try <b>\ref MSG_API</b> (yet another
51    historical name). It was designed exactly to that extend and should allow
52    you to build easily rather realistic multi-agents simulation. Yet,
53    realism is not the main goal of this environment and the most annoying
54    technical issues of real platforms are masked here. Check the \ref
55    MSG_API section for more information.
56
57  - If you want to study the behaviour of a MPI application using emulation
58    technics, you should have a look at the <b>\ref SMPI_API</b> (Simulated
59    MPI) programming environment. Unfortunately, this work is still underway.
60    Check the \ref SMPI_API section for more information.
61
62 If your favorite programming environment/model is not there (BSP,
63 components, OpenMP, etc.) is not represented in the SimGrid toolkit yet, you may
64 consider adding it. You should contact us first on the
65 <a href=http://lists.gforge.inria.fr/mailman/listinfo/simgrid-devel>SimGrid
66 developers mailing list</a>, though.
67
68 \subsection ug_overview_kernel Simulation kernel layer
69
70 The core functionnalities to simulate a virtual platform are provided by a
71 module called <b>\ref SURF_API</b>.  It is
72 very low-level and is not intended to be used as such by end-users. Instead,
73 it serve as a basis for the higher level layer.
74
75 SURF main features are a fast max-min linear solver and the ability to
76 change transparently the model used to describe the platform. This greatly
77 eases the comparison of the several models existing in the litterature.
78
79 See the \ref SURF_API section for more details.
80
81 \subsection ug_overview_fondation Base layer
82
83 The base of the whole toolkit is constituted by the <b>\ref XBT_API
84 (eXtended Bundle of Tools)</b>.
85
86 It is a portable library providing some grounding features such as \ref
87 XBT_log, \ref XBT_ex and \ref XBT_config. XBT also encompass
88 the following convenient datastructures: \ref XBT_dynar, \ref XBT_fifo, \ref
89 XBT_dict, \ref XBT_heap, \ref XBT_set and \ref XBT_swag.
90
91 See the \ref XBT_API section for more details.
92
93
94 \subsection ug_lucas_layer Tracing simulation
95 Finally, a transversal module allows you to trace your simulation. More documentation in the section \ref TRACE_doc
96
97 */