Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
little doc reorg: split a page in two
[simgrid.git] / doc / doxygen / uhood_arch.doc
diff --git a/doc/doxygen/uhood_arch.doc b/doc/doxygen/uhood_arch.doc
new file mode 100644 (file)
index 0000000..db93f20
--- /dev/null
@@ -0,0 +1,90 @@
+/*! @page uhood_arch Project Architecture Overview
+
+This page presents the current code organization, as you will see it
+if you dig into the src/ directory. <b>But things will change during
+the current Gran Refactoring leading to SimGrid 4</b>. So take the
+information on this page with a grain of salt, and don't be affraid if
+things are not exactly as documented here. 
+
+At some point, we at least extend this page to present the overall
+design that we are currently pursuing for SimGrid 4.
+
+If you need to extend SimGrid, then you probably need to head to @ref
+uhood_tech once you understant the overall design presented on this
+page.
+
+\htmlonly
+<center>
+\endhtmlonly
+\htmlinclude simgrid_modules.map
+\htmlonly
+<br><b>SimGrid Components (click to jump to API)</b>
+</center>
+\endhtmlonly
+
+
+\section ug_overview Overview of the toolkit components
+
+
+\subsection ug_overview_envs Programing environments layer
+
+SimGrid provides several programming environments built on top of a unique
+simulation kernel. Each environment targets a specific audience and
+constitutes a different paradigm. To choose which of them you want to use,
+you have to think about what you want to do and what would be the result of
+your work.
+
+ - If you want to study a theoretical problem and compare several
+   heuristics, you probably want to try <b>\ref MSG_API</b> (yet another
+   historical name). It was designed exactly to that extend and should allow
+   you to build easily rather realistic multi-agents simulation. Yet,
+   realism is not the main goal of this environment and the most annoying
+   technical issues of real platforms are masked here. Check the \ref
+   MSG_API section for more information.
+
+ - If you want to study the behavior of a MPI application using emulation,
+   you should have a look at the <b>\ref SMPI_API</b> (Simulated
+   MPI) programming environment. Unfortunately, this work is still underway.
+   Check the \ref SMPI_API section for more information.
+
+If your favorite programming environment/model is not there (BSP,
+components, OpenMP, etc.) is not represented in the SimGrid toolkit yet, you may
+consider adding it. You should contact us first on the
+<a href=http://lists.gforge.inria.fr/mailman/listinfo/simgrid-devel>SimGrid
+developers mailing list</a>, though.
+
+\subsection ug_overview_kernel Simulation kernel layer
+
+The core functionalities to simulate a virtual platform are provided by a
+module called <b>\ref SURF_API</b>.  It is
+very low-level and is not intended to be used as such by end-users. Instead,
+it serve as a basis for the higher level layer.
+
+SURF main features are a fast max-min linear solver and the ability to
+change transparently the model used to describe the platform. This greatly
+eases the comparison of the several models existing in the literature.
+
+See the \ref SURF_API section for more details.
+
+\subsection ug_overview_fundation Base layer
+
+The base of the whole toolkit is constituted by the <b>\ref XBT_API
+(eXtended Bundle of Tools)</b>.
+
+It is a portable library providing some grounding features such as \ref
+XBT_log, \ref XBT_ex and \ref XBT_config.
+
+XBT also encompass the following convenient C data structures:
+\ref XBT_dynar, \ref XBT_fifo, \ref XBT_dict, \ref XBT_heap, \ref XBT_set and
+\ref XBT_swag. The code is being migrated in C++ so you should probably want
+to use standard C++ containers instead of them if possible.
+
+It contains some C++ polyfills and utilities as well.
+
+See the \ref XBT_API section for more details.
+
+
+\subsection ug_lucas_layer Tracing simulation
+Finally, a transversal module allows you to trace your simulation. More documentation in the section \ref TRACE_doc
+
+*/