Execution Environment

Solvers will run on a cluster of computers using the Linux operating system. They will run under the control of another program (runsolver) which will enforce some limits on the memory and the total CPU time used by the program. Solvers will be run inside a sandbox that will prevent unauthorised use of the system (network connections, file creation outside the allowed directory, among others). Constestants can choose to submit a 32 or 64 bits application. Executables should be submitted as an ELF executable (preferably statically linked). Submission of source files must indicate how to compile the solver. Two executions of a solver with the same parameters and system resources must output the same result in approximately the same time (so that the experiments can be repeated).

During the submission process, you will be asked to provide the organisers with a suggested command line that should be used to run your solver. In this command line, you will be asked to use the following placeholders, which will be replaced by the actual information given by the evaluation environment.

BENCHNAME:
will be replaced by the name of the file containing the instance to solve (including the path to the file). Obviously, the solver must use this parameter (or alternatively BENCHNAMENOEXT).
BENCHNAMENOEXT:
will be replaced by the base name of the file containing the instance to solve (i.e. without the filename extension, but with the complete path to the file).
RANDOMSEED:
will be replaced by a random seed which is a number between 0 and $ 4,294,967,295$. This parameter MUST be used to initialise the random number generator when the solver uses random numbers. It is recorded by the evaluation environment and will allow to run the program on a given instance under the same conditions if necessary.
TIMEOUT:
represents the total CPU time (in seconds) that the solver may use before being killed. May be used to adapt the solver strategy.
MEMLIMIT:
represents the total amount of memory (in MiB) that the solver may use before being killed. May be used to adapt the solver strategy.
TMPDIR:
is the name of the only directory where the solver is allowed to read/write temporary files.
DIR:
is the name of the directory where the solver files will be stored.

Examples of command lines:

  DIR/mysolver BENCHNAME RANDOMSEED
  DIR/mysolver --mem-limit=MEMLIMIT --time-limit=TIMELIMIT --tmpdir=TMPDIR BENCHNAME
  java -jar DIR/mysolver.jar -c DIR/mysolver.conf BENCHNAME

As an example, these command lines could be expanded by the evaluation environment as:

  /solver10/mysolver file.pb 1720968
  /solver10/mysolver --mem-limit=900 --time-limit=1200 --tmpdir=/tmp/job12345 file.pb
  java -jar /solver10/mysolver.jar -c /solver10/mysolver.conf file.pb

The command line provided by the submitter is only a suggested command line. Organisers may have to modify this command line (e.g. memory limits of the Java Virtual Machine (JVM) may have to be modified to cope with the actual memory limits).

The solver may also (optionally) use the values of the following environment variables:

TIMEOUT:
the number of seconds it will be allowed to run.
MEMLIMIT:
the amount of RAM in MiB available to the solver.
TMPDIR:
the absolute pathname of the only directory where the solver is allowed to create temporary files.

After TIMEOUT seconds have elapsed, the solver will first receive a SIGTERM signal to give it a chance to output the best solution found so far. (This is useful for optimisation problems.) One second later, the program will receive a SIGKILL signal from the controlling program to terminate the solver.

Similarly, a solver that uses more memory than the limit defined by MEMLIMIT will be sent a SIGTERM followed one second later by a SIGKILL.

The time and memory limits will be defined in accordance with the number of solvers and benchmarks that will enter the competition. One should expect a time limit of at least 20 minutes and a memory limit of at least 900 MiB.

The solver cannot write to any file except standard output, standard error and files in the TMPDIR directory. A solver is not allowed to open any network connection or launch external commands which are not related to the solving process. Solvers can use several processes or threads.

Marc van Dongen 2009-03-10