/farm_out


/farm_out is the recommended destination for temporary, log-style job output (as is typically written to stdout and stderr), to avoid slowing down the performance of filesystems like /volatile.  Do not use /farm_out as a destination for binary or other job output (instead use /work or /volatile).  Not only is /farm_out too small for such output (quotas of only a few gigabytes), but files therein are automatically trimmed, which can be problematic for output which isn't a text log.

 

Creating your /farm_out/$USER directory

You do not need to create /farm_out/$USER yourself, as it should be automatically created for you by the batch system when you run a job.  So if, for example, you're pointing your output at subdirectories and need to create them beforehand, then even something as simple as

lsh@ifarm1801 ~> ls /farm_out/lsh
ls: cannot access /farm_out/lsh: No such file or directory
lsh@ifarm1801 ~ [2]> srun hostname
srun: job 54048400 queued and waiting for resources
srun: job 54048400 has been allocated resources
farm13020.jlab.org
lsh@ifarm1801 ~>

should result in creating your base directory,

lsh@ifarm1801 ~> ls /farm_out/lsh
lsh@ifarm1801 ~>

but if you observe otherwise, please let us know.

 

Directing job output to /farm_out with SWIF2

By default, output to stdout and stderr are automatically redirected to /farm_out/%u/%x-%j-%N.out and /farm_out/%u/%x-%j-%N.err. Nothing extra needs to (or should) be done.  If you wish to rename those files for your jobs then specify appropriate templates on the swif2 add-job command line:

swif2 add-job --stdout /farm_out/%u/%x-%j-%N.out --stderr /farm_out/%u/%x-%j-%N.err ...

Be sure stdout and stderr go to /farm_out (and not the working directory, /volatile, /work, /home, etc.), and that the output files are unique for each job.  The %LETTER replacement symbols are described in man sbatch (in sync with our installation) or sbatch(1) online.  You can also generate unique names at the time of submission to Swif.

 

Directing job output to /farm_out with Slurm

Use the Slurm flag --output (and --error, if you want stderr split out), in your sbatch invocation, or as a directive in your job script, e.g.

#!/bin/sh
#SBATCH --output /farm_out/%u/%x-%j-%N.out
#SBATCH --error /farm_out/%u/%x-%j-%N.err
echo output
echo error >&2

See man sbatch (in sync with our installation) or sbatch(1) online (might describe newer features we don't have) for more information.