+ CFlags: -g3
+ CPPFlags:
+ LDFlags:
+
+ Context backend: ucontext
+ Compile Gtnets: 0
+ path:
+ Compile Java: 1
+ Compile Lua: 1
+ Compile Ruby: 0
+
+ Maintainer mode: on
+ Supernovae mode: off
+
+ Simgrid dependencies: dl -llua5.1
+ Gras dependencies: pthread
+ Ruby dependencies:
+ Smpi dependencies:
+
+ USER_PREFIX: /usr/local
+ INSTALL_PREFIX: /usr/local
+
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk
+\endverbatim
+
+\li Mode supernovae
+
+cmake -Dsupernovae=on ./
+\verbatim GTnetS doesn't works : set -Ddisable_gtnets=on
+with_context auto change to ucontext
+(skaddr)
+(sksize)
+Make : src/simgrid.jar with : /usr/bin/javac
+Make examples/java with : /usr/bin/javac
+
+Configuration of package `simgrid' (revision 7228M) on arch (=4):
+ BUILDNAME : SUPERNOVAE
+ SITE : Linux_Ubuntu 9.10_x86_64
+
+ Compiler: c++ : /usr/bin/c++
+ version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+ c : /usr/bin/gcc
+ version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+
+ CFlags: -O3 -finline-functions -funroll-loops -fno-strict-aliasing -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror -g3
+ CPPFlags:
+ LDFlags:
+
+ Context backend: ucontext
+ Compile Gtnets: 0
+ path:
+ Compile Java: 1
+ Compile Lua: 1
+ Compile Ruby: 0
+
+ Maintainer mode: off
+ Supernovae mode: on
+
+ Simgrid dependencies: dl -llua5.1
+ Gras dependencies: pthread
+ Ruby dependencies:
+ Smpi dependencies:
+
+ USER_PREFIX: /usr/local
+ INSTALL_PREFIX: /usr/local
+
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk
+\endverbatim
+
+\li Mode GTnetS
+
+cmake -Dgtnets_path=/home/navarrop/Bureau/usr/ ./
+\verbatim with_context auto change to ucontext
+(skaddr)
+(sksize)
+Make : src/simgrid.jar with : /usr/bin/javac
+Make examples/java with : /usr/bin/javac
+
+Configuration of package `simgrid' (revision 7228M) on arch (=4):
+ BUILDNAME : GTNETS
+ SITE : Linux_Ubuntu 9.10_x86_64
+
+ Compiler: c++ : /usr/bin/c++
+ version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+ c : /usr/bin/gcc
+ version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+
+ CFlags: -L/home/navarrop/Bureau/usr/lib -I/home/navarrop/Bureau/usr/include/gtnets -g3
+ CPPFlags: -L/home/navarrop/Bureau/usr/lib -I/home/navarrop/Bureau/usr/include/gtnets
+ LDFlags:
+
+ Context backend: ucontext
+ Compile Gtnets: 1
+ path: /home/navarrop/Bureau/usr
+ Compile Java: 1
+ Compile Lua: 1
+ Compile Ruby: 0
+
+ Maintainer mode: off
+ Supernovae mode: off
+
+ Simgrid dependencies: dl -llua5.1 -lgtnets
+ Gras dependencies: pthread
+ Ruby dependencies:
+ Smpi dependencies:
+
+ USER_PREFIX: /usr/local
+ INSTALL_PREFIX: /usr/local
+
+INFO -->> Take care to have export LD_LIBRARY_PATH before run make command for make examples with gtnets
+copy and paste : export LD_LIBRARY_PATH=/home/navarrop/Bureau/usr/lib/:$LD_LIBRARY_PATH
+
+
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk
+\endverbatim
+
+\subsection faq_cmakeinstall How to install with cmake?
+
+\subsubsection faq_cmakeinstall1 From svn.
+
+\verbatim
+cmake -Denable_maintainer_mode=on -Dprefix=/home/navarrop/Bureau/install_simgrid ./
+make
+make install-simgrid
+\endverbatim
+
+\subsubsection faq_cmakeinstall2 From a distrib
+
+\verbatim
+cmake -Dprefix=/home/navarrop/Bureau/install_simgrid ./
+make
+make install-simgrid
+\endverbatim
+
+\subsection faq_screenshot Screenshot
+
+\verbatim
+navarrop@caraja:~$ cd Bureau/simgrid-trunk/
+navarrop@caraja:~/Bureau/simgrid-trunk$ cmake ./
+
+GTnetS doesn't works : set -Ddisable_gtnets=on <-|some warnings are printed
+with_context auto change to ucontext <-|
+(skaddr) <--info (needed)
+(sksize) <--info (needed)
+Make : src/simgrid.jar with : /usr/bin/javac <--info (if java)
+Make examples/java with : /usr/bin/javac <--info (if java)
+
+Configuration of package `simgrid' (revision 7209M) on arch (=4):
+ BUILDNAME : UCONTEXT <-- name of the compilation regarding to cdash
+ SITE : Linux_Ubuntu 9.10_x86_64 <-- distribution of the local machine regarding to cdash
+
+ Compiler: c++ : /usr/bin/c++
+ version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+ c : /usr/bin/gcc
+ version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+
+ CFlags: -g3
+ CPPFlags:
+ LDFlags:
+
+ Context backend: ucontext
+ Compile Gtnets: 0
+ path:
+ Compile Java: 1
+ Compile Lua: 1
+ Compile Ruby: 0
+
+ Maintainer mode: OFF
+ Supernovae mode: OFF
+
+ Simgrid dependencies: -ldl -llua5.1
+ Gras dependencies: pthread
+ Ruby dependencies:
+ Smpi dependencies:
+
+ USER_PREFIX: /usr/local
+ INSTALL_PREFIX: /usr/local
+
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk
+\endverbatim
+Here all options are checked and printed. If it doesn't match with your configuration
+it is probably due to a wrong configuration.
+
+\subsection faq_cmakehowto How to modified sources files for developers
+
+\subsubsection faq_cmakehowto1 Add an executable or examples.
+
+If you want make an executable you have to create a CMakeList.txt to the src directory.
+You must specified where to create the executable, source list, dependencies and the name of the binary.
+
+\verbatim
+cmake_minimum_required(VERSION 2.6)
+
+set(EXECUTABLE_OUTPUT_PATH "./")
+set(LIBRARY_OUTPUT_PATH "${PROJECT_DIRECTORY}/lib")
+
+add_executable(get_sender get_sender.c) #add_executable(<name_of_target> <src list>)
+
+### Add definitions for compile
+target_link_libraries(get_sender simgrid m pthread -fprofile-arcs) #target_link_libraries(<name_of_targe> <dependencies>)
+\endverbatim
+
+Then you have to modified <project/directory>/buildtools/Cmake/src/CMakeMakeExeLib.txt and add
+this line :
+\verbatim
+add_subdirectory(${PROJECT_DIRECTORY}/<path_where_is_CMakeList.txt>)
+\endverbatim
+
+\subsubsection faq_cmakehowto2 Delete/add sources to lib.
+
+If you want modified, add or delete source files from a library you have to edit <project/directory>/buildtools/Cmake/src/CMakeDefinePackages.txt
+
+\verbatim
+set(JMSG_JAVA_SRC
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/MsgException.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/JniException.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/NativeException.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/HostNotFoundException.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/ProcessNotFoundException.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Msg.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Process.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Host.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Task.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/MsgNative.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/ApplicationHandler.java
+ ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Sem.java
+)
+\endverbatim
+
+\subsubsection faq_cmakehowto3 Add test
+
+If you want modified, add or delete tests you have to edit <project/directory>/buildtools/Cmake/src/CMakeTest.txt
+with this function : ADD_TEST(<name> <bin> <ARGS>)
+
+\verbatim
+add_test(test-simdag-1 ${PROJECT_DIRECTORY}/testsuite/simdag/sd_test --cfg=path:${PROJECT_DIRECTORY}/testsuite/simdag small_platform_variable.xml)
+\endverbatim
+
+\subsection faq_cmakeExplain Explaination of sources files for cmake
+
+\li CMakeLists.txt
+
+Those files are the "main parts". One located at the project directory call all the cmake sources files. The others
+are little projects called by the first for make examples.
+
+\li CMakeCompleteInFiles.txt
+
+Complete all .in files and define Variables for h files
+
+\li CMakeDocs.txt
+
+This file make the html documentation.
+
+\li CMakeMakeExeLib.txt
+
+Here are callled all "CMakeLists.txt" for make executables and libraries.
+
+\li CMakePrintArgs.txt
+
+This file is called at the end of the build for summarize environment variables.
+
+\li CMakeDefinePackages.txt
+
+Here is defined sources packages for compiling libs.
+
+\li CMakeFlags.txt
+
+Defined flags which are used for compiling sources.
+
+\li CMakeSupernovae.txt
+
+Here are made files for the supernovae mode.
+
+\li CMakeDistrib.txt
+
+Here is defined packages for install simgrid and make a distribution.
+
+\li CMakeMaintainerMode.txt
+
+Part where are generated source files for maintainer mode.
+
+\li CMakeOption.txt
+
+Here are defined options and initialized values.
+
+\li CMakeTest.txt
+
+All tests are listed.
+
+\li CTestConfig.cmake
+
+Properties which link tests with dashboard.
+
+\subsection faq_cmakeList List of files added for cmake
+
+Here is a list of files involved into cmake build (relative to project directory path) :
+\verbatim
+
+Cmake sources:
+ ./doc/CMakeLists.txt
+ ./buildtools/Cmake/src/CMakeCompleteInFiles.txt
+ ./buildtools/Cmake/src/CMakeDocs.txt
+ ./buildtools/Cmake/src/CMakeMakeExeLib.txt
+ ./buildtools/Cmake/src/CMakePrintArgs.txt
+ ./buildtools/Cmake/src/CMakeDefinePackages.txt
+ ./buildtools/Cmake/src/CMakeFlags.txt
+ ./buildtools/Cmake/src/CMakeSupernovae.txt
+ ./buildtools/Cmake/src/CMakeDistrib.txt
+ ./buildtools/Cmake/src/CMakeMaintainerMode.txt
+ ./buildtools/Cmake/src/CMakeOption.txt
+ ./buildtools/Cmake/src/CMakeTest.txt
+ ./buildtools/Cmake/src/CTestConfig.cmake
+
+Test files for define properties :
+ ./buildtools/Cmake/prog_test/prog_GRAS_ARCH.c
+ ./buildtools/Cmake/prog_test/prog_max_size.c
+ ./buildtools/Cmake/prog_test/prog_sem_init.c
+ ./buildtools/Cmake/prog_test/prog_stackgrowth.c
+ ./buildtools/Cmake/prog_test/prog_vsnprintf.c
+ ./buildtools/Cmake/prog_test/prog_AC_CHECK_MCSC.c
+ ./buildtools/Cmake/prog_test/prog_GRAS_CHECK_STRUCT_COMPACTION.c
+ ./buildtools/Cmake/prog_test/prog_mutex_timedlock.c
+ ./buildtools/Cmake/prog_test/prog_sem_timedwait.c
+ ./buildtools/Cmake/prog_test/prog_stacksetup.c
+ ./buildtools/Cmake/prog_test/prog_getline.c
+ ./buildtools/Cmake/prog_test/prog_gtnets.cpp
+ ./buildtools/Cmake/prog_test/prog_printf_null.c
+ ./buildtools/Cmake/prog_test/prog_snprintf.c
+ ./buildtools/Cmake/prog_test/prog_va_copy.c
+
+CMakeLists for each binaries or examples:
+ ./CMakeLists.txt
+ ./src/CMakeLists.txt
+ ./teshsuite/gras/empty_main/CMakeLists.txt
+ ./teshsuite/gras/small_sleep/CMakeLists.txt
+ ./teshsuite/gras/datadesc/CMakeLists.txt
+ ./teshsuite/gras/msg_handle/CMakeLists.txt
+ ./teshsuite/simdag/CMakeLists.txt
+ ./teshsuite/simdag/partask/CMakeLists.txt
+ ./teshsuite/simdag/platforms/CMakeLists.txt
+ ./teshsuite/simdag/network/CMakeLists.txt
+ ./teshsuite/simdag/network/mxn/CMakeLists.txt
+ ./teshsuite/simdag/network/p2p/CMakeLists.txt
+ ./teshsuite/xbt/CMakeLists.txt
+ ./teshsuite/msg/CMakeLists.txt
+ ./tools/gras/CMakeLists.txt
+ ./tools/tesh/CMakeLists.txt
+ ./testsuite/simdag/CMakeLists.txt
+ ./testsuite/xbt/CMakeLists.txt
+ ./testsuite/surf/CMakeLists.txt
+ ./examples/gras/properties/CMakeLists.txt
+ ./examples/gras/ping/CMakeLists.txt
+ ./examples/gras/pmm/CMakeLists.txt
+ ./examples/gras/mmrpc/CMakeLists.txt
+ ./examples/gras/synchro/CMakeLists.txt
+ ./examples/gras/timer/CMakeLists.txt
+ ./examples/gras/mutual_exclusion/simple_token/CMakeLists.txt
+ ./examples/gras/spawn/CMakeLists.txt
+ ./examples/gras/chrono/CMakeLists.txt
+ ./examples/gras/rpc/CMakeLists.txt
+ ./examples/gras/all2all/CMakeLists.txt
+ ./examples/simdag/properties/CMakeLists.txt
+ ./examples/simdag/CMakeLists.txt
+ ./examples/simdag/metaxml/CMakeLists.txt
+ ./examples/simdag/dax/CMakeLists.txt
+ ./examples/smpi/CMakeLists.txt
+ ./examples/amok/bandwidth/CMakeLists.txt
+ ./examples/amok/saturate/CMakeLists.txt
+ ./examples/msg/priority/CMakeLists.txt
+ ./examples/msg/properties/CMakeLists.txt
+ ./examples/msg/migration/CMakeLists.txt
+ ./examples/msg/gtnets/CMakeLists.txt
+ ./examples/msg/parallel_task/CMakeLists.txt
+ ./examples/msg/trace/CMakeLists.txt
+ ./examples/msg/suspend/CMakeLists.txt
+ ./examples/msg/masterslave/CMakeLists.txt
+ ./examples/msg/actions/CMakeLists.txt
+ ./examples/msg/sendrecv/CMakeLists.txt
+\endverbatim
+
+\section faq_howto Feature related questions
+
+\subsection faq_MIA "Could you please add (your favorite feature here) to SimGrid?"
+
+Here is the deal. The whole SimGrid project (MSG, SURF, GRAS, ...) is
+meant to be kept as simple and generic as possible. We cannot add
+functions for everybody's needs when these functions can easily be
+built from the ones already in the API. Most of the time, it is
+possible and when it was not possible we always have upgraded the API
+accordingly. When somebody asks us a question like "How to do that?
+Is there a function in the API to simply do this?", we're always glad
+to answer and help. However if we don't need this code for our own
+need, there is no chance we're going to write it... it's your job! :)
+The counterpart to our answers is that once you come up with a neat
+implementation of this feature (task duplication, RPC, thread
+synchronization, ...), you should send it to us and we will be glad to
+add it to the distribution. Thus, other people will take advantage of
+it (and we don't have to answer this question again and again ;).
+
+You'll find in this section a few "Missing In Action" features. Many
+people have asked about it and we have given hints on how to simply do
+it with MSG. Feel free to contribute...
+
+\subsection faq_MIA_MSG MSG features
+
+\subsubsection faq_MIA_examples I want some more complex MSG examples!
+
+Many people have come to ask me a more complex example and each time,
+they have realized afterward that the basics were in the previous three
+examples.
+
+Of course they have often been needing more complex functions like
+MSG_process_suspend(), MSG_process_resume() and
+MSG_process_isSuspended() (to perform synchronization), or
+MSG_task_Iprobe() and MSG_process_sleep() (to avoid blocking
+receptions), or even MSG_process_create() (to design asynchronous
+communications or computations). But the examples are sufficient to
+start.
+
+We know. We should add some more examples, but not really some more
+complex ones... We should add some examples that illustrate some other
+functionalists (like how to simply encode asynchronous
+communications, RPC, process migrations, thread synchronization, ...)
+and we will do it when we will have a little bit more time. We have
+tried to document the examples so that they are understandable. Tell
+us if something is not clear and once again feel free to participate!
+:)
+
+\subsubsection faq_MIA_taskdup Missing in action: MSG Task duplication/replication
+
+There is no task duplication in MSG. When you create a task, you can
+process it or send it somewhere else. As soon as a process has sent
+this task, he doesn't have this task anymore. It's gone. The receiver
+process has got the task. However, you could decide upon receiving to
+create a "copy" of a task but you have to handle by yourself the
+semantic associated to this "duplication".
+
+As we already told, we prefer keeping the API as simple as
+possible. This kind of feature is rather easy to implement by users
+and the semantic you associate really depends on people. Having a
+*generic* task duplication mechanism is not that trivial (in
+particular because of the data field). That is why I would recommand
+that you write it by yourself even if I can give you advice on how to
+do it.
+
+You have the following functions to get informations about a task:
+MSG_task_get_name(), MSG_task_get_compute_duration(),
+MSG_task_get_remaining_computation(), MSG_task_get_data_size(),
+and MSG_task_get_data().
+
+You could use a dictionary (#xbt_dict_t) of dynars (#xbt_dynar_t). If
+you still don't see how to do it, please come back to us...
+
+\subsubsection faq_MIA_asynchronous I want to do asynchronous communications in MSG
+
+Up until now, there is no asynchronous communications in MSG. However,
+you can create as many process as you want so you should be able to do
+whatever you want... I've written a queue module to help implementing
+some asynchronous communications at low cost (creating thousands of
+process only to handle communications may be problematic in term of
+performance at some point). I'll add it in the distribution asap.
+
+\subsubsection faq_MIA_thread_synchronization I need to synchronize my MSG processes
+
+You obviously cannot use pthread_mutexes of pthread_conds. The best
+thing would be to propose similar structures. Unfortunately, we
+haven't found time to do it yet. However you can try to play with
+MSG_process_suspend() and MSG_process_resume(). You can even do some
+synchronization with fake communications (using MSG_task_get(),
+MSG_task_put() and MSG_task_Iprobe()).
+
+\subsubsection faq_MIA_host_load Where is the get_host_load function hidden in MSG?
+
+There is no such thing because its semantic wouldn't be really
+clear. Of course, it is something about the amount of host throughput,
+but there is as many definition of "host load" as people asking for
+this function. First, you have to remember that resource availability
+may vary over time, which make any load notion harder to define.
+
+It may be instantaneous value or an average one. Moreover it may be only the
+power of the computer, or may take the background load into account, or may
+even take the currently running tasks into account. In some SURF models,
+communications have an influence on computational power. Should it be taken
+into account too?
+
+First of all, it's near to impossible to predict the load beforehands in the
+simulator since it depends on too much parameters (background load
+variation, bandwidth sharing algorithmic complexity) some of them even being
+not known beforehands (other task starting at the same time). So, getting
+this information is really hard (just like in real life). It's not just that
+we want MSG to be as painful as real life. But as it is in some way
+realistic, we face some of the same problems as we would face in real life.
+
+How would you do it for real? The most common option is to use something
+like NWS that performs active probes. The best solution is probably to do
+the same within MSG, as in next code snippet. It is very close from what you
+would have to do out of the simulator, and thus gives you information that
+you could also get in real settings to not hinder the realism of your
+simulation.
+
+\verbatim
+double get_host_load() {
+ m_task_t task = MSG_task_create("test", 0.001, 0, NULL);