This repository contains the definiton file and the dependencies required to build a singularity container that can run the CANDLE benchmarks and the supervisor.
To build the singularity image, install singularity 2.4 release:
Once singularity is installed, you can create a singularity CANDLE image by running:
$ sudo singularity build -s candle-sandbox.img swift-hypervisor.def $ sudo singularity build candle.simg ./candle-sandbox.img
The hyperparameter optimization within this image is based on EMEWS: http://www.mcs.anl.gov/~emews/tutorial/
EMEWS uses Swift/T parallel scripting language which can be compiled using
stc
, and run on multiple nodes using turbine
. By default, turbine
launches MPI jobs using the batch scheduler (e.g. SLURM). In this image,
however, this functionality is changed so that mpiexec
is called before
turbine
. This is done by removing the mpiexec
call from the turbine
script as shown here:
Therefore a call to turbine
using this image will look like:
$ mpiexec -n 4 singularity exec candle.simg turbine <program.tic> [args]
The MPI implementation and version installed in the singularity container has to match the version in the host. In order to change the MPI version wihtin the container edit this section in the defintion file:
To bind directories to the singularity image at runtime, edit this line in the definition file to create the directories within you image:
and define the environment variable SINGULARITY_BINDPATH
as a comma separated
directories as mentioned here:
and here:
for example:
$ export SINGULARITY_BINDPATH="/gs2,/gs3,/gs4,/gs5,/gs6,/gpfs,/spin1,/data,/scratch,/fdb,/lscratch"
This image intalls a vanilla version of Keras, TensorFlow, and Theano that runs on CPU without any optimization. The def file can be edited to install the version that is appropriate to a given platform with all optimizations turned on.