
OpenMOLE a DSL to explore complex-system models
Romain Reuillon
Clasyco
Romain Reuillon
Clasyco
The OpenMOLE exposes both a graphical DSL as well as a scripted one.
// Declare the variable val i1 = new Prototype[Int]("i1") val i2 = new Prototype[Int]("i2") val j = new Prototype[Int]("j") // Hello task val hello = GroovyTask("hello", "j = Model.compute(i1, i2)") hello addInput i1 hello addInput i2 hello addOutput j hello addLib "/path/to/model.jar"
The exploration transition unrolls a design of experiment.
It creates one execution stream by sample in the design of experiment.
The aggregation transition gathers the results of a model exploration.
It allows to compute global indicators upon multiple parallel execution streams.
val exploration = ExplorationTask( "exploration", new Factor(i1, 0 to 100 by 2 toDomain) x new Factor(i2, new UniformIntDistribution take 10) ) val ex = exploration -< hello toExecution //execute the workflow locally ex.start
val pbs = new PBSEnvironment( "rreuillo", "avakas.mcia.univ-bordeaux.fr", "/home/rreuillo/tmp/") val ex = exploration -< (hello on pbs by 10) toExecution //execute the workflow on a PBS cluster ex.start
Scale declaratively at a multi-thread, multiple desktop, multi-core server, cluster, grid, cloud level.