X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a291afa4fb3d38c8983ef313a5bb500da457afd0..7fd28d30a3f673b7a9a1198d72266bc744d63fd2:/doc/FAQ.doc diff --git a/doc/FAQ.doc b/doc/FAQ.doc index dbf4e26cc1..834c772fed 100644 --- a/doc/FAQ.doc +++ b/doc/FAQ.doc @@ -108,28 +108,6 @@ CMake needs some prerequists like : \li ccmake for graphical used of CMake \li cmake (download page) -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 \verbatim @@ -466,9 +444,14 @@ make install \subsubsection faq_cmakeinstall2 From a distrib \verbatim -cmake -Dprefix=/home/navarrop/Bureau/install_simgrid ./ -make -make install +For version 3.4.1 and 3.4 + cmake -Dprefix=/home/navarrop/Bureau/install_simgrid ./ + make + make install-simgrid +Since version 3.5 + cmake -Dprefix=/home/navarrop/Bureau/install_simgrid ./ + make + make install \endverbatim \subsection faq_cmakehowto How to modified sources files for developers @@ -482,18 +465,18 @@ You must specified where to create the executable, source list, dependencies and cmake_minimum_required(VERSION 2.6) set(EXECUTABLE_OUTPUT_PATH "./") -set(LIBRARY_OUTPUT_PATH "${PROJECT_DIRECTORY}/lib") +set(LIBRARY_OUTPUT_PATH "${CMAKE_HOME_DIRECTORY}/lib") add_executable(get_sender get_sender.c) #add_executable( ) ### Add definitions for compile -target_link_libraries(get_sender simgrid m pthread -fprofile-arcs) #target_link_libraries( ) +target_link_libraries(get_sender simgrid m pthread) #target_link_libraries( ) \endverbatim Then you have to modified /buildtools/Cmake/MakeExeLib.cmake and add this line : \verbatim -add_subdirectory(${PROJECT_DIRECTORY}/) +add_subdirectory(${CMAKE_HOME_DIRECTORY}/) \endverbatim \subsubsection faq_cmakehowto2 Delete/add sources to lib. @@ -502,18 +485,18 @@ If you want modified, add or delete source files from a library you have to edit \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 + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/MsgException.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/JniException.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/NativeException.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/HostNotFoundException.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/ProcessNotFoundException.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/Msg.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/Process.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/Host.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/Task.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/MsgNative.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/ApplicationHandler.java + ${CMAKE_HOME_DIRECTORY}/src/java/simgrid/msg/Sem.java ) \endverbatim @@ -523,7 +506,7 @@ If you want modified, add or delete tests you have to edit /b 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) +add_test(test-simdag-1 ${CMAKE_HOME_DIRECTORY}/testsuite/simdag/sd_test --cfg=path:${CMAKE_HOME_DIRECTORY}/testsuite/simdag small_platform_variable.xml) \endverbatim \subsection faq_PIPOL Pipol-remote @@ -1384,7 +1367,38 @@ annotate Tiers-generated topologies. This perl-script is in tools/platform_generation/ directory of the SVN. Dinda et Al. released a very comparable tool, and called it GridG. -\subsubsection faq_SURF_dynamic Expressing dynamic resource availability in platform files +\subsubsection faq_SURF_multicore Modeling multi-core resources + +There is currently no native support for multi-core or SMP machines in +SimGrid. We are currently working on it, but coming up with the right +model is very hard: Cores share caches and bus to access memory and +thus interfere with each others. Memory contention is a crucial +component of multi-core modeling. + +In the meanwhile, some user-level tricks can reveal sufficient for +you. For example, you may model each core by a CPU and add some very +high speed links between them. This complicates a bit the user code +since you have to remember that when you assign something to a (real) +host, it can be any of the (fake) hosts representing the cores of a +given machine. For that, you can use the prop tag of the XML files as +follows. Your code should then look at the ‘machine’ property +associated with each workstation, and run parallel tasks over all +cores of the machine. + +\verbatim + + + + + + + + + + +\endverbatim + +\subsubsection faq_SURF_dynamic Modeling dynamic resource availability A nice feature of SimGrid is that it enables you to seamlessly have resources whose availability change over time. When you build a @@ -2232,30 +2246,27 @@ 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 . +Most of Simgrid modules require a good level in C programming, since simgrid is used to be as standard C library. + Sometime users prefer using some kind of « easy scripts » or a language easier to code with, for their works, + which avoid dealing with C errors, and sometime an important gain of time. +Besides Java Binding, Lua and Ruby bindings are available 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) +Lua 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 . +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 ;) : +Actually, the use of lua in Simgrid is quite simple, you have just to follow the same steps as coding with C in Simgird : - Coding functions coresponding to each process - loading the platforme/deployment XML file that describe the environment of simulation - - and … Running the Simulation !!! + - and … Running the Simulation. \dontinclude lua/master_slave.lua \subsubsection faq_binding_lua_example_master_slave Master/Slave Example @@ -2264,12 +2275,12 @@ Actually , the use of lua in Simgrid is quite simple, you have just to follow th \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 . +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 . +Here, we see the use of 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() @@ -2277,7 +2288,7 @@ this function return directly the task recevied . \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. +so you can exchange any kind of data (tables, matrix, strings,…) between process via tasks. \li Sender process \verbatim @@ -2288,8 +2299,8 @@ so you can exchange any kind of data ( tables, matrix, strings … ) between pr … 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. + After creating task, we associate to it various kind of data with a specific key (string in this case) + to distinguish between data variables. The receiver will use this key to access easily to datas. \li Receiver processe @@ -2300,9 +2311,9 @@ so you can exchange any kind of data ( tables, matrix, strings … ) between pr sender_message = task['message'] ... \endverbatim - Note that in lua, both sender and receiver share the same lua task! + 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 + 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 @@ -2312,6 +2323,11 @@ so you can exchange any kind of data ( tables, matrix, strings … ) between pr ( this can be useful for large platforms, so a simple for loop will avoid you to deal with an annoying XML File ;) ) +\li set Routing mode +\verbatim + simgrid.AS.new{id="AS0",mode="Full"}; +\endverbatim + \li set Hosts \verbatim simgrid.Host.new{id="Tremblay",power=98095000};