Open MOdeL Experiment
Mathieu Leclaire
Romain Reuillon
Jonathan Passerat-Palmbach
Context
- Complex-system community
- Various scientific fields
- Bring Distributed Computing / HPC resources to researchers
/ Application
/ Program
/ Call it whatever you want
/ (stuff taking inputs and producing outputs)
Embed a model (/ application) 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
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
Distributed execution of (almost) any program to (pretty much) any computing environment in 3 simple steps
- Package it with CARE* ⇒ execute it on linux
- Write your OpenMOLE workflow
- Click the run button
* http://reproducible.io
Parameter tuning
Classic methods:
- Grid Search
- Random sampling
- Latin Hypercube
- ...
Not very dynamic
Let's do some serious experiments
Sensitivity analysis: Profiles
Reverse problems: Genetic algorithms
Pattern Space Exploration
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
That's what we call usable HPC :)
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