Bonjour,
Mon problème est le suivant:
Lorsque je lance un basecalling avec dorado via un script sbatch gpu_basecalling_test.sh
, tout se déroule correctement, mon script est lancé sur un node GPU et dorado utilise bien le GPU sélectionné pour faire le basecalling.
Contenu de gpu_basecalling_test.sh
:
!/bin/sh
#SBATCH --partition=gpu
#SBATCH --gres=gpu:3g.20gb:1
#SBATCH --cpus-per-task=1
#SBATCH --mem=16GB
#SBATCH --time 0:10:00
#SBATCH --ntasks=1
#SBATCH --job-name GPU-test
## load dorado module
module load dorado
dorado basecaller --emit-fastq /shared/projects/dd_ont_pipeline/ONT-UMI-search-pipeline/dorado/models/dna_r9.4.1_e8_sup@v3.6 /shared/projects/dd_ont_pipeline/raw_reads.pod5 > /shared/projects/dd_ont_pipeline/test.fastq
En revanche, lorsque je cherche à faire la même chose à travers mon pipeline snakemake, il semble que le job est bien lancé sur un node GPU mais dorado ne "voit" pas la carte GPU et donc s'arrête immédiatement.
la rule snakemake est la suivante:
rule dorado_basecalling:
input: config['src_pod5']
params:
dorado = DORADO,
model = MODEL
output: config['src_fastq']+'{exp}.fastq'
shell: '{params.dorado} basecaller --emit-fastq dorado/models/{params.model} {input} > {output}'
Et mon fichier de config (profile):
snakefile: SnakeFile
config: 'CLUSTER=True'
configfile: ["./profiles/IFBslurm/paths_config.yaml", "./profiles/IFBslurm/dorado_base_config.yaml"]
use-conda: True
latency-wait: 30
reason: True
show-failed-logs: True
keep-going: True
printshellcmds: True
rerun-incomplete: True
restart-times: 0
######################
# Cluster submission #
######################
slurm: True
jobname: "{rule}.{jobid}" # Provide a custom name for the jobscript that is submitted to the cluster.
max-jobs-per-second: 1 # Maximal number of cluster/drmaa jobs per second, default is 10, fractions allowed.
max-status-checks-per-second: 10 # Maximal number of job status checks per second, default is 10
jobs: 4 # Use at most N CPU cluster/cloud jobs in parallel.
cores: 1
drmaa:
sbatch
--job-name=smk-{rule}-{wildcards}
--output=logs/{rule}/{rule}-{wildcards}-%j.out
--error=logs/{rule}/{rule}-{wildcards}-%j.err
##################
## Job resources #
##################
# Set default: apply to every rule
default-resources:
- slurm_account=dd_ont_pipeline
- slurm_partition=fast
- runtime=120
- mem_mb=16000
- nodes=1
# Set exceptions: specify custom ressources to a given rule
set-resources:
- dorado_basecalling:mem_mb=16000
- dorado_basecalling:runtime=180
- dorado_basecalling:slurm_partition=gpu
- dorado_basecalling:slurm=gres=gpu:3g.20gb
Enfin le contenu du script bash qui sert à lancer le pipeline snakemake via un sbatch:
#!/bin/sh
#SBATCH --cpus-per-task=4
#SBATCH --mem=32GB
#SBATCH --cpus-per-task=4
#SBATCH --time 12:00:00
#SBATCH --ntasks=1
#SBATCH --job-name DD-pipeline
## load dorado module
module load dorado
## load DRMAA module
module load slurm-drmaa
echo $DRMAA_LIBRARY_PATH
## activate conda environment
module load conda
CONDA_ROOT=/shared/software/miniconda/
source $CONDA_ROOT/etc/profile.d/conda.sh
conda activate dd_ont_pipeline
## Run snakemake pipeline
date
srun snakemake --profile none --workflow-profile profiles/IFBslurm --jobs=10 --use-envmodule
L'erreur que j'obtiens est la suivante:
[Mon Jan 29 11:18:56 2024]
rule dorado_basecalling:
input: /shared/projects/dd_ont_pipeline/ONT-UMI-search-pipeline/data/TEST/sequences/pod5
output: /shared/projects/dd_ont_pipeline/ONT-UMI-search-pipeline/data/TEST/sequences/fastq/TEST.fastq
jobid: 0
reason: Forced execution
wildcards: exp=TEST
resources: mem_mb=16000, mem_mib=15259, disk_mb=1000, disk_mib=954, tmpdir=/tmp, slurm_account=dd_ont_pipeline, slurm_partition=gpu, runtime=180, nodes=1, slurm=gres=gpu:3g.20gb
dorado basecaller --emit-fastq dorado/models/dna_r9.4.1_e8_sup@v3.6 /shared/projects/dd_ont_pipeline/ONT-UMI-search-pipeline/data/TEST/sequences/pod5 > /shared/projects/dd_ont_pipeline/ONT-UMI-search-pipeline/data/TEST/sequences/fastq/TEST.fastq
[2024-01-29 11:18:58.035] [info] - Note: FASTQ output is not recommended as not all data can be preserved.
[2024-01-29 11:18:58.035] [info] > Creating basecall pipeline
[2024-01-29 11:18:58.058] [error] CUDA device requested but no devices found.
Je suppose qu'il s'agit d'un probleme de configuration qui empêche Dorado et/ou CUDA de voir ou d'accèder à la carte mais après avoir testé différentes approches je m'en remets à vous, peut être saurez vous identifier le problème..
Je vous en remercie par avance.
Florian.