Download OpenMOLE 6.2

Mostly Magic (version 6.2) was released on January 24, 2017.

The big picture

Imagine that you want to understand and/or optimize some parameters of an executable that you generally set in an empirical or arbitrary manner. Then embed the executable in OpenMOLE (5 minutes), use one of the distributed genetic algorithms provided by OpenMOLE (5 minutes) and launch the workflow on a distributed execution environment with thousands of machines (1 minutes). To summarize, you can design large scale distributed programs reusing legacy code and advanced numeric methods in approximately 10 minutes.

Try it

You can try OpenMOLE online using the OpenMOLE demonstration site.

Install it

OpenMOLE requires that Java version 7 or above is installed and available on your computer. To make sure of that you can check our FAQ. Then just extract the archive, and you're done! OpenMOLE is installed and works out of the box!

Once installed you can launch OpenMOLE by executing the openmole file in the installation directory (it is called openmole.bat for windozers). It will bring up the OpenMOLE application that runs in your web browser (OpenMOLE supports Firefox and Chrome).

First workflow

Let's design a workflow that explores one variable multiplies it by 2 and then displays each result. The computation is executed in a multi-threaded environment on the local machine.

In the OpenMOLE interface, first create a file named example.oms (the file extension is important). Open it and write the following workflow:
// Define the variables that are transmitted between the tasks
val i = Val[Double]
val res = Val[Double]

// Define the design of experiment
val exploration = ExplorationTask(i in (0.0 to 100.0 by 1.0))

// Define the model, here it is a simple task executing "res = i * 2", but it can be your model
val model =
  ScalaTask("val res = i * 2") set (
    inputs += i,
    outputs += (i, res)

// Define the execution environment, here it is a local execution environment with 4 threads but
// it could be a remote cluster or a grid. The workflow will work the same way whatever the environment
// and no installation step is required on the execution environment.
val env = LocalEnvironment(4)

// Define the workflow
exploration -< (model on env hook ToStringHook())

You can run it by clicking on the execution button.

To distribute the exact same execution to a remote cluster just switch the environment definition. The only configuration step required for this to work is to have an account on the cluster and to provide your authentication to OpenMOLE. Configuring authentications is explained in the GUI documenation LINK and in the console documentation in the section dedicated to each environment.
val env = SLURMEnvironment("myLogin", "")

// Define the workflow
exploration -< (model on env hook ToStringHook())

This is just a tiny bit of what OpenMOLE can achieve! Now you might want to discover how to:

Get help

To get help you are more than welcome to contact the OpenMOLE user mailing list. To do so, you should subscribe here, and then you can post your question to the list users 'at' We're also present on the #openmole channel of the ISC-PIF's RocketChat.