Cookies on this website

We use cookies to ensure that we give you the best experience on our website. If you click 'Accept all cookies' we'll assume that you are happy to receive all cookies and you won't see this message again. If you click 'Reject all non-essential cookies' only necessary cookies providing core functionality such as security, network management, and accessibility will be enabled. Click 'Find out more' for information on how to change your cookie settings.

How to change fsl_sub's configuration for all jobs you run

Some of the operation of fsl_sub can be configured such that all runs will enable/disable features. To configure fsl_sub create a file ~/.fsl_sub.yml and add the configuration to this file - it is in YAML format. To see what the current configuration is use:

fsl_sub --show_config

Take care - the system configuration has been setup to be optimal for the cluster, changing these settings may cause your job to fail.

FSL_SUB.YML SECTIONS​

TOP LEVEL​​

These options control the basic operation of fsl_sub and are keys in a YAML dictionary. To change a setting add 'keyname: value' to your file with no indent.

​​Key name​​Default​Purpose​Examples/Allowed Options
​method ​'shell', 'slurm' (or 'sge') ​Define whether to use the cluster ('slurm') or run things without a cluster ('shell') ​'shell' or the name of an installed plugin, e.g. 'slurm'
​ram_units ​'G' ​When -R is specified, what are the units ​'K', 'M', 'G', 'T', 'P'(!) - recommend this is not changed
​modulecmd ​False ​Where 'modulecmd' is not findable via PATH, where is the program ​Path to modulecmd
​export_vars ​Empty list = [] ​List of environment variables (with optional values) to always pass to jobs running on the cluster. List you provide will be added to the default list ​[SUBJECTSDIR, "MYVARIABLE=MYVALUE"]
The list can also be specified by starting a new line and adding items as '  - SUBJECTSDIR' (note the two spaces before the '-') on separate lines
​thread_control ​['OMP_NUM_THREADS', 'MKL_NUM_THREADS', 'MKL_DOMAIN_NUM_THREADS', 'OPENBLAS_NUM_THREADS', 'GOTO_NUM_THREADS'] ​Environment variables to set to ensure threads are limited to those requested by a parallel envrionment. Any values you configure will be added to the default list. ​Names of environment variables
​method_opts ​{} ​Control the method that runs your job ​See below
​coproc_opts ​{} ​Control the coprocessor options ​Should not be changed
​queues ​{} ​Control the queues ​Must not be changed

METHOD_O​PTS

These control how the shell and sge job runners operate, most of these should not be changed, but some useful ones include:
method_opts:
  shell:
    parallel_disable_matches:
      - "*_string"

parrallel_disable_matches enables you to specify portions of a command name that should never be attempted to be run in parallel when submitted as an array task but running with the shell backend. The default list contains '*_gpu' which ensures that the FSL GPU enabled tools do not attempt to start up in parallel as they are likely to be unable to access multiple GPUs. fsl_sub supports matching a full program name, a full path to a program and *<name> and <name>* to match the end or start of a program name respectively.

method_opts:
  slurm:
    keep_jobscript: True|False

or for the legacy Jalapeno cluster:

method_opts:
  sge:
    keep_jobscript: True|False

When the cluster backends submit your job they generate a submission script, the keep_jobscript option will leave a copy of this script in the current folder for reference or for later reuse

You can also control this on a job by job basis with the option --keep_jobscript, but where tasks don't allow this (e.g. FEAT) you can control this here.