Open MOdeL Experiment

Mathieu Leclaire
Romain Reuillon
Jonathan Passerat-Palmbach

Context

  • Complex-system community
  • Various scientific fields (not only physicists !)
  • No global strategy for SSH community
  • Large needs of HPC

OpenMOLE specifications


Embed a model as a black box

Zero deployment approach

  • The code is the user's code, not a web service
  • User code is automatically deployed at runtime
  • Ships to remote environment
  • No prior knowledge of remote environment needed
  • No installation required on any machine

Portable code ... or not

Codes running on JVM (Java, Scala, Netlogo)

And others ... C, C++, Python, R, Fortran, Octave, Scilab, Haskell, OCaml, etc

Port (almost) any program to the grid in 3 simple steps


  • Archive it with CARE* <=> execute it on linux
  • Write your OpenMOLE workflow
  • Click the run button


* http://reproducible.io

Packaging an application with Care

Applications have dependencies:
  • Shared libraries
  • Packages (Python, R, ...)
  • Low level system calls
  • Environment variables
  • ...

Capture these dependencies and transfer along with the application from Linux to Linux

Automatic data transfers
and
Replica management

Files and folders transfers are handled transparently by OpenMOLE

What OpenMOLE does


Data parallelism

What OpenMOLE does not



Parallelisation by message / Task Parallelism
Example: Spark, MPI, ...

Powered by EGI

(and others)

Naturally parallel formalism to design experiments: a workflow



A workflow


val i   = Val[Double]        
val res = Val[Double]        

val exploration = ExplorationTask ( i in (0.0 to 10.0 by 1.0) )

val model = 
  ScalaTask ("val res = i * 2") set (
    inputs  += i,
    outputs += (i, res)
  )
  
val env = LocalEnvironment(5)

val ex = exploration -< (model on env) start
        

Same workflow on the Grid !


val i   = Val[Double]        
val res = Val[Double]        

val exploration = ExplorationTask ( i in (0.0 to 10.0 by 1.0) )

val model = 
  ScalaTask ("val res = i * 2") set (
    inputs  += i,
    outputs += (i, res)
  )
  
val env = EGIEnvironment("biomed")

val ex = exploration -< (model on env) start
        

Switching to the Grid Environment is so easy !

Web Application

Console interface


Market place

OpenMOLE for all communities, for all languages



OpenMOLE is neither dedicated to a scientific field nor to a language


  • Chromosome structuring: Neuro Sciences, C++
  • The SimTRAP project: Social Sciences, Netlogo
  • The SimPOP project: Geography, Scala
  • The BioEmergence project: Biology, C

Useful Links

Documentation www.openmole.org
Mailing-list list.openmole.org
Development version next.openmole.org
Source code github.com/openmole
Market place github.com/openmole-market

Thanks!

romain.reuillon@iscpif.fr
mathieu.leclaire@iscpif.fr
j.passerat-palmbach@imperial.ac.uk