X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/92fdb2e950a38e5b3fdf43a07bfa41b5c3f291ec..8bca872ed1a62f660c0d5da333eece9edb1d05a4:/doc/FAQ.doc
diff --git a/doc/FAQ.doc b/doc/FAQ.doc
index 766cc8366c..aecaa28564 100644
--- a/doc/FAQ.doc
+++ b/doc/FAQ.doc
@@ -4,7 +4,7 @@
\section faq_simgrid I'm new to SimGrid. I have some questions. Where should I start?
-You are at the right place... Having a look to these
+You are at the right place... Having a look to these
the tutorial slides
(or to these old slides,
or to these
@@ -88,263 +88,7 @@ little more tricky than I would have expected, but the work is moving
fast forward [2006/05/13]. More languages are evaluated, but for now,
we do not feel a real demand for any other language. Please speak up!
-\section faq_installation Installing the SimGrid library
-
-Many people have been asking me questions on how to use SimGrid. Quite
-often, the questions were not really about SimGrid but on the
-installation process. This section is intended to help people that are
-not familiar with compiling C files under UNIX. If you follow these
-instructions and still have some troubles, drop an e-mail to
-.
-
-\subsection faq_compiling Compiling SimGrid from a stable archive
-
-First of all, you need to download the latest version of SimGrid from
-here.
-Suppose you have uncompressed SimGrid in some temporary location of
-your home directory (say /home/joe/tmp/simgrid-3.0.1 ). The
-simplest way to use SimGrid is to install it in your home
-directory. Change your directory to
-/home/joe/tmp/simgrid-3.0.1 and type
-
-\verbatim
-./configure --prefix=$HOME
-make
-make install
-\endverbatim
-
-If at some point, something fails, check the section \ref faq_trouble_compil .
-If it does not help, you can report this problem to the
-list but, please, avoid sending a laconic mail like "There is a problem. Is it
-okay?". Send the config.log file which is automatically generated by
-configure. Try to capture both the standard output and the error output of the
-make command with script. There is no way for us to help you
-without the relevant bits of information.
-
-Now, the following directory should have been created :
-
- \li /home/joe/doc/simgrid/html/
- \li /home/joe/lib/
- \li /home/joe/include/
-
-SimGrid is not a binary, it is a library. Both a static and a dynamic
-version are available. Here is what you can find if you try a ls
-/home/joe/lib:
-
-\verbatim libsimgrid.a libsimgrid.la libsimgrid.so libsimgrid.so.0 libsimgrid.so.0.0.1
-\endverbatim
-
-Thus, there is two ways to link your program with SimGrid:
- \li Either you use the static version, e.g
-\verbatim gcc libsimgrid.a -o MainProgram MainProgram.c
-\endverbatim
- In this case, all the SimGrid functions are directly
- included in MainProgram (hence a bigger binary).
- \li Either you use the dynamic version (the preferred method)
-\verbatim gcc -lsimgrid -o MainProgram MainProgram.c
-\endverbatim
- In this case, the SimGrid functions are not included in
- MainProgram and you need to set your environment
- variable in such a way that libsimgrid.so will be
- found at runtime. This can be done by adding the following
- line in your .bashrc (if you use bash and if you have
- installed the SimGrid libraries in your home directory):
-\verbatim export LD_LIBRARY_PATH=$HOME/lib/:$LD_LIBRARY_PATH
-\endverbatim
-
-\subsection faq_compiling_java Java bindings don't get compiled
-
-The configure script detects automatically whether you have the
-softwares needed to use the Java bindings or not. At the end of the
-configure, you can see the configuration picked by the script, which
-should look similar to
-\verbatim Configuration of package simgrid' (version 3.3.4-svn) on
-little64 (=4):
-
- Compiler: gcc (version: )
-
- 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 Java: no
-
- Maintainer mode: no
- Supernovae mode: yes
-\endverbatim
-
-In this example, Java backends won't be compiled.
-
-On Debian-like systems (which includes ubuntu), you need the following
-packages: sun-java6-jdk libgcj10-dev. If you cannot find the
-libgcj10-dev, try another version, like libgcj9-dev (on Ubuntu before
-9.10) or libgcj11-dev (not released yet, but certainly one day).
-Please note that you need to activate the contrib and non-free
-repositories in Debian, and the universe ones in Ubuntu. Java comes at
-this price...
-
-\subsection faq_compiling_snapshoot SimGrid development snapshots
-
-We have very high standards on software quality, and we are reluctant releasing
-a stable release as long as there is still some known bug in the code base. In
-addition, we added quite an extensive test base, making sure that we correctly
-test the most important parts of the tool.
-
-As an unfortunate conclusion, there may be some time between the stable
-releases. If you want to benefit from the most recent features we introduced,
-but don't want to take the risk of an untested version from the SVN, then
-development snapshots are done for you.
-
-These are pre-releases of SimGrid that still fail some tests about features
-that almost nobody use, or on platforms not being in our core target (which is
-Linux, Mac, other Unixes and Windows, from the most important to the less
-one). That means that using this development releases should be safe for most
-users.
-
-These archives can be found on
-this web page. Once you
-got the lastest archive, you can compile it just like any archive (see above).
-
-\subsection faq_compiling_svn Compiling SimGrid from the SVN
-
-The project development takes place in the SVN, where all changes are
-committed when they happen. Then every once in a while, we make sure that the
-code quality meets our standard and release an archive from the code in the
-SVN. We afterward go back to the development in the SVN. So, if you need a
-recently added feature and can afford some little problem with the stability
-of the lastest features, you may want to use the SVN version instead of a
-released one.
-
-For that, you first need to get the "simgrid" module from
-here.
-
-You won't find any configure and a few other things
-(Makefile.in's, documentation, ...) will be missing as well. The
-reason for that is that all these files have to be regenerated using the
-latest versions of autoconf, libtool, automake
-(>1.9) and doxygen (>1.4). To generate the configure and
-the Makefile.in's, you just have to launch the bootstrap
-command that resides in the top of the source tree. Then just follow the
-instructions of Section \ref faq_compiling.
-
-We insist on the fact that you really need the latest versions of
-autoconf, automake and libtool. Doing this step on exotic architectures/systems
-(i.e. anything different from a recent linux distribution) may be
-... uncertain. If you need to compile the SVN version on a machine where all these
-dependencies are not met, the easiest is to do make dist in the SVN
-directory of another machine where all dependencies are met. It will create an
-archive you may deploy on other sites just as a regular stable release.
-
-In summary, the following commands will checkout the SVN, regenerate the
-configure script and friends, configure SimGrid and build it.
-
-\verbatim svn checkout svn://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk simgrid
-cd simgrid
-./bootstrap
-./configure --enable-maintainer-mode --prefix=
-make \endverbatim
-
-Then, if you want to install SimGrid on the current box, just do:
-\verbatim make install \endverbatim
-
-If you want to build an snapshot of the SVN to deploy it on another box (for
-example because the other machine don't have the autotools), do:
-\verbatim make dist \endverbatim
-
-Moreover, you should never call the autotools manually since you must run
-them in a specific order with specific arguments. Most of the times, the
-makefiles will automatically call the tools for you. When it's not possible
-(such as the first time you checkout the SVN), use the ./bootstrap command
-to call them explicitly.
-
-
-\subsection faq_setting_MSG Setting up your own MSG code
-
-Do not build your simulator by modifying the SimGrid examples. Go
-outside the SimGrid source tree and create your own working directory
-(say /home/joe/SimGrid/MyFirstScheduler/).
-
-Suppose your simulation has the following structure (remember it is
-just an example to illustrate a possible way to compile everything;
-feel free to organize it as you want).
-
- \li sched.h: a description of the core of the
- scheduler (i.e. which functions are can be used by the
- agents). For example we could find the following functions
- (master, forwarder, slave).
-
- \li sched.c: a C file including sched.h and
- implementing the core of the scheduler. Most of these
- functions use the MSG functions defined in section \ref
- msg_gos_functions.
-
- \li masterslave.c: a C file with the main function, i.e.
- the MSG initialization (MSG_global_init()), the platform
- creation (e.g. with MSG_create_environment()), the
- deployment phase (e.g. with MSG_function_register() and
- MSG_launch_application()) and the call to
- MSG_main()).
-
-To compile such a program, we suggest to use the following
-Makefile. It is a generic Makefile that we have used many times with
-our students when we teach the C language.
-
-\verbatim
-all: masterslave
-masterslave: masterslave.o sched.o
-
-INSTALL_PATH = $$HOME
-CC = gcc
-PEDANTIC_PARANOID_FREAK = -O0 -Wshadow -Wcast-align \
- -Waggregate-return -Wmissing-prototypes -Wmissing-declarations \
- -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \
- -Wmissing-noreturn -Wredundant-decls -Wnested-externs \
- -Wpointer-arith -Wwrite-strings -finline-functions
-REASONABLY_CAREFUL_DUDE = -Wall
-NO_PRAYER_FOR_THE_WICKED = -w -O2
-WARNINGS = $(REASONABLY_CAREFUL_DUDE)
-CFLAGS = -g $(WARNINGS)
-
-INCLUDES = -I$(INSTALL_PATH)/include
-DEFS = -L$(INSTALL_PATH)/lib/
-LDADD = -lm -lsimgrid
-LIBS =
-
-%: %.o
- $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS) $(LDADD) -o $@
-
-%.o: %.c
- $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) -c -o $@ $<
-
-clean:
- rm -f $(BIN_FILES) *.o *~
-.SUFFIXES:
-.PHONY : clean
-
-\endverbatim
-
-The first two lines indicates what should be build when typing make
-(masterslave) and of which files it is to be made of
-(masterslave.o and sched.o). This makefile assumes
-that you have set up correctly your LD_LIBRARY_PATH variable
-(look, there is a LDADD = -lm -lsimgrid). If you prefer using
-the static version, remove the -lsimgrid and add a
-$(INSTALL_PATH)/lib/libsimgrid.a on the next line, right
-after the LIBS = .
-
-More generally, if you have never written a Makefile by yourself, type
-in a terminal : info make and read the introduction. The
-previous example should be enough for a first try but you may want to
-perform some more complex compilations...
-
-\subsection faq_setting_GRAS Setting up your own GRAS code
-
-If you use the GRAS interface instead of the MSG one, then previous section
-is not the better source of information. Instead, you should check the GRAS
-tutorial in general, and the \ref GRAS_tut_tour_setup in particular.
-
-\section faq_cmake CMAKE
+\section faq_cmake Installing the SimGrid library with Cmake (since V3.4)
\subsection faq_intro Some generalitty
@@ -354,7 +98,7 @@ CMake is a family of tools designed to build, test and package software. CMake i
\subsubsection faq_intro2 Why cmake?
-CMake permits to developers to compil projects on different plateform. Then many tools are embedded like ctest for making test, a link to cdash for vizualise results but also test coverage and bug reports.
+CMake permits to developers to compil projects on different plateforms. Then many tools are embedded like ctest for making test, a link to cdash for vizualise results but also test coverage and bug reports.
\subsubsection faq_intro3 What cmake need?
@@ -364,10 +108,26 @@ CMake needs some prerequists like :
\li ccmake for graphical used of CMake
\li cmake (download page)
-\subsubsection faq_intro4 Cmake vs Autotools...
-
-TODO
-
+For windows only :
+ \li Visual C++ 2010 Express (download page)
+ \li cmake (download page)
+ \li Set CC, CXX, INCLUDE, LIB and RC to environment variables.
+\verbatim
+SET --> CC TO --> C:\MicrosoftVisualStudio10\VC\bin\cl
+ --> CXX --> C:\MicrosoftVisualStudio10\VC\bin\cl
+ --> INCLUDE --> C:\MicrosoftVisualStudio10\VC\include;C:\Program Files\Microsoft SDKs\Windows\v7.OA\Include
+ --> LIB --> C:\MicrosoftVisualStudio10\VC\lib;C:\Program Files\Microsoft SDKs\Windows\v7.OA\Lib
+ --> RC --> C:\Program Files\Microsoft SDKs\Windows\v7.OA\bin\RC
+\endverbatim
+ \li Add to environment variable "Path" the path where to find nmake executable and some needed files.
+\verbatim
+......
+;C\MicrosoftVisualStudio10\VC\bin
+;C\MicrosoftVisualStudio10\Common7\IDE
+;C:\Program Files\Microsoft SDKs\Windows\v7.OA\bin
+;C:\Program Files\Microsoft SDKs\Windows\v7.OA\Lib
+;C:\Program Files\Microsoft SDKs\Windows\v7.OA\bInclude
+\endverbatim
\subsection faq_cmakeoption Cmake options
\subsubsection faq_cmakeoption1 Liste of options
@@ -381,12 +141,14 @@ TODO
enable_ruby ON/OFF or TRUE/FALSE or 1/0
enable_compile_optimizations ON/OFF or TRUE/FALSE or 1/0
enable_compile_warnings ON/OFF or TRUE/FALSE or 1/0
+ enable_smpi ON/OFF or TRUE/FALSE or 1/0
enable_maintainer_mode ON/OFF or TRUE/FALSE or 1/0
enable_supernovae ON/OFF or TRUE/FALSE or 1/0
enable_tracing ON/OFF or TRUE/FALSE or 1/0
enable_coverage ON/OFF or TRUE/FALSE or 1/0
enable_memcheck ON/OFF or TRUE/FALSE or 1/0
- enable_print_message ON/OFF or TRUE/FALSE or 1/0
+ enable_model-checking ON/OFF or TRUE/FALSE or 1/0
+ enable_doc ON/OFF or TRUE/FALSE or 1/0
gtnets_path
prefix
@@ -406,44 +168,13 @@ TODO
\li enable_compile_optimizations : add flags "-O3 -finline-functions -funroll-loops -fno-strict-aliasing"
- \li enable_compile_warnings : add flags "-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"
+ \li enable_compile_warnings : add flags "-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"
+
+ \li enable_smpi : Set to true if you want to use smpi lib. Actually on simgrid v3.4.1 Mac doesn't support lib smpi.
+
+ \li enable_maintainer_mode : set to true it remakes some files.
- \li enable_maintainer_mode : set to true it remakes some files.
-\verbatim
-include/surf/simgrid_dtd.h
-include/xbt/graphxml.h
-
-src/cunit_unit.c
-src/ex_unit.c
-src/dynar_unit.c
-src/dict_unit.c
-src/set_unit.c
-src/swag_unit.c
-src/xbt_str_unit.c
-src/xbt_strbuff_unit.c
-src/xbt_sha_unit.c
-src/config_unit.c
-src/xbt_synchro_unit.c
-src/simgrid_units_main.c
-
-src/simdag/dax_dtd.c
-src/simdag/dax_dtd.h
-src/simdag/dax_dtd.l
-
-src/surf/simgrid_dtd.c
-src/surf/simgrid_dtd.l
-
-src/xbt/graphxml.c
-src/xbt/graphxml.l
-
-src/gras/DataDesc/ddt_parse.yy.c
-\endverbatim
\li enable_supernovae : set to true make one file for each lib and compile with those generated files.
-\verbatim
-/src/supernovae_sg.c
-/src/supernovae_gras.c
-/src/supernovae_smpi.c
-\endverbatim
\li enable_tracing : To enable the generation of simulation traces for visualization
@@ -451,7 +182,9 @@ src/gras/DataDesc/ddt_parse.yy.c
\li enable_memcheck : When set to true this option enable tests for memcheck.
- \li enable_print_message : This option when enable permits to see variables from gras_config.h
+ \li enable_model-checking : Enable the model checking when set to true.
+
+ \li enable_doc : Generate the documentation for simgrid with make command. (You can also make the doc manually with command : make html)
\li gtnets_path : Path to gtnets install directory (ex /usr)
@@ -463,7 +196,7 @@ src/gras/DataDesc/ddt_parse.yy.c
\subsubsection faq_cmakeoption3 Initialisation
-Those options are initialized the first time you launch \"cmake ./\" whithout specified option.
+Those options are initialized the first time you launch "cmake ." whithout specified option.
\verbatim
enable_gtnets on
@@ -472,12 +205,14 @@ enable_ruby on
enable_java off
enable_compile_optimizations off
enable_compile_warnings off
+enable_smpi on
enable_maintainer_mode off
enable_supernovae off
enable_tracing off
enable_coverage off
enable_memcheck off
-enable_print_message off
+enable_model-checking off
+enable_doc off
gtnets_path null
prefix null
@@ -487,7 +222,7 @@ with_context auto
\subsubsection faq_cmakeoption4 Option's cache and how to reset?
-When options have been set they are keep into a cache file named \"CMakeCache.txt\". So if you want
+When options have been set they are keep into a cache file named "CMakeCache.txt". So if you want
reset values you just delete this file located to the project directory.
\subsection faq_cmakecompilation Cmake compilation
@@ -506,17 +241,41 @@ make
\endverbatim
Then follow instructions.
+\subsubsection faq_cmakecompilation2bis Build out of source.
+
+As cmake generate many files used for compilation, we recommand to make a build directory.
+For examples you can make :
+
+\verbatim
+"navarrop@caraja:~/Developments$ cd simgrid/"
+"navarrop@caraja:~/Developments/simgrid$ mkdir build_directory"
+"navarrop@caraja:~/Developments/simgrid$ cd build_directory/"
+"navarrop@caraja:~/Developments/simgrid/build_directory$ cmake ../"
+"navarrop@caraja:~/Developments/simgrid/build_directory$ make"
+\endverbatim
+
+Or complety out of sources :
+
+\verbatim
+"navarrop@caraja:~/Developments$ mkdir build_dir"
+"navarrop@caraja:~/Developments$ cd build_dir/"
+"navarrop@caraja:~/Developments/build_dir$ cmake ../simgrid/"
+"navarrop@caraja:~/Developments/build_dir$ make"
+\endverbatim
+
+Those two kind of compilation permit to delete files created by compilation easier.
+
\subsubsection faq_cmakecompilation3 Resume of command line
\li CMake
\verbatim
-cmake ./ configure the project
+cmake configure the project
make build all targets
make VERBOSE=1 build all targets and print build command lines
-make test test all targets and summarize
+make check test all targets and summarize
make dist make the distrib
-make distcheck check the dist (make + make dist + make test)
-make install-simgrid install the project (doc/ lib/ include/)
+make distcheck check the dist (make + make dist + make check)
+make install install the project (doc/ lib/ include/)
make uninstall uninstall the project (doc/ lib/ include/)
make clean clean all targets
make java-clean clean files created by java option
@@ -525,7 +284,6 @@ make supernovae-clean clean supernovae files
make maintainer-clean clean maintainer files
make all-clean execute the 5 upper clean command
make html Create simgrid documentation
-make maintainer-clean Remove all files generated by mainainer mode
\endverbatim
When the project have been succesfully compiling and build you can make tests.
@@ -552,142 +310,144 @@ If you want to test before make a commit you can simply make "ctest -D Experimen
\li Mode maintainer
cmake -Denable_maintainer_mode=on ./
-\verbatim GTnetS doesn't works : set -Ddisable_gtnets=on
+\verbatim
+-- lookign for config.h
with_context auto change to ucontext
-(skaddr)
-(sksize)
-Make : src/simgrid.jar with : /usr/bin/javac
-Make examples/java with : /usr/bin/javac
+GIT_DATE : 2010-05-04~09-59-15
+GIT_VERSION : 53ec816
+GIT_SVN_VERSION : 7669
-Configuration of package `simgrid' (revision 7228M) on arch (=4):
- BUILDNAME : UCONTEXT
- SITE : Linux_Ubuntu 9.10_x86_64
+Configuration of package `simgrid' (revision 7669) on arch (=4):
+ BUILDNAME : UCONTEXT
+ SITE : Linux_2.6.31-21-generic_x86_64
+ Release : simgrid-3.4~rev7669
- 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
+ Compiler: c++ : /usr/bin/c++
+ version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+ Compiler: c : /usr/bin/gcc
+ version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1
- CFlags: -g3
- CPPFlags:
- LDFlags:
+ CFlags : -I/usr/lib/ruby/1.8/x86_64-linux -I/usr/include/lua5.1 -g3
+ CPPFlags:
+ LDFlags : -L/usr/lib/
Context backend: ucontext
- Compile Gtnets: 0
- path:
- Compile Java: 1
- Compile Lua: 1
- Compile Ruby: 0
-
- Maintainer mode: on
- Supernovae mode: off
+ Compile Gtnets : 0
+ Gtnets path :
+ Compile Java : 0
+ Compile Lua : 1
+ Compile Ruby : 1
+
+ Compile Smpi : ON
+ Maintainer mode: ON
+ Supernovae mode: OFF
+ Tracing mode : OFF
- Simgrid dependencies: dl -llua5.1
- Gras dependencies: pthread
- Ruby dependencies:
- Smpi dependencies:
+ Simgrid dependencies: -lm -lruby1.8 -module -ldl -llua5.1 -lrt
+ Gras dependencies : -lm -lpthread -lrt
+ 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
+-- Build files have been written to: /home/navarrop/Developments/simgrid
\endverbatim
\li Mode supernovae
cmake -Dsupernovae=on ./
-\verbatim GTnetS doesn't works : set -Ddisable_gtnets=on
+\verbatim
+-- lookign for config.h
with_context auto change to ucontext
-(skaddr)
-(sksize)
-Make : src/simgrid.jar with : /usr/bin/javac
-Make examples/java with : /usr/bin/javac
+GIT_DATE : 2010-05-04~09-59-15
+GIT_VERSION : 53ec816
+GIT_SVN_VERSION : 7669
-Configuration of package `simgrid' (revision 7228M) on arch (=4):
- BUILDNAME : SUPERNOVAE
- SITE : Linux_Ubuntu 9.10_x86_64
+Configuration of package `simgrid' (revision 7669) on arch (=4):
+ BUILDNAME : SUPERNOVAE
+ SITE : Linux_2.6.31-21-generic_x86_64
+ Release : simgrid-3.4~rev7669
- 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
+ Compiler: c++ : /usr/bin/c++
+ version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+ Compiler: 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:
+ 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 -I/usr/lib/ruby/1.8/x86_64-linux -I/usr/include/lua5.1 -g3
+ CPPFlags:
+ LDFlags : -L/usr/lib/
Context backend: ucontext
- Compile Gtnets: 0
- path:
- Compile Java: 1
- Compile Lua: 1
- Compile Ruby: 0
+ Compile Gtnets : 0
+ Gtnets path :
+ Compile Java : 0
+ Compile Lua : 1
+ Compile Ruby : 1
- Maintainer mode: off
- Supernovae mode: on
+ Compile Smpi : ON
+ Maintainer mode: OFF
+ Supernovae mode: OFF
+ Tracing mode : OFF
- Simgrid dependencies: dl -llua5.1
- Gras dependencies: pthread
- Ruby dependencies:
- Smpi dependencies:
+ Simgrid dependencies: -lm -lruby1.8 -module -ldl -llua5.1 -lrt
+ Gras dependencies : -lm -lpthread -lrt
+ 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
+-- Build files have been written to: /home/navarrop/Developments/simgrid
+
\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
+\verbatim
+-- lookign for config.h
+with_context auto change to ucontext
+GIT_DATE : 2010-05-04~09-59-15
+GIT_VERSION : 53ec816
+GIT_SVN_VERSION : 7669
-Configuration of package `simgrid' (revision 7228M) on arch (=4):
- BUILDNAME : GTNETS
- SITE : Linux_Ubuntu 9.10_x86_64
+Configuration of package `simgrid' (revision 7669) on arch (=4):
+ BUILDNAME : GTNETS
+ SITE : Linux_2.6.31-21-generic_x86_64
+ Release : simgrid-3.4~rev7669
- 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
+ Compiler: c++ : /usr/bin/c++
+ version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
+ Compiler: 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:
+ 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 -I/usr/lib/ruby/1.8/x86_64-linux -L/usr/lib -I/usr/include/gtnets -I/usr/include/lua5.1 -g3
+ CPPFlags: -L/usr/lib -I/usr/include/gtnets
+ LDFlags : -L/usr/lib/
Context backend: ucontext
- Compile Gtnets: 1
- path: /home/navarrop/Bureau/usr
- Compile Java: 1
- Compile Lua: 1
- Compile Ruby: 0
+ Compile Gtnets : 1
+ Gtnets path : /usr
+ Compile Java : 0
+ Compile Lua : 1
+ Compile Ruby : 1
- Maintainer mode: off
- Supernovae mode: off
+ Compile Smpi : ON
+ Maintainer mode: OFF
+ Supernovae mode: OFF
+ Tracing mode : OFF
- Simgrid dependencies: dl -llua5.1 -lgtnets
- Gras dependencies: pthread
- Ruby dependencies:
- Smpi dependencies:
+ Simgrid dependencies: -lm -lruby1.8 -module -ldl -llua5.1 -lgtnets -lrt
+ Gras dependencies : -lm -lpthread -lrt
+ 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
+-- Build files have been written to: /home/navarrop/Developments/simgrid
+
\endverbatim
\subsection faq_cmakeinstall How to install with cmake?
@@ -697,7 +457,7 @@ copy and paste : export LD_LIBRARY_PATH=/home/navarrop/Bureau/usr/lib/:$LD_LIBRA
\verbatim
cmake -Denable_maintainer_mode=on -Dprefix=/home/navarrop/Bureau/install_simgrid ./
make
-make install-simgrid
+make install
\endverbatim
\subsubsection faq_cmakeinstall2 From a distrib
@@ -705,59 +465,8 @@ make install-simgrid
\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
+make install
\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
@@ -778,7 +487,7 @@ add_executable(get_sender get_sender.c) #add_executable( )
\endverbatim
-Then you have to modified /buildtools/Cmake/src/CMakeMakeExeLib.txt and add
+Then you have to modified /buildtools/Cmake/MakeExeLib.cmake and add
this line :
\verbatim
add_subdirectory(${PROJECT_DIRECTORY}/)
@@ -786,7 +495,7 @@ add_subdirectory(${PROJECT_DIRECTORY}/)
\subsubsection faq_cmakehowto2 Delete/add sources to lib.
-If you want modified, add or delete source files from a library you have to edit /buildtools/Cmake/src/CMakeDefinePackages.txt
+If you want modified, add or delete source files from a library you have to edit /buildtools/Cmake/DefinePackages.cmake
\verbatim
set(JMSG_JAVA_SRC
@@ -807,154 +516,395 @@ set(JMSG_JAVA_SRC
\subsubsection faq_cmakehowto3 Add test
-If you want modified, add or delete tests you have to edit /buildtools/Cmake/src/CMakeTest.txt
+If you want modified, add or delete tests you have to edit /buildtools/Cmake/AddTests.cmake
with this function : ADD_TEST( )
\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
+\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 CompleteInFiles.cmake
+
+Complete all .in files and define Variables for h files
+
+\li GenerateDoc.cmake
+
+This file make the html documentation.
+
+\li MakeExeLib.cmake
+
+Here are callled all "CMakeLists.txt" for make executables and libraries.
+
+\li PrintArgs.cmake
+
+This file is called at the end of the build for summarize environment variables.
+
+\li DefinePackages.cmake
+
+Here is defined sources packages for compiling libs.
+
+\li Flags.cmake
+
+Defined flags which are used for compiling sources.
+
+\li Supernovae.cmake
+
+Here are made files for the supernovae mode.
+
+\li Distrib.cmake
+
+Here is defined packages for install simgrid and make a distribution.
+
+\li MaintainerMode.cmake
+
+Part where are generated source files for maintainer mode.
+
+\li Option.cmake
+
+Here are defined options and initialized values.
+
+\li AddTests.cmake
+
+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/AddTests.cmake
+ ./buildtools/Cmake/CompleteInFiles.cmake
+ ./buildtools/Cmake/CTestConfig.cmake
+ ./buildtools/Cmake/DefinePackages.cmake
+ ./buildtools/Cmake/Distrib.cmake
+ ./buildtools/Cmake/Flags.cmake
+ ./buildtools/Cmake/GenerateDocs.cmake
+ ./buildtools/Cmake/MaintainerMode.cmake
+ ./buildtools/Cmake/MakeExeLib.cmake
+ ./buildtools/Cmake/MakeExeLibWin.cmake
+ ./buildtools/Cmake/MakeJava.cmake
+ ./buildtools/Cmake/Option.cmake
+ ./buildtools/Cmake/PrintArgs.cmake
+ ./buildtools/Cmake/Supernovae.cmake
+
+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_installation Installing the SimGrid library with Autotools (valid until V3.3.4)
+
+Many people have been asking me questions on how to use SimGrid. Quite
+often, the questions were not really about SimGrid but on the
+installation process. This section is intended to help people that are
+not familiar with compiling C files under UNIX. If you follow these
+instructions and still have some troubles, drop an e-mail to
+.
+
+\subsection faq_compiling Compiling SimGrid from a stable archive
+
+First of all, you need to download the latest version of SimGrid from
+here.
+Suppose you have uncompressed SimGrid in some temporary location of
+your home directory (say /home/joe/tmp/simgrid-3.0.1 ). The
+simplest way to use SimGrid is to install it in your home
+directory. Change your directory to
+/home/joe/tmp/simgrid-3.0.1 and type
+
+\verbatim
+./configure --prefix=$HOME
+make
+make install
+\endverbatim
+
+If at some point, something fails, check the section \ref faq_trouble_compil .
+If it does not help, you can report this problem to the
+list but, please, avoid sending a laconic mail like "There is a problem. Is it
+okay?". Send the config.log file which is automatically generated by
+configure. Try to capture both the standard output and the error output of the
+make command with script. There is no way for us to help you
+without the relevant bits of information.
+
+Now, the following directory should have been created :
+
+ \li /home/joe/doc/simgrid/html/
+ \li /home/joe/lib/
+ \li /home/joe/include/
+
+SimGrid is not a binary, it is a library. Both a static and a dynamic
+version are available. Here is what you can find if you try a ls
+/home/joe/lib:
+
+\verbatim libsimgrid.a libsimgrid.la libsimgrid.so libsimgrid.so.0 libsimgrid.so.0.0.1
+\endverbatim
+
+Thus, there is two ways to link your program with SimGrid:
+ \li Either you use the static version, e.g
+\verbatim gcc libsimgrid.a -o MainProgram MainProgram.c
+\endverbatim
+ In this case, all the SimGrid functions are directly
+ included in MainProgram (hence a bigger binary).
+ \li Either you use the dynamic version (the preferred method)
+\verbatim gcc -lsimgrid -o MainProgram MainProgram.c
+\endverbatim
+ In this case, the SimGrid functions are not included in
+ MainProgram and you need to set your environment
+ variable in such a way that libsimgrid.so will be
+ found at runtime. This can be done by adding the following
+ line in your .bashrc (if you use bash and if you have
+ installed the SimGrid libraries in your home directory):
+\verbatim export LD_LIBRARY_PATH=$HOME/lib/:$LD_LIBRARY_PATH
+\endverbatim
+
+\subsection faq_compiling_java Java bindings don't get compiled
+
+The configure script detects automatically whether you have the
+softwares needed to use the Java bindings or not. At the end of the
+configure, you can see the configuration picked by the script, which
+should look similar to
+\verbatim Configuration of package simgrid' (version 3.3.4-svn) on
+little64 (=4):
+
+ Compiler: gcc (version: )
+
+ 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 Java: no
+
+ Maintainer mode: no
+ Supernovae mode: yes
+\endverbatim
+
+In this example, Java backends won't be compiled.
+
+On Debian-like systems (which includes ubuntu), you need the following
+packages: sun-java6-jdk libgcj10-dev. If you cannot find the
+libgcj10-dev, try another version, like libgcj9-dev (on Ubuntu before
+9.10) or libgcj11-dev (not released yet, but certainly one day).
+Please note that you need to activate the contrib and non-free
+repositories in Debian, and the universe ones in Ubuntu. Java comes at
+this price...
+
+\subsection faq_compiling_snapshoot SimGrid development snapshots
+
+We have very high standards on software quality, and we are reluctant releasing
+a stable release as long as there is still some known bug in the code base. In
+addition, we added quite an extensive test base, making sure that we correctly
+test the most important parts of the tool.
+
+As an unfortunate conclusion, there may be some time between the stable
+releases. If you want to benefit from the most recent features we introduced,
+but don't want to take the risk of an untested version from the SVN, then
+development snapshots are done for you.
+
+These are pre-releases of SimGrid that still fail some tests about features
+that almost nobody use, or on platforms not being in our core target (which is
+Linux, Mac, other Unixes and Windows, from the most important to the less
+one). That means that using this development releases should be safe for most
+users.
-\li CMakeLists.txt
+These archives can be found on
+this web page. Once you
+got the lastest archive, you can compile it just like any archive (see above).
-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.
+\subsection faq_compiling_svn Compiling SimGrid from the SVN
-\li CMakeCompleteInFiles.txt
+The project development takes place in the SVN, where all changes are
+committed when they happen. Then every once in a while, we make sure that the
+code quality meets our standard and release an archive from the code in the
+SVN. We afterward go back to the development in the SVN. So, if you need a
+recently added feature and can afford some little problem with the stability
+of the lastest features, you may want to use the SVN version instead of a
+released one.
-Complete all .in files and define Variables for h files
+For that, you first need to get the "simgrid" module from
+here.
-\li CMakeDocs.txt
+You won't find any configure and a few other things
+(Makefile.in's, documentation, ...) will be missing as well. The
+reason for that is that all these files have to be regenerated using the
+latest versions of autoconf, libtool, automake
+(>1.9) and doxygen (>1.4). To generate the configure and
+the Makefile.in's, you just have to launch the bootstrap
+command that resides in the top of the source tree. Then just follow the
+instructions of Section \ref faq_compiling.
-This file make the html documentation.
+We insist on the fact that you really need the latest versions of
+autoconf, automake and libtool. Doing this step on exotic architectures/systems
+(i.e. anything different from a recent linux distribution) may be
+... uncertain. If you need to compile the SVN version on a machine where all these
+dependencies are not met, the easiest is to do make dist in the SVN
+directory of another machine where all dependencies are met. It will create an
+archive you may deploy on other sites just as a regular stable release.
-\li CMakeMakeExeLib.txt
+In summary, the following commands will checkout the SVN, regenerate the
+configure script and friends, configure SimGrid and build it.
-Here are callled all "CMakeLists.txt" for make executables and libraries.
+\verbatim svn checkout svn://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk simgrid
+cd simgrid
+./bootstrap
+./configure --enable-maintainer-mode --prefix=
+make \endverbatim
-\li CMakePrintArgs.txt
+Then, if you want to install SimGrid on the current box, just do:
+\verbatim make install \endverbatim
-This file is called at the end of the build for summarize environment variables.
+If you want to build an snapshot of the SVN to deploy it on another box (for
+example because the other machine don't have the autotools), do:
+\verbatim make dist \endverbatim
-\li CMakeDefinePackages.txt
+Moreover, you should never call the autotools manually since you must run
+them in a specific order with specific arguments. Most of the times, the
+makefiles will automatically call the tools for you. When it's not possible
+(such as the first time you checkout the SVN), use the ./bootstrap command
+to call them explicitly.
-Here is defined sources packages for compiling libs.
-\li CMakeFlags.txt
+\subsection faq_setting_MSG Setting up your own MSG code
-Defined flags which are used for compiling sources.
+Do not build your simulator by modifying the SimGrid examples. Go
+outside the SimGrid source tree and create your own working directory
+(say /home/joe/SimGrid/MyFirstScheduler/).
-\li CMakeSupernovae.txt
+Suppose your simulation has the following structure (remember it is
+just an example to illustrate a possible way to compile everything;
+feel free to organize it as you want).
-Here are made files for the supernovae mode.
+ \li sched.h: a description of the core of the
+ scheduler (i.e. which functions are can be used by the
+ agents). For example we could find the following functions
+ (master, forwarder, slave).
-\li CMakeDistrib.txt
+ \li sched.c: a C file including sched.h and
+ implementing the core of the scheduler. Most of these
+ functions use the MSG functions defined in section \ref
+ msg_gos_functions.
-Here is defined packages for install simgrid and make a distribution.
+ \li masterslave.c: a C file with the main function, i.e.
+ the MSG initialization (MSG_global_init()), the platform
+ creation (e.g. with MSG_create_environment()), the
+ deployment phase (e.g. with MSG_function_register() and
+ MSG_launch_application()) and the call to
+ MSG_main()).
-\li CMakeMaintainerMode.txt
+To compile such a program, we suggest to use the following
+Makefile. It is a generic Makefile that we have used many times with
+our students when we teach the C language.
-Part where are generated source files for maintainer mode.
+\verbatim
+all: masterslave
+masterslave: masterslave.o sched.o
-\li CMakeOption.txt
+INSTALL_PATH = $$HOME
+CC = gcc
+PEDANTIC_PARANOID_FREAK = -O0 -Wshadow -Wcast-align \
+ -Waggregate-return -Wmissing-prototypes -Wmissing-declarations \
+ -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \
+ -Wmissing-noreturn -Wredundant-decls -Wnested-externs \
+ -Wpointer-arith -Wwrite-strings -finline-functions
+REASONABLY_CAREFUL_DUDE = -Wall
+NO_PRAYER_FOR_THE_WICKED = -w -O2
+WARNINGS = $(REASONABLY_CAREFUL_DUDE)
+CFLAGS = -g $(WARNINGS)
-Here are defined options and initialized values.
+INCLUDES = -I$(INSTALL_PATH)/include
+DEFS = -L$(INSTALL_PATH)/lib/
+LDADD = -lm -lsimgrid
+LIBS =
-\li CMakeTest.txt
+%: %.o
+ $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) $^ $(LIBS) $(LDADD) -o $@
-All tests are listed.
+%.o: %.c
+ $(CC) $(INCLUDES) $(DEFS) $(CFLAGS) -c -o $@ $<
-\li CTestConfig.cmake
+clean:
+ rm -f $(BIN_FILES) *.o *~
+.SUFFIXES:
+.PHONY : clean
-Properties which link tests with dashboard.
+\endverbatim
-\subsection faq_cmakeList List of files added for cmake
+The first two lines indicates what should be build when typing make
+(masterslave) and of which files it is to be made of
+(masterslave.o and sched.o). This makefile assumes
+that you have set up correctly your LD_LIBRARY_PATH variable
+(look, there is a LDADD = -lm -lsimgrid). If you prefer using
+the static version, remove the -lsimgrid and add a
+$(INSTALL_PATH)/lib/libsimgrid.a on the next line, right
+after the LIBS = .
-Here is a list of files involved into cmake build (relative to project directory path) :
-\verbatim
+More generally, if you have never written a Makefile by yourself, type
+in a terminal : info make and read the introduction. The
+previous example should be enough for a first try but you may want to
+perform some more complex compilations...
-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
+\subsection faq_setting_GRAS Setting up your own GRAS code
-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
+If you use the GRAS interface instead of the MSG one, then previous section
+is not the better source of information. Instead, you should check the GRAS
+tutorial in general, and the \ref GRAS_tut_tour_setup in particular.
\section faq_howto Feature related questions
@@ -2117,6 +2067,242 @@ $ defaults write Triva 'bcompute Color' '1 0 0'
\endverbatim
Where the three numbers in each line are the RGB color with values from 0 to 1.
+\subsection faq_modelchecking Model-Checking
+\subsubsection faq_modelchecking_howto How to use it
+To enable the experimental SimGrid model-checking support the program should
+be executed with the command line argument
+\verbatim
+--cfg=model-check:1
+\endverbatim
+Properties are expressed as assertions using the function
+\verbatim
+void MC_assert(int prop);
+\endverbatim
+
+\subsection faq_binding_lua Lua Binding
+Most of Simgrid modules require a good level in C programming ,
+ since simgrid is used to be as standard C library .
+ Sometime ( for some reason or another ) developers prefer using some kind of « easy scripts »
+ (something like ⦠lua ? Ruby ? ...?) or a language easier to code with ( Java ? ) for their works,
+ which avoid dealing with C errors , and sometime an important gain of time (coding-time?) .
+Besides Java Binding, Lua and Ruby bindings are available now( since version 3.4 of Simgrid )
+for MSG Module, and we are currenlty working on bindings for other modules .
+
+
+\subsubsection faq_binding_lua_about What is lua ?
+Lua (Moon for portuguese !) is a lightweight, reflective, imperative and functional programming language,
+ designed as a scripting language with extensible semantics as a primary goal.(see official web site here)
+\subsubsection faq_binding_lua_why Why lua ?
+Lua is a fast,portable and powerful script language, quite simple to use for developpers .
+it combines procedural features with powerful data description facilities,
+ by using a simple, yet powerful, mechanism of tables.
+Lua has a relatively simple C API compared to other scripting languages,
+and accordingly it provides a robust, easy to use it.
+\subsubsection faq_binding_lua_simgrid How to use lua in Simgrid ?
+Actually , the use of lua in Simgrid is quite simple, you have just to follow the same steps as coding with C in Simgird,
+ but this time, code with Lua ;) :
+ - Coding functions coresponding to each process
+ - loading the platforme/deployment XML file that describe the environment of simulation
+ - and ⦠Running the Simulation !!!
+
+\dontinclude lua/master_slave.lua
+\subsubsection faq_binding_lua_example_master_slave Master/Slave Example
+
+ \li Master Code
+ \until end_of_master
+we mainly use simgrid.Task.new(task_name,computation_size,communication_size) to create our MSG Task,
+ then simgrid.Task.send(task,alias) to send it.
+we use also simgrid.Task.name(task), to get the task's name .
+
+\li Slave Code
+\until end_of_slave
+Here, we could see how we use simgrid.Task.recv(alias) to receive a task with a specific alias,
+this function return directly the task recevied .
+
+\li Set Environmenet and run application
+\until simgrid.clean()
+
+\subsubsection faq_binding_lua_example_data Exchanging Data
+You can also exchange data between Process using lua. for that, you have to deal with lua task as a table,
+since lua is based itself on a mechanism of tables,
+so you can exchange any kind of data ( tables, matrix, strings ⦠) between process via tasks.
+
+\li Sender process
+\verbatim
+ task = simgrid.Task.new("data_task",task_comp,task_comm);
+ task['matrix'] = my_matrix;
+ task['table'] = my_table;
+ task['message'] = "Hello from (Lua || Simgrid ) !! "
+ â¦
+ simgrid.Task.send(task,alias)
+\endverbatim
+ After creating task, we associate to it various kind of data with a specific key,( string in this case)
+ to distinguish between data variables. Via this key the receiver could access easily to datas.
+
+
+\li Receiver processe
+\verbatim
+ task = simgrid.Task.recv(alias);
+ sender_matrix = task['matrix'];
+ sender_table = task['table'];
+ sender_message = task['message']
+ ...
+\endverbatim
+ Note that in lua, both sender and receiver share the same lua task!
+ So that the receiver could joint data directly on the received task without sending it back.
+ You can find a complet example ( matrix multiplication case ) in the file example/lua/mult_matrix.lua
+
+
+\subsubsection faq_binding_lua_example_bypass Bypass XML
+ maybe you wonder if there is a way to bypass the XML files,
+ and describe your platform directly from the code, with lua bindings it's Possible !! how ?
+ We provide some additional (tricky?) functions in lua that allows you to set up your own platform without using the XML files
+ ( this can be useful for large platforms, so a simple for loop will avoid you to deal with an annoying XML File ;) )
+
+
+\li set Hosts
+\verbatim
+ simgrid.Host.new("Tremblay",98095000);
+ simgrid.Host.new("Jupiter",76296000);
+ simgrid.Host.new("Fafard",76296000);
+ simgrid.Host.new("Ginette",48492000);
+ simgrid.Host.new("Bourassa",48492000);
+\endverbatim
+ we use simgrid.Host.new(host_id,power) to instanciate our hosts.
+
+\li set Links
+\verbatim
+ for i=0,11 do
+ simgrid.Link.new(i,252750+ i*768,0.000270544+i*0.087); -- some crazy values ;)
+ end
+\endverbatim
+ we used simgrid.Link.new(link_id,bandwidth,latency) with a simple for loop to create all links we need ( much easier than XML hein ? )
+
+\li set Routes
+\verbatim
+-- simgrid.Route.new(src_id,des_id,links_nb,links_list)
+ simgrid.Route.new("Tremblay","Jupiter",1,{"1"});
+ simgrid.Route.new("Tremblay","Fafard",6,{"0","1","2","3","4","8"});
+ simgrid.Route.new("Tremblay","Ginette",3,{"3","4","5"});
+ simgrid.Route.new("Tremblay","Bourassa",7,{"0","1","3","2","4","6","7"});
+
+ simgrid.Route.new("Jupiter","Tremblay",1,{"1"});
+ simgrid.Route.new("Jupiter","Fafard",7,{"0","1","2","3","4","8","9"});
+ simgrid.Route.new("Jupiter","Ginette",4,{"3","4","5","9"});
+ simgrid.Route.new("Jupiter","Bourassa",8,{"0","1","2","3","4","6","7","9"});
+ ...
+\endverbatim
+ for each host you have to specify which route to choose to access to the rest of hosts connected in the grid.
+
+\li Save platform
+\verbatim
+ simgrid.register_platform();
+\endverbatim
+Don't forget to register your platform, that SURF callbacks starts their work ;)
+
+\li set application
+\verbatim
+ simgrid.Host.setFunction("Tremblay","Master",4,{"20","550000000","1000000","4"});
+ simgrid.Host.setFunction("Bourassa","Slave",1,{"0"});
+ simgrid.Host.setFunction("Jupiter","Slave",1,{"1"});
+ simgrid.Host.setFunction("Fafard","Slave",1,{"2"});
+ simgrid.Host.setFunction("Ginette","Slave",1,{"3"});
+\endverbatim
+ you don't need to use a deployment XML file, thanks to simgrid.Host.setFunction(host_id,function,args_number,args_list)
+ you can associate functions for each host with arguments if needed .
+
+\li
+\verbatim
+ simgrid.register_application();
+\endverbatim
+Yes, Here too you have to resgiter your application before running the simulation.
+
+the full example is distributed in the file examples/lua/master_slave_bypass.lua
+
+\subsection faq_binding_ruby Ruby Binding
+
+
+\subsubsection faq_binding_ruby_simgrid Use Ruby in Simgrid
+Since v3.4, the use of ruby in simgrid is available for the MSG Module.
+you can find almost all MSG functionalities in Ruby code, that allows you to set up your environment, manage tasks between hosts and run the simulation.
+
+\dontinclude ruby/MasterSlave.rb
+\subsubsection faq_binding_ruby_example Master/Slave Ruby Application
+for each process method(master and slave in this example), you have to associate a ruby class, that should inherit from MSG::Process ruby class,
+ with a 'main' function that describe the behaviour of the process during the simulation.
+\li required stuff
+\verbatim
+require 'simgrid'
+include MSG
+\endverbatim
+
+\li Master code
+\until end_of_master
+
+the class MSG::Task contains methods that allows the management of the native MSG tasks.
+in master ruby code we used :
+ - MSG::Task.new(task_name,compute_size,communication_size) : to instanciate a new task.
+ - MSG::Task.send(mailbox) : to send the task via a mailbox alias.
+ - MSG::Task.name : to get the task's name.
+
+\li Slave code
+\until end_of_slave
+to receive a task, we use the method MSG::Task.receive(mailbox) that return a MSG:Task object (received task).
+
+\li Main chunk
+\until MSG.exit
+
+- MSG.createEnvironment(platform_file) : set up the environment
+- MSG.deployApplication(deployment_file) : load the deployment file description.
+- MSG.run : run the simulation
+
+\subsubsection faq_binding_ruby_data Exchanging data
+ruby bindings provides two ways to exchange data between ruby processes.
+\li MSG::Task.join & MSG::Task.data \br
+
+ the MSG::Task class contains 2 methods that allows a data exchange between 2 process.
+
+ -MSG::Task.join : makes possible to join any kind of ruby data within a task.
+ \verbatim
+ ...
+ myTable = Array.new
+ myTable <<1<<-2<<45<<67<<87<<76<<89<<56<<78<<3<<-4<<99
+ # Creates and send Task With the Table inside
+ task = MSG::Task.new("quicksort_task",taskComputeSize, taskCommunicationSize);
+ task.join(myTable);
+ ...
+ task.send(mailbox);
+ \endverbatim
+ -MSG::Task.data : to access to the data contained into the task.
+ \verbatim
+ ...
+ task = MSG::Task.receive(recv_mailbox.to_s)
+ table = task.data
+ quicksort(table,0,table.size-1)
+ ...
+ \endverbatim
+you can find a complet example illustrating the use of those methods in file /example/ruby/Quicksort.rb
+
+\li inheritence
+
+ another 'object-oriented' way to do it, is to make your own 'task' class that inherit from MSG::Task ,
+ and contains data you want to deal with, the only 'tricky' thing is that "the initializer" method has no effect !
+
+ the use of some getter/setter methods would be the simple way to manage your data :)
+ \verbatim
+class PingPongTask < MSG::Task
+ # The initialize method has no effect
+ @time
+ def setTime(t)
+ @time = t
+ end
+ def getTime()
+ return @time
+ end
+end
+ \endverbatim
+ you can find an example of use in file example/ruby/PingPong.rb
+
\section faq_troubleshooting Troubleshooting
\subsection faq_trouble_lib_compil SimGrid compilation and installation problems