Execo Practical Session

From Grid5000
Revision as of 10:35, 27 May 2014 by Mimbert (talk | contribs) (Created page with "=Overview= The goal of this proposed practical session is to show how to use execo ([http://execo.gforge.inria.fr/]) to quickly and easily prototype / develop reproducible ex...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

The goal of this proposed practical session is to show how to use execo ([1]) to quickly and easily prototype / develop reproducible experiment scripts. The aim in this session is to show the issues of experiment development as faced by typical experimenters, when using grid5000, and how execo can help them being more productive and getting more reproducible results.

This practical session will start by showing how to use execo to interactively develop the different steps of an experiment, then it will show how to use execo to transform this prototype in a fully automatic, configurable, robust experiment engine, producing reproducible results, and able to run on a much larger parameters space.

Tool: execo

execo offers a Python API for local or remote, standalone or parallel, unix processes execution . It is especially well suited for quickly and easily scripting workflows of parallel/distributed operations on local or remote hosts: automate a scientific workflow, conduct computer science experiments, perform automated tests, etc. The core python package is execo. The execo_g5k package provides a set of tools and extensions for the grid5000 testbed. The execo_engine package provides tools to ease the development of computer sciences experiments.

Tutorial requirements

This is a proposal for a two hours long practical session. It will be conducted by two persons.

Each attendee:

  • needs to know basic python and be reasonably familiar with grid5000 usage (this is not an absolute beginner session).
  • needs a grid5000 account
  • will, during the practical session, need to reserve a few nodes on at least two different clusters.

Detailed session program

The use case (the experiment which we will use as a support to illustrate execo functionality) is to benchmark an MPI application on different grid5000 clusters.

The practical session will go through the following steps:

execo introduction

A brief execo overview will be given to attendees. They will be shown how to install and configure execo in their grid5000 home directories.

Prototype the experiment interactively

All steps of the experiment will be progressively prototyped (in python, using execo) by the attendees. All the steps are kept simple, the purpose is not to perform a real experiment (producing some real scientifically interesting data) , but rather to show a typical experimental workflow, as performed by many grid5000 users:

  • Reserve some grid5000 compute nodes
  • Copy some files / data to the compute nodes
  • Configure, compile and install the benchmark program on the nodes
  • Run the benchmark program
  • Retrieve the results
  • Draw some simple figure showing the results (graph drawing code will be supplied, as this code is out of topic)

Transform this prototype in an automated experiment engine

  • Inherit a class from g5k_cluster_engine, which is a supplied, generic and reusable execo experiment engine automatizing the workflow of submitting jobs in parallel to grid5000 clusters / sites. It is well suited for bag-of-task kind of jobs, where the cluster is one of the experiment parameter, eg. benching flops, benching storage, network, etc.
  • Automate the workflow of section #Prototype the experiment interactively, for one cluster
  • Choose a parameter to explore, and hard-code the variation of this parameter.
  • Show how to use the ParamSweeper facility to easily explore a much larger parameter space, with the benefit of check-pointing the progress, allowing stopping and restarting the experiment.
  • Draw the same figure as in section #Prototype the experiment interactively, with much more data.