Configuring fsl_sub
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_OPTS
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.