Skip to content

LSF Setup

Configure the pipeline for LSF (IBM Spectrum LSF) cluster execution.

Overview

The pipeline includes a pre-configured LSF profile at cluster/lsf/config.yaml that handles:

  • Job submission via bsub
  • Memory and queue allocation
  • GPU job routing
  • Resource limits

Quick Start

Bash
1
2
3
4
5
# Run with LSF profile
pixi run snakemake --profile cluster/lsf --configfile=config/config.yml

# Or use the test shortcut
pixi run test-lsf

Profile Configuration

Location

Text Only
1
cluster/lsf/config.yaml

Full Configuration

YAML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
executor: lsf
jobs: 300

default-resources:
  - 'mem_mb=8'
  - 'lsf_queue=rna'
  - 'lsf_project=aatrnaseq'
  - 'lsf_extra=""'

resources:
  - ngpu=12

set-resources:
  - rebasecall:lsf_queue="gpu"
  - rebasecall:lsf_extra="-gpu num=1:j_exclusive=yes"
  - rebasecall:ngpu=1
  - rebasecall:mem_mb=24
  - classify_charging:lsf_queue="gpu"
  - classify_charging:lsf_extra="-gpu num=1:j_exclusive=yes"
  - classify_charging:ngpu=1
  - classify_charging:mem_mb=24
  - remora_signal_stats:mem_mb=24
  - bwa_align:mem_mb=24
  - modkit_extract_calls:mem_mb=96
  - warpdemux:mem_mb=32
  - parse_warpdemux:mem_mb=8

printshellcmds: True
show-failed-logs: True
latency-wait: 15

Configuration Options

Global Settings

Option Value Description
executor lsf Use LSF executor
jobs 300 Maximum concurrent jobs
latency-wait 15 Seconds to wait for file sync

Default Resources

Applied to all rules unless overridden:

Resource Value Description
mem_mb 8 Memory in GB
lsf_queue rna Default LSF queue
lsf_project aatrnaseq Project for accounting
lsf_extra "" Additional bsub options

GPU Resource Limit

YAML
1
2
resources:
  - ngpu=12

Limits total concurrent GPU jobs to 12. Adjust based on your cluster's GPU availability.

Per-Rule Resources

GPU Rules

These rules are automatically submitted to the GPU queue:

Rule Queue Memory GPU
rebasecall gpu 24 GB 1 (exclusive)
classify_charging gpu 24 GB 1 (exclusive)

Memory-Intensive Rules

Rule Memory
modkit_extract_calls 96 GB
warpdemux 32 GB
remora_signal_stats 24 GB
bwa_align 24 GB

Customization

Change Default Queue

Edit lsf_queue in default-resources:

YAML
1
2
default-resources:
  - 'lsf_queue=your_queue'

Change Project Tag

For job accounting:

YAML
1
2
default-resources:
  - 'lsf_project=your_project'

Adjust Max Jobs

Reduce if you're filling up the queue:

YAML
1
jobs: 100

Increase Memory for a Rule

Add or modify in set-resources:

YAML
1
2
set-resources:
  - your_rule:mem_mb=64

Change GPU Queue Name

If your GPU queue has a different name:

YAML
1
2
3
set-resources:
  - rebasecall:lsf_queue="your_gpu_queue"
  - classify_charging:lsf_queue="your_gpu_queue"

Monitoring Jobs

View All Jobs

Bash
1
bjobs -u $USER

View Job Details

Bash
1
bjobs -l <job_id>

View Job History

Bash
1
bhist -l <job_id>

Kill All Jobs

Bash
1
bkill 0  # Kill all your jobs

View Queue Status

Bash
1
bqueues

Submit Scripts

For long-running pipelines, use a submit script:

Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
#BSUB -J aa-tRNA-seq
#BSUB -o logs/pipeline.%J.out
#BSUB -e logs/pipeline.%J.err
#BSUB -q rna
#BSUB -n 1
#BSUB -R "rusage[mem=4000]"

mkdir -p logs

pixi run snakemake --profile cluster/lsf \
    --configfile=config/config.yml

Submit:

Bash
1
bsub < run-analysis.sh

Troubleshooting

Jobs Pending Too Long

Check queue limits:

Bash
1
bqueues -l rna

Reduce concurrent jobs:

YAML
1
jobs: 50

Memory Errors

Increase memory for the failing rule:

YAML
1
2
set-resources:
  - failing_rule:mem_mb=128

GPU Jobs Not Starting

Check GPU queue availability:

Bash
1
bqueues -l gpu

Verify GPU resource syntax for your cluster.

File Sync Errors

Increase latency wait:

YAML
1
latency-wait: 60

Next Steps