Environment Variables#
Core#
- SIERRA_PLUGIN_PATH#
Used for locating plugins. Each directory is searched recursively for plugins matching one of the schemas SIERRA supports. You should not put directories which you put on here also on
PYTHONPATHbecause (a) SIERRA modifiesPYTHONPATHinternally in specific ways to support dynamic searching/loading of plugins, and the interaction betweenPYTHONPATHandsys.pathcan have subtle consequences across python versions and systems, and (b) SIERRA uses this path for other things internally (e.g., computing the paths to YAML config files).This variable is used in stages 1-5. See Using External Plugins for more information.
- SIERRA_RCFILE#
Used to specify the path to a file to put cmdline args in to reduce the size of cmdlines. Can also be passed directly via --rcfile. Priority:
--rcfileSIERRA_RCFILE~/.sierrarc
Note
You can't pass shortform cmdline arguments in the rcfile, or arguments which are marked as required in their cmdline definition.
Added in version 1.3.18.
- PYTHONPATH#
Used for locating projects per the usual python mechanisms.
- SIERRA_ARCH#
Can be used to determine the names of executables launch in HPC environment, so that in environments with multiple queues/sub-clusters with different architectures simulators can be compiled natively for each for maximum performance. Can be any string. If defined, then instead of searching for the
foobarexecutable for some engine onPATH, SIERRA will look forfoobar-$SIERRA_ARCH.Important
Not all engines use this variable--see the docs for your engine of interest.
- SIERRA_NODEFILE#
Points to a file suitable for passing to parallel via
--sshloginfile. See parallel docs for general content/formatting requirements.Used by SIERRA to configure experiments during stage 1,2; if it is not defined and --nodefile is not 1passed SIERRA will throw an error.
Plugins#
- ARGOS_PLUGIN_PATH#
Must be set to contain the library directory where you installed/built ARGoS, as well as the library directory for your project
.so. Checked to be non-empty before running stage 2 for all --execenv plugins. SIERRA does not modify this variable, so it needs to be setup properly prior to invoking SIERRA (i.e., the directory containing the Project.sofile needs to be on it). SIERRA can't know, in general, where the location of the C++ code corresponding to the loaded Project is.
- LD_LIBRARY_PATH#
Must be set to contain library directories for dynamically loaded libraries installed to nonstandard and/or non system locations.
- PARALLEL#
Used by GNU parallel to pass default options to every invocation. On HPC execution environments (
hpc.slurm,hpc.pbs) GNU parallel does not forward the launching node's environment to compute nodes, so any variables needed by your Project must be listed here before invoking SIERRA. SIERRA's built-inhpc.*plugins seed this variable with a minimal set (LD_LIBRARY_PATH,PYTHONPATH); extend it with whatever your project additionally requires:export PARALLEL="${PARALLEL} \ --env SIERRA_PLUGIN_PATH \ --env SIERRA_ARCH \ --env ARGOS_PLUGIN_PATH"
See Debugging and Logging for a full HPC setup checklist.
- PARALLEL_SHELL#
SIERRA sets up the Experiment execution environments by running one or more shell commands in a subprocess (treated as a
shell, which means that parallel can't determineSHELL, and therefore defaults to/bin/sh, which is not what users expect. SIERRA explicitly setsPARALLEL_SHELLto the result ofshutil.which('bash')in keeping with the Principle Of Least Surprise.
- ROS_PACKAGE_PATH#
The list of directories which defines where ROS will search for packages. SIERRA does not modify this variable, so it needs to be setup properly prior to invoking SIERRA (i.e., sourcing the proper
setup.bashscript).
- ROS_IP#
The IP address of a ROS node. Usually this is computed automatically for you; if things aren't working correctly you may have to explicitly assign this based on whatever the system ROS is running on says is IP address is.
- ROS_HOSTNAME#
The resolvable hostname for a ROS node. Unless you have DNS configured within the network that things are running on, best not to rely on this (at least for real robots).
- ROS_DISTRO#
The active ROS distribution (versioned set of ROS packages).
- ROS_VERSION#
The version of ROS. Currently SIERRA only supports ROS1.
- PBS_NUM_PPN#
# CPUs/node on a compute node allocated to a job on a HPC cluster managed by the PBS scheduler.
- PBS_NODEFILE#
Newline delimited list of compute nodes allocated to the current job on an HPC cluster managed by the PBS scheduler.
- PBS_JOBID#
Globally unique ID for a job on a HPC cluster managed by the PBS scheduler. Useful for creating unique output files/logging paths.
- SLURM_CPUS_PER_TASK#
# CPUs/node on a compute node allocated to a job on a HPC cluster managed by the SLURM scheduler.
- SLURM_TASKS_PER_NODE#
# tasks requested/allocated per compute node on a job on a HPC cluster managed by the SLURM scheduler.
- SLURM_JOB_NODELIST#
Newline delimited list of compute nodes allocated to the current job on an HPC cluster managed by the SLURM scheduler.
- SLURM_JOB_ID#
Globally unique ID for a job on a HPC cluster managed by the SLURM scheduler. Useful for creating unique output files/logging paths.