Writing portable software - The Golden Rules

Software meant to run on the Grid must be self-contained and compatible with the most standard Linux configuration.

Golden rules

Portable software means that:

  1. it must run on any SL6 (or whatever is the flavour of the moment) machine, not only where it was compiled
  2. it must run from any directory, not only from the install_dir
  3. inputs must be easily configurable at run time

Your software is not ready for running on the grid if any of the following apply:

  1. it makes use of libraries found only on your machine
  2. uses several versions of the same shared library
  3. dynamically linked libraries are hardcoded with your local path(s)
  4. requires inputs that are hardcoded with your local path(s)
  5. is dependent on the order of libraries found in the LD_LIBRARY_PATH


You must make sure that your software is portable by doing the following:

  1. it compiles on a standard Linux box (not only on your devel desktop and not only on lxplus)
  2. the executable and all the necessary dynamically linked libraries, config, dat files and scripts can be packed in a tarball not bigger than a few GB
  3. it runs on a standard Linux box after you unpack the tarball and set the linux environment (to use only components from the tarball)
  4. you provide easy to use config scripts to compile the code and to set things up

Revisions and releases

It is inefficient to install software on the Grid (CVMFS) only to have to reinstall an updated version the next week after. For running a production, one needs what is called a "production release", which would merge previous revisions/branches in a stable and bug-free version that will be "frozen" for the duration of the production round.

The Grid

Lastly, please remember that the Grid infrastructure is for large scale simulations, data reconstruction and/or analysis and it is not:

  • a software debugging platform
  • a testbed for the latest software fix
  • a no cost resource
Topic revision: r5 - 2016-03-08 - DanProtopopescu
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback