- C compiler, C++ compiler, make and friends. SimGrid is rather
demanding on the compiler. We use the C++11 standard, and older
compilers tend to fail on us. It seems that g++ 5.0 or higher is
- required nowadays (because of boost).
+ required nowadays (because of boost).
+ SimGrid compiles well with `clang` too.
- perl (but you may try to go without it)
- We use cmake to configure our compilation
([download page](http://www.cmake.org/cmake/resources/software.html)).
- You need cmake version 2.8.8 or higher. You may want to use ccmake
- for a graphical interface over cmake.
+ You need cmake version 2.8.8 or higher.
+ `ccmake` provides a nicer graphical interface compared to `cmake`.
+ Press `t` in `ccmake` if you need to see absolutely all
+ configuration options (e.g., if your python installation is not standard).
- boost:
- Debian / Ubuntu: `apt-get install libboost-dev libboost-context-dev`
- Max OS X: with [fink](http://www.finkproject.org/): `fink install boost1.53.nopython`,
or with homebrew: `brew install boost`
- Java (if you want to build the Java bindings):
- - Debian / Ubuntu: `apt-get install default-jdk libgcj16-dev`
+ - Debian / Ubuntu: `apt-get install default-jdk libgcj17-dev` (any
+ version of libgcj will do it; you can use libgcj16-dev or libgcj18-dev
+ instead, depending on your version of Debian/Ubuntu)
- Mac OS X or Windows: Grab a [full JDK](http://www.oracle.com/technetwork/java/javase/downloads)
- - Lua (if you want to build with lua enabled):
+ - Lua (if you want to build with lua enabled): Your version of Lua
+ must be 5.3. SimGrid won't work with Lua 5.2 nor with 5.1, and
+ probably not with Lua 5.4 either.
- Debian / Ubuntu: `apt-get install liblua5.3-dev lua5.3`
- Windows: choco install lua53
- From the source: you need to patch the sources to build dynamic libraries
*
* \param task a memory location for storing a #msg_task_t.
* \param alias name of the mailbox to receive the task from
- * \param rate limit the reception to rate bandwidth
+ * \param rate limit the reception to rate bandwidth (byte/sec)
+ *
+ * The rate parameter can be used to receive a task with a limited
+ * bandwidth (smaller than the physical available value). Use
+ * MSG_task_receive() if you don't limit the rate (or pass -1 as a
+ * rate value do disable this feature).
*
* \return Returns
* #MSG_OK if the task was successfully received,
* \param task a memory location for storing a #msg_task_t.
* \param alias name of the mailbox to receive the task from
* \param timeout is the maximum wait time for completion (if -1, this call is the same as #MSG_task_receive)
- * \param rate limit the reception to rate bandwidth
+ * \param rate limit the reception to rate bandwidth (byte/sec)
+ *
+ * The rate parameter can be used to send a task with a limited
+ * bandwidth (smaller than the physical available value). Use
+ * MSG_task_receive() if you don't limit the rate (or pass -1 as a
+ * rate value do disable this feature).
*
* \return Returns
* #MSG_OK if the task was successfully received,
* \param alias name of the mailbox to receive the task from
* \param timeout is the maximum wait time for completion (provide -1 for no timeout)
* \param host a #msg_host_t host from where the task was sent
- * \param rate limit the reception to rate bandwidth
+ * \param rate limit the reception to rate bandwidth (byte/sec)
+ *
+ * The rate parameter can be used to receive a task with a limited
+ * bandwidth (smaller than the physical available value). Use
+ * MSG_task_receive_ext() if you don't limit the rate (or pass -1 as a
+ * rate value do disable this feature).
*
* \return Returns
* #MSG_OK if the task was successfully received,
*
* \param task a #msg_task_t to send on another location.
* \param alias name of the mailbox to sent the task to
- * \param maxrate the maximum communication rate for sending this task .
+ * \param maxrate the maximum communication rate for sending this task (byte/sec).
* \return the msg_comm_t communication created
*/
msg_comm_t MSG_task_isend_bounded(msg_task_t task, const char *alias, double maxrate)
* <a href="http://lists.gforge.inria.fr/pipermail/simgrid-user/2011-November/002649.html">this thread</a>
* in the SimGrid-user mailing list archive.
*
+ * The rate parameter can be used to send a task with a limited
+ * bandwidth (smaller than the physical available value). Use
+ * MSG_task_dsend() if you don't limit the rate (or pass -1 as a rate
+ * value do disable this feature).
+ *
* \param task a #msg_task_t to send on another location.
* \param alias name of the mailbox to sent the task to
* \param cleanup a function to destroy the task if the
* communication fails, e.g. MSG_task_destroy
* (if nullptr, no function will be called)
- * \param maxrate the maximum communication rate for sending this task
+ * \param maxrate the maximum communication rate for sending this task (byte/sec)
*
*/
void MSG_task_dsend_bounded(msg_task_t task, const char *alias, void_f_pvoid_t cleanup, double maxrate)
/** \ingroup msg_task_usage
* \brief Starts listening for receiving a task from an asynchronous communication at a given rate.
*
+ * The rate parameter can be used to receive a task with a limited
+ * bandwidth (smaller than the physical available value). Use
+ * MSG_task_irecv() if you don't limit the rate (or pass -1 as a rate
+ * value do disable this feature).
+ *
* \param task a memory location for storing a #msg_task_t. has to be valid until the end of the communication.
* \param name of the mailbox to receive the task on
- * \param rate limit the bandwidth to the given rate
+ * \param rate limit the bandwidth to the given rate (byte/sec)
* \return the msg_comm_t communication created
*/
msg_comm_t MSG_task_irecv_bounded(msg_task_t *task, const char *name, double rate)
* This is a blocking function, the execution flow will be blocked until the task is sent. The maxrate parameter allows
* the application to limit the bandwidth utilization of network links when sending the task.
*
+ * The maxrate parameter can be used to send a task with a limited
+ * bandwidth (smaller than the physical available value). Use
+ * MSG_task_send() if you don't limit the rate (or pass -1 as a rate
+ * value do disable this feature).
+ *
* \param task the task to be sent
* \param alias the mailbox name to where the task is sent
- * \param maxrate the maximum communication rate for sending this task
+ * \param maxrate the maximum communication rate for sending this task (byte/sec)
*
* \return Returns #MSG_OK if the task was successfully sent,
* #MSG_HOST_FAILURE, or #MSG_TRANSFER_FAILURE otherwise.
*
* This is a blocking function, the execution flow will be blocked until the task is sent or the timeout is achieved.
*
+ * The maxrate parameter can be used to send a task with a limited
+ * bandwidth (smaller than the physical available value). Use
+ * MSG_task_send_with_timeout() if you don't limit the rate (or pass -1 as a rate
+ * value do disable this feature).
+ *
* \param task the task to be sent
* \param alias the mailbox name to where the task is sent
* \param timeout is the maximum wait time for completion (if -1, this call is the same as #MSG_task_send)
- * \param maxrate the maximum communication rate for sending this task
+ * \param maxrate the maximum communication rate for sending this task (byte/sec)
*
* \return Returns #MSG_OK if the task was successfully sent,
* #MSG_HOST_FAILURE, or #MSG_TRANSFER_FAILURE, or #MSG_TIMEOUT otherwise.