Nimrod Toolkit

Need help? Subscribe to nimrod-users
Email:

The Nimrod Toolkit

Parametric computational experiments are becoming increasingly important in science and engineering as a means of exploring the behavior of complex systems. For example, an engineer may explore the behaviour of a wing by running a computational model of the airfoil multiple times while varying key parameters such as angle of attack, air speed, etc. The results of these multiple experiments yield a picture of how the wing behaves in different parts of parametric space. Over the past several years, we have developed a specialized parametric modeling system called Nimrod. Nimrod uses a simple declarative parametric modeling language to express a parametric experiment and provides machinery that automates the task of formulating, running, monitoring, and collating the results from the multiple individual experiments. Equally important, Nimrod incorporates a distributed scheduling component that can manage the scheduling of individual experiments to idle computers in a local area network. Together, these features mean that even complex parametric experiments can be defined and run with little programmer effort. In many cases it is possible to establish a new experiment in minutes.

Nimrod supports workflows for robust design and search and allows scientists to:

  • Vary parameters
  • Execute programs
  • Copy data in and out

Other Features are:

  • Sequential and parallel dependencies
  • Multiple parameter exploration tools, including sweeps, optimizations and experimental designs
  • Computational economy drives scheduling
  • Computation scheduled near data when appropriate
  • Uses distributed high performance platforms
  • Upper middleware broker for resources discovery
  • Wide Community adoption
  • Cloud computing interface

Want to acknowledge us?

If you have used Nimrod for some research and would like to acknowledge it in your paper, we would welcome your use of the following text:

We wish to acknowledge Monash University for the use of their Nimrod software in this work. The Nimrod project has been funded by the Australian Research Council and a number of Australian Government agencies, and was initially developed by the Distributed Systems Technology CRC.

Nimrod/G references should cite: Abramson, D., Giddy, J. and Kotler, L. “High Performance Parametric Modeling with Nimrod/G: Killer Application for the Global Grid?”, International Parallel and Distributed Processing Symposium (IPDPS), pp 520- 528, Cancun, Mexico, May 2000

Nimrod/O references should cite: Abramson D, Lewis A, Peachey T, Fletcher, C., “An Automatic Design Optimization Tool and its Application to Computational Fluid Dynamics”, SuperComputing 2001, Denver, Nov 2001.


Nimrod Applications

Nimrod has been applied to a range of application areas, including Bioinformatics, Operations Research, Network Simulation, Electronic CAD, Ecological Modelling and Business Process Simulation. Further details here. Nimrod comes in a number of flavours. EnFuzion is a commercial quality solution and is available for Clusters. Nimrod/G is a research prototype and operates on a computational grid. Nimrod/E creates a statistical design to increase the efficiency of parameter exploration. Nimrod/O has been designed for performing automatic design optimisation. Active Sheets provides a spread sheet interface for Nimrod/G, EnFuzion and NetSolve, allowing spread sheets to perform parallel computations on the grid. A new Nimrod flavour, Nimrod/K, is designed to integrate the special purpose function of Nimrod/G/O and general purpose workflows from Kepler plus the IO model from GriddLeS. It gives promise of better integration with Portals and more flexible scheduling. Finally, the Nimrod Portal allows a user to specify and control a computational experiment from a browser. A testbed called the Australan Nimrod Testbed was also built to support routine parametric computational experiments amongst a range of institutions. This has now been replaced by the ARCS testbed as of 2006.

Monash University, and the Nimrod project, is proud to be an Academic Affiliate of the Globus Alliance.

Scenarios where Nimrod may Assist your Experiment

These all relate to running computational models. If the model is computationally intensive then the Nimrod tools are particularly useful as they perform runs concurrently. But even for models which run in milliseconds, the tools can be helpful for organizing your experiment, optimizing output or determining the importance of each input. Most importantly, for nearly all scenarios there is no need to modify your existing code.

  1. You need to run your computational model many times and average the results because the model is stochastic

    These types of Monte Carlo simulations are greatly facilitated by Nimrod/G. It will generate multiple jobs, furnishing them with different random number seeds and execute them concurrently on the grid. For a simple example see here.
  2. You wish to explore the effect of varying the inputs to your model.

    Inputs may be in the form of command line parameters or of values in some input file; in Nimrod these are both called parameters. Either way Nimrod/G will let you specify values for each parameter, will generate the jobs for all possible combinations of these values and execute the jobs on the Grid. Examples are here.
  3. You wish to explore the effect of input parameters but for certain combinations are not allowed.

    There are several possible ways to do this. If the disallowed combinations give jobs that quickly fail then you may schedule all possible combinations and let those bad jobs fail. However, if those jobs will use substantial resources then it would be better to filter them out first. This can be done in Nimrod/G by processing the run file. Alternatively Nimrod/O may be used in sweep mode as it provides the functionality to add formulas for constraints on the parameters. Examples of all three are solutions are here.
  4. You are running several different experiments. They may produce some jobs with the same inputs and you don't want to waste resources duplicating these jobs.

    Nimrod/O can be invoked with a persistent cache shared by the experiments, so avoiding duplications.
  5. You wish to find the combination of input parameters that produce an optimal output.

    Nimrod/O allows you to specify the inputs that vary, any constraints on those inputs, and the output to be maximized or minimized. It offers a selection of search methods for finding the optimum. Multiple searches, perhaps using different optimization methods, may be run in parallel. An example is shown here.
  6. You want to find the inputs that generate the best output. There is no numerical measure of how good the output is but you know good when you see it.

    Nimrod/O allows optimization where human input may be used to assess the quality of an output. This is especially useful for complex outputs such as images or animations.
  7. There are several aspects of your model output that you wish to optimize.

    Nimrod/O is currently being modified to facilitate such multi-objective optimization. Contact Tom Peachey at tcp@infotech.monash.edu.au for a progress report.
  8. You wish to perform multiple optimizations on the ouput of your model, one optimization for each combination of some parameter settings.

    This can be done using Nimrod/G to sweep over the setting and having it call Nimrod/O to do each optimization.
  9. You wish to run your model in reverse. In other words you want to find the input values that will produce a given output.

    Nimrod/O is commonly used for this task. You need to have a way of measuring the discrepency between your output and the desired one. Then run an optimization to minimize this discrepency.
  10. You have developed your own optimization method. You wish to use the method, taking advantage of the distributed execution of jobs and the cacheing supplied in Nimrod/O.

    This can be done by calling the Nimrod/O library functions from your code. Nimrod/O can then be co-scheduled with your optimization.
  11. Your model has many input parameters of interest. Exploring all combinations of these generates far too many computationally intensive jobs.

    Using Nimrod/E to design an appropriate subset of the jobs should vastly reduce the number of jobs. The reduced set will be handled by Nimrod/G and then Nimrod/E post-processing can be used to fill in results for the other jobs.
  12. Before performing a sweep over the inputs you wish to determine which inputs have little effect and may be disregarded.

    Nimrod/E will produce an experiment that will recommend which parameters to sweep and which to ignore.
  13. You wish to run your model many times but each run takes weeks. If there are say, memory problems or node failures, and a job fails, then all that time is lost.

    A job with very long execution times is best staged, with files saving the results at each stage. Nimrod/G can be used perform sweeps wherein jobs are performed in stages. It ensures that a stage will commence only when the previous one is complete.
  14. Different parts of your model need to run on different machines because of data files perhaps or licence requirements.

    Nimrod/G can schedule such workflow experiments and perform the appropriate communication between the parts. Where possible a downstream component may start processing its input file before an upstream component has completed that file.
  15. Some of your model executions require prior execution of other models.

    Nimrod/G can handle such dependencies.



I know what I'm doing, just give me a direct link...

Where can I run Nimrod?

Nimrod automatically copies needed files to remote resources (including clusters, grid resources and clouds). Nimrod only needs to be installed on one machine.

How do I run Nimrod?

As a new user, the best place to start is with the Nimrod Portal. The documentation describes the concept of Nimrod as well as giving a few "plan file" examples.

If you are a CLI Nimrod/G person, the Nimrod/G manual will give you a good understanding of how Nimrod/G works.

The Nimrod/O Manual gives detailed explanation of Nimrod/O's "schedule file" syntax and the optimization methods you can use. You will need this if you want to run Nimrod/O with Nimrod/G or on the Nimrod Portal.