SimGrid is a free software, written by a community of people. It
started as a little software to help ourselves in our own research,
SimGrid is a free software, written by a community of people. It
started as a little software to help ourselves in our own research,
something that we hope to be valuable to many people. So yes. We hope
that SimGrid is helping you doing what you want, and that you will
join our community of happy simgriders.
@section community_contact Contacting the community
something that we hope to be valuable to many people. So yes. We hope
that SimGrid is helping you doing what you want, and that you will
join our community of happy simgriders.
@section community_contact Contacting the community
-documentation and examples first, but if it remains don't hesitate to
-ask to the community. If you do not have a question, just come to us
-and say hello! We love earing how people use SimGrid.
+documentation and examples first, but if some remain don't hesitate to
+ask the community for help. If you do not have a question, just come to us
+and say hello! We love earing about how people use SimGrid.
- For questions or remarks, drop us an email on the
<a href="mailto:simgrid-user@lists.gforge.inria.fr">User Mailing list</a> (to subscribe, visit the [webinterface](http://lists.gforge.inria.fr/mailman/listinfo/simgrid-user));
you can also check out [our archives](http://lists.gforge.inria.fr/pipermail/simgrid-user/).
We prefer you to <b>not use private emails</b>. SimGrid is an open
framework, and you never know who have the time and knowledge to
- For questions or remarks, drop us an email on the
<a href="mailto:simgrid-user@lists.gforge.inria.fr">User Mailing list</a> (to subscribe, visit the [webinterface](http://lists.gforge.inria.fr/mailman/listinfo/simgrid-user));
you can also check out [our archives](http://lists.gforge.inria.fr/pipermail/simgrid-user/).
We prefer you to <b>not use private emails</b>. SimGrid is an open
framework, and you never know who have the time and knowledge to
- Join us on IRC and ask your question directly on the channel \#simgrid at
\b irc.debian.org. Be warned that even if many people are connected to
- Join us on IRC and ask your question directly on the channel \#simgrid at
\b irc.debian.org. Be warned that even if many people are connected to
So don't be surprised if you don't get an answer in the
second, and turn to the mailing lists if nobody seems to be there.
So don't be surprised if you don't get an answer in the
second, and turn to the mailing lists if nobody seems to be there.
site is very well indexed. We answer questions there too (don't
forget to use the SimGrid tag in your question so that we can see
it), and they remain usable for the next users.
site is very well indexed. We answer questions there too (don't
forget to use the SimGrid tag in your question so that we can see
it), and they remain usable for the next users.
@section community_giveback Giving back to SimGrid
We are sometimes asked by users how to give back to the project. Here
@section community_giveback Giving back to SimGrid
We are sometimes asked by users how to give back to the project. Here
your colleagues to spread the word. When we ask for new fundings to
sustain the project, the amount of publications enabled by SimGrid is
your colleagues to spread the word. When we ask for new fundings to
sustain the project, the amount of publications enabled by SimGrid is
Also make sure that these citations are correctly listed on
<a href="http://simgrid.gforge.inria.fr/Usages.html">our list</a>.
Also make sure that these citations are correctly listed on
<a href="http://simgrid.gforge.inria.fr/Usages.html">our list</a>.
-Also, <b>help us constituting an active and welcoming user
-community</b>. Get subscribed to the mailing lists, and answer the
-questions that newcommers have if you can. Point them (gentely ;) to
+You can also <b>help us constituting an active and welcoming user
+community</b>. Subscribe to the mailing lists, and answer the
+questions that newscomers have if you can. Point them (gently ;) to
the relevant part of the documentation on need, and help them becoming
part of our community too.
the relevant part of the documentation on need, and help them becoming
part of our community too.
-Another easy way to help the project is to add a link to the
-<a href="http://simgrid.gforge.inria.fr">SimGrid homepage</a>
-on your site to <b>improve SimGrid's ranking in the search
-engines</b>.
+Another easy way to help the project is to add a link to the <a
+href="http://simgrid.gforge.inria.fr">SimGrid homepage</a> on your
+site to <b>improve SimGrid's ranking in search engines</b>.
order to motivate the attendees get more information on SimGrid, and
eventually improve their scientific habits by using a sound simulation
framework.
order to motivate the attendees get more information on SimGrid, and
eventually improve their scientific habits by using a sound simulation
framework.
because nobody told us. We unfortunately cannot endlessly review our
large code and documentation base. So please, <b>report any issue you
find</b>, be it a typo in the documentation, a paragraph that needs to
because nobody told us. We unfortunately cannot endlessly review our
large code and documentation base. So please, <b>report any issue you
find</b>, be it a typo in the documentation, a paragraph that needs to
-be reworded, a bug in the code or any other problem. The best way to
-do so is to open a bug on our GitHub's
+be reworded, a bug in the code, or any other problem. The best way to
+do so is to open an issue on our GitHub's
<a href="https://github.com/simgrid/simgrid/issues">Bug Tracker</a> so
that we don't forget about it (if you want to put some attachment, you
can use
<a https://gforge.inria.fr/tracker/?atid=165&group_id=12&func=browse">this
other bugtracker</a> instead).
<a href="https://github.com/simgrid/simgrid/issues">Bug Tracker</a> so
that we don't forget about it (if you want to put some attachment, you
can use
<a https://gforge.inria.fr/tracker/?atid=165&group_id=12&func=browse">this
other bugtracker</a> instead).
These are unreliable, and we are trying to develop SimGrid openly, so
private discussions are to be avoided if possible.
If you can provide a patch fixing the issue you report, that's even
better. If you cannot, then you need to give us a minimal working
These are unreliable, and we are trying to develop SimGrid openly, so
private discussions are to be avoided if possible.
If you can provide a patch fixing the issue you report, that's even
better. If you cannot, then you need to give us a minimal working
-example (MWE), that is as ready to use solution which reproduces the
-problem that you are experiencing. Your bug will take much more time
+example (MWE), that is a ready to use solution that reproduces the
+problem you face. Your bug will take much more time
for us to reproduce and fix if you don't give us the MWE, so you want
to help us helping you to get things efficient.
Of course, a very good way to give back to the SimGrid community is to
for us to reproduce and fix if you don't give us the MWE, so you want
to help us helping you to get things efficient.
Of course, a very good way to give back to the SimGrid community is to
@section community_extend Extending SimGrid and its Ecosystem
@subsection contributing_contrib Contributing features and associated tools
If you deeply miss a feature in the framework, you should consider
@section community_extend Extending SimGrid and its Ecosystem
@subsection contributing_contrib Contributing features and associated tools
If you deeply miss a feature in the framework, you should consider
free to help yourself. Of course, we'll do our best to assist you in
this task, so don't hesitate to contact us with your idea.
You could write a new plugin extending SimGrid in some way, or a
free to help yourself. Of course, we'll do our best to assist you in
this task, so don't hesitate to contact us with your idea.
You could write a new plugin extending SimGrid in some way, or a
platform file, this is probably interesting to other users too, and
could be included to SimGrid. Modeling accurately a given platform is
a difficult work, which outcome is very precious to us.
Or maybe you developed an independent tool on top of SimGrid. We'd
platform file, this is probably interesting to other users too, and
could be included to SimGrid. Modeling accurately a given platform is
a difficult work, which outcome is very precious to us.
Or maybe you developed an independent tool on top of SimGrid. We'd
<a href="http://simgrid.gforge.inria.fr/contrib.html">Contrib
section</a>.
@subsection contributing_todo Possible Enhancements
<a href="http://simgrid.gforge.inria.fr/contrib.html">Contrib
section</a>.
@subsection contributing_todo Possible Enhancements
-If you want to want to start working on the SimGrid codebase, here are a few
-ideas of things that could be done to improved the current code (not all of them
+If you want to start working on the SimGrid codebase, here are a few
+ideas of things that could be done to improve the current code (not all of them
are difficult, do trust yourself ;)
@subsubsection contributing_todo_cxxification Migration to C++
are difficult, do trust yourself ;)
@subsubsection contributing_todo_cxxification Migration to C++
- Currently `.then()` is not available for user futures. We would need to add
a basic user event loop in order to queue the pending continuations.
- Currently `.then()` is not available for user futures. We would need to add
a basic user event loop in order to queue the pending continuations.
between the simulator and the processes.
The fact that they share the same address space means that one memory corruption
between the simulator and the processes.
The fact that they share the same address space means that one memory corruption
simulator itself.
Moreover, the current design for SMPI applications is to compile the MPI code
normally and execute it once per simulated process in the same system process:
This means that all the existing simulated MPI processes share the same virtual
simulator itself.
Moreover, the current design for SMPI applications is to compile the MPI code
normally and execute it once per simulated process in the same system process:
This means that all the existing simulated MPI processes share the same virtual
correct as each MPI process is expected to use its own address space and have
its own global variables. In order to fix, this problem we have an optional
correct as each MPI process is expected to use its own address space and have
its own global variables. In order to fix, this problem we have an optional
be the impact on performance and memory consumption:
- It would introduce a lot of context switches and IPC communications between
be the impact on performance and memory consumption:
- It would introduce a lot of context switches and IPC communications between
#### Overhaul the state comparison code
The state comparison code is quite complicated. It has very long functions and
#### Overhaul the state comparison code
The state comparison code is quite complicated. It has very long functions and
-is programmed mostly using C idioms and is difficult to understanda and debug.
-It is in need or an overhaul:
+is programmed mostly using C idioms and is difficult to understand and debug.
+It is in need of an overhaul:
- The state comparison code works by infering types of blocks allocated on the
heap by following pointers from known roots (global variables, local
- The state comparison code works by infering types of blocks allocated on the
heap by following pointers from known roots (global variables, local
- We might benefit from adding logic for handling some known types. For
example, both `std::string` and `std::vector` have a capacity which might
- We might benefit from adding logic for handling some known types. For
example, both `std::string` and `std::vector` have a capacity which might
the corresponding elements when comparing the states and infering the types.
- Another difficulty in the state comparison code is the detection of
the corresponding elements when comparing the states and infering the types.
- Another difficulty in the state comparison code is the detection of
hash in order to avoid considering different states which would otherwise
would have been considered equal.
hash in order to avoid considering different states which would otherwise
would have been considered equal.
by the number of processes and the amount of heap currently allocated
(see `DerefAndCompareByNbProcessesAndUsedHeap`).
by the number of processes and the amount of heap currently allocated
(see `DerefAndCompareByNbProcessesAndUsedHeap`).
by `process_vm_readv()`-ing brutally the data structure of the model-checked
process leading to some horrible code such as walking a swag from another
process. It prevents us as well from replacing some XBT data structures with
by `process_vm_readv()`-ing brutally the data structure of the model-checked
process leading to some horrible code such as walking a swag from another
process. It prevents us as well from replacing some XBT data structures with
Currently, writing a new model-checking algorithms in SimGridMC is quite
difficult: the logic of the model-checking algorithm is mixed with a lot of
low-level concerns about the way the model-checker is implemented. This makes it
Currently, writing a new model-checking algorithms in SimGridMC is quite
difficult: the logic of the model-checking algorithm is mixed with a lot of
low-level concerns about the way the model-checker is implemented. This makes it
A `Session` class currently exists for this but is not feature complete
and should probably be rewritten. It should be easy to create bindings
for different languages on top of this API.
2. Create a binding to some better suited, dynamic, scripting language
A `Session` class currently exists for this but is not feature complete
and should probably be rewritten. It should be easy to create bindings
for different languages on top of this API.
2. Create a binding to some better suited, dynamic, scripting language