Slurm

Funnel can be configured to submit workers to Slurm by making calls to sbatch.

The Funnel server needs to run on a submission node. Configure Funnel to use Slurm by including the following config:

It is recommended to update the submit file template so that the funnel worker run command takes a config file as an argument (e.g. funnel worker run --config /opt/funnel_config.yml --taskID {{.TaskId}})

Compute: slurm

Slurm:
    Template: |

#!/bin/bash #SBATCH --job-name {{.TaskId}} #SBATCH --ntasks 1 #SBATCH --error {{.WorkDir}}/funnel-stderr #SBATCH --output {{.WorkDir}}/funnel-stdout {{if ne .Cpus 0 -}} {{printf "#SBATCH --cpus-per-task %d" .Cpus}} {{- end}} {{if ne .RamGb 0.0 -}} {{printf "#SBATCH --mem %.0fGB" .RamGb}} {{- end}} {{if ne .DiskGb 0.0 -}} {{printf "#SBATCH --tmp %.0fGB" .DiskGb}} {{- end}} funnel worker run --taskID {{.TaskId}}

The following variables are available for use in the template:

Variable Description
TaskId funnel task id
WorkDir funnel working directory
Cpus requested cpu cores
RamGb requested ram
DiskGb requested free disk space
Zone requested zone (could be used for queue name)

See https://golang.org/pkg/text/template for information on creating templates.