From: Navarrop Date: Thu, 10 Nov 2011 16:14:03 +0000 (+0100) Subject: Make a sync in a different directory. X-Git-Tag: exp_20120216~341 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/e43896ca4a9e5219a20acc7d29f11a540b520f4d Make a sync in a different directory. --- diff --git a/buildtools/Cmake/Distrib.cmake b/buildtools/Cmake/Distrib.cmake index c5a0c3d286..207fd63380 100644 --- a/buildtools/Cmake/Distrib.cmake +++ b/buildtools/Cmake/Distrib.cmake @@ -316,8 +316,8 @@ add_custom_target(sync-gforge-doc COMMAND chmod g+rw -R doc/ COMMAND chmod a+rX -R doc/ COMMAND rsync --verbose --cvs-exclude --compress --delete --delete-excluded --rsh=ssh --ignore-times --recursive --links --perms --times --omit-dir-times -doc/html/ scm.gforge.inria.fr:/home/groups/simgrid/htdocs/${release_version}/doc/ || true -COMMAND scp doc/html/simgrid_modules2.png doc/html/simgrid_modules.png doc/webcruft/simgrid_logo.png doc/webcruft/simgrid_logo_small.png scm.gforge.inria.fr:/home/groups/simgrid/htdocs/${release_version}/ +doc/html/ scm.gforge.inria.fr:/home/groups/simgrid/htdocs/simgrid/${release_version}/doc/ || true +COMMAND scp doc/html/simgrid_modules2.png doc/html/simgrid_modules.png doc/webcruft/simgrid_logo.png doc/webcruft/simgrid_logo_small.png scm.gforge.inria.fr:/home/groups/simgrid/htdocs/simgrid/${release_version}/ WORKING_DIRECTORY "${CMAKE_HOME_DIRECTORY}" ) add_dependencies(sync-gforge-doc simgrid_documentation) diff --git a/doc/bindings.doc b/doc/bindings.doc index c1b14d256d..f88237a472 100644 --- a/doc/bindings.doc +++ b/doc/bindings.doc @@ -2,6 +2,12 @@ \htmlinclude .bindings.doc.toc +\section bindings_binding_Java Java Binding +Simgrid-Java documentation. + +\section bindings_binding_Ruby Ruby Binding +Simgrid-Ruby documentation. + \section bindings_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. @@ -147,246 +153,4 @@ Yes, Here too you have to resgiter your application before running the simulatio the full example is distributed in the file examples/lua/master_slave_bypass.lua -\section bindings_binding_ruby Ruby Binding - -\subsection bindings_binding_ruby_install How to install Simgrid-ruby - -To use Ruby with Simgrid you have to install some dependancies: - \li Simgrid (see \ref installSimgrid_cmake). Be sure having set the environment variable "SIMGRID_ROOT". - \li Ruby package. - -Then Download and install package Simgrid-ruby: -\verbatim -git clone git://scm.gforge.inria.fr/simgrid/simgrid-ruby.git -cd simgrid-ruby -cmake . -\endverbatim - - Cmake output - -\verbatim --- SITE : Linux_2.6.38-8-generic_x86_64 --- BUILDNAME : Simgrid-Ruby --- Looking for lib SimGrid --- Looking for lib SimGrid - found --- Simgrid version : 3.6 --- Looking for gras.h --- Looking for gras.h - found --- Found Tesh: /home/user/Bureau/simgrid/git/bin/tesh --- Found gras_stub_generator: /home/user/Bureau/simgrid/git/bin/gras_stub_generator --- Found ruby: /usr/bin/ruby --- Looking for ruby.h --- Looking for ruby.h - found --- Looking for confi.h --- Looking for config.h - found --- Looking for lib ruby --- Looking for lib ruby - found --- Lib ruby version: 1.9.1 --- Configuring done --- Generating done --- Build files have been written to: /home/user/workspace/simgrid-ruby/build -\endverbatim - -\subsection bindings_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. - -\subsection bindings_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 -\verbatim -class Master < MSG::Process - # main : that function that will be executed when running simulation - - def main(args) # args is an array containing arguments for function master - size = args.size - for i in 0..size-1 - MSG::info("args["+String(i)+"]="+args[i]) - end - - raise "Master needs 3 arguments" if size < 3 - numberOfTask = Integer(args[0]) - taskComputeSize = Float(args[1]) - taskCommunicationSize = Float(args[2]) - slaveCount = Integer(args[3]) - - # Creates and sends the tasks - for i in 0..numberOfTask-1 - task = Task.new("Task_"+ i.to_s, taskComputeSize , taskCommunicationSize); - mailbox = "slave " + (i%slaveCount).to_s - MSG::info("Master Sending "+ task.name + " to " + mailbox + " with Comput Size " + - task.compSize.to_s) - task.send(mailbox) - MSG::info("Master Done Sending " + task.name + " to " + mailbox) - end - - # Sending Finalize MSG::Tasks - MSG::info("Master: All tasks have been dispatched. Let's tell everybody the computation is over.") - for i in 0..slaveCount-1 - mailbox = "slave " + i.to_s - finalize_task = Task.new("finalize",0,0) - finalize_task.send(mailbox) - end - MSG::info("Master : Everything's Done") - end -end -\endverbatim - - -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 -\verbatim -class Slave < MSG::Process - - def main(args) - mailbox = "slave " + args[0] - for i in 0..args.size-1 - MSG::debug("args["+String(i)+"]="+args[i]) - end - - while true - MSG::info("Slave '"+ mailbox +"' waiting for new task"); - task = Task.receive(mailbox) - if (task.name == "finalize") - break - end - task.execute - MSG::info("Slave '" + mailbox + "' done executing task "+ task.name + ".") - end - MSG::info("I'm done, see you") - end -end -\enverbatim -to receive a task, we use the method MSG::Task.receive(mailbox) that return a MSG:Task object (received task). - -\li Main chunk - -\verbatim -require 'simgrid' -include MSG -(...) - -if (ARGV.length == 2) - MSG.createEnvironment(ARGV[0]) - MSG.deployApplication(ARGV[1]) - -else - - MSG.createEnvironment("platform.xml") - MSG.deployApplication("deploy.xml") -end -MSG.run -puts "Simulation time : " + MSG.getClock.to_s -MSG.exit -\endverbatim - -- MSG.createEnvironment(platform_file) : set up the environment -- MSG.deployApplication(deployment_file) : load the deployment file description. -- MSG.run : run the simulation - -\subsection bindings_binding_ruby_data Exchanging data -ruby bindings provides two ways to exchange data between ruby processes. -\li MSG::Task.join & MSG::Task.data
- - 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 bindings_binding_java Java Binding - -\subsection bindings_binding_java_install How to install Simgrid-java - -To use java with Simgrid you have to install some dependancies: - \li Simgrid (see \ref installSimgrid_cmake). Be sure having set the environment variable "SIMGRID_ROOT". - \li Java packages: sun-java6-jdk and libgcj10-dev. If you cannot find the -libgcj10-dev, try another version. - -Then Download and install package Simgrid-java: -\verbatim -git clone git://scm.gforge.inria.fr/simgrid/simgrid-java.git -cd simgrid-java -cmake . -\endverbatim - -Cmake output -\verbatim --- SITE : Linux_2.6.38-8-generic_x86_64 --- BUILDNAME : Simgrid-Java --- Looking for lib SimGrid --- Looking for lib SimGrid - found --- Simgrid version : 3.6 --- Looking for gras.h --- Looking for gras.h - found --- Found Tesh: /home/user/Bureau/simgrid/git/bin/tesh --- Found gras_stub_generator: /home/user/Bureau/simgrid/git/bin/gras_stub_generator --- Java version 1.6.0.22 configured successfully! --- Looking for jni.h --- Looking for jni.h - found --- Add flags -I/usr/lib/jvm/java-6-openjdk/include --- Looking for jni_md.h --- Looking for jni_md.h - found --- Found javac: /usr/bin/javac --- Found jar: /usr/bin/jar --- Configuring done --- Generating done --- Build files have been written to: /home/user/workspace/simgrid-java/build -\endverbatim - -\subsection bindings_binding_java_use Use Java in Simgrid - -The use of java in simgrid is available for the MSG Module. You can find almost all MSG functionalities -in Java code (\ref MSG_JAVA). - */ \ No newline at end of file