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:
- it must run on any SL6, CC7 (or whatever is the flavour of the moment) machine, not only where it was compiled
- it must run from any directory, not only from the
install_dir
- inputs must be easily configurable at run time
Your software is not ready for running on the grid if any of the following apply:
- is dependent on specific hardware
- it makes use of libraries found only on your machine
- uses several versions of the same shared library
- dynamically linked libraries are hardcoded with your local path(s)
- requires inputs that are hardcoded with your local path(s)
- is dependent on the order of libraries found in the
LD_LIBRARY_PATH
- requires AFS access
Checks
You must make sure that your software is portable by doing the following:
- it compiles on a standard Linux box (not only on your devel desktop and not only on lxplus)
- 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
- it runs on a standard Linux box after you unpack the tarball and set the linux environment (to use only components from the tarball)
- you provide easy to use config scripts to compile the code and run a MC+Reco sequence
When using CVMFS, you must test the installation
in situ, and make sure all relevant conditions from the list(s) above are met.
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