Developers
menu
menu

Execution environment

This section describes the environment in which your program will execute on Qarnot's computing farm.

Hardware

A compute node is a bare metal server embedded inside Qarnot's digital heaters, or its industrial version. Compute nodes have the following caracteristics:

  • High end CPU: Intel® Core™ i7 (4c/8t) CPUs, with a frequency of 3.5 GHz or more.
  • 16 GB of RAM
  • Diskless: all storage (task resources, results and intermediate files) are either network volumes or ramdisks.
  • Rebooted for each new client: when your task arrives on a computing node, it is rebooted, so you start with a clean environment.
  • No sharing: when your task runs on a compute node, it is the only task running there. We don't share CPUs between customers.

Environment variables and directories

Here is a list of environment variables accessible to your program:

  • $INSTANCE_ID: the id of the running instance of your program (see tasks and advanced ranges for details on what instances are and how to precisely control the values taken by $INSTANCE_ID).
  • $INSTANCE_COUNT: the total number of instances of your task.
  • $TASK_PATH: where you will find your resources (from the resource disk), and where you should write your results. Any file that you write here will be available in the results disk when your task completes. Please note that this directory is optimized for final results transfers and is not well suited to store temporary files.
  • $TMP_RAMFS_PATH: directory aimed at storing small temporary files in RAM. This is a ramdisk, so it is very fast, however every file stored here will use some RAM that will not be available to your application. Hence it's only suited for small files.
  • $TMP_PATH: directory aimed at storing bigger temporary files. Contrary to $TMP_RAMFS_PATH, this is a network volume, so it will be slower, but you can store bigger files than what is possible to keep in RAM, without impacting the amount of memory available to your application.

Working directory

The working directory of your program is $TASK_PATH.

About accessing environment variables from DOCKER_CMD

Using our docker profiles, you set the command that you want to be executed in your docker container using the DOCKER_CMD constant (see profiles). Please note that this command is not executed by a shell, but in a way equivalent to passing it to docker run $DOCKER_REPO:$DOCKER_TAG $DOCKER_CMD. Hence, all the environment variables listed above cannot be used directly in DOCKER_CMD, as nothing will take care of any substitution. For instance, setting the constant DOCKER_CMD = "echo $INSTANCE_ID" will not work as expected. To do this correctly, you need to specifically run your command in a shell, for instance like this: DOCKER_CMD = 'sh -c "echo $INSTANCE_ID"', the same way you would do on your own machine.

Next steps