API Drmaa pour Slurm

Bonjour,

J’utilise un logiciel (genomestrip) qui nécessite un accès au cluster via l’API Drmaa.
J’utilise cette API sur le cluster de la plateforme bioinfo de Toulouse (système slurm) et cela marche très bien. C’est également très utile pour lancer des jobs via snakemake.

Cette API est-elle disponible sur le cluster core de l’IFB ?
En vous remerciant.

Bien cordialement,
Thomas Faraut

Bonjour Thomas,

L’API DRMAA n’est pas encore disponible mais ça me semble une bonne idée d’en disposer.
Je regarde si on peut l’installer.

Bonne journée.

A preciser, l’api drmaa depend de chaque cluster, slurm dans ce cas precis… Elle doit etre dispo sur chaque noeud afin qu’un job puisse lui meme y faire appel.

Bonjour,
Merci pour vos réponses.
Oui, c’est via un job (lui même soumis au cluster) que les soumissions au cluster sont lancés via drmaa.
Dans le cas d’un pipeline snakemake par exemple, seul le job maître lance des soumissions, mais ce dernier doit pouvoir tourner sur n’importe quel noeud.
Snakemake accède lui-même à l’API Drmaa via le module python python-drmaa que l’on peut installer avec conda.
Merci encore,
Thomas

La librairie slurm-drmaa est à présent disponible sur le cluster core de l’IFB : module load slurm-drmaa

Merci beaucoup.
Je vais l’essayer.
Thomas

Bonjour,

Je lance désormais mes workflows snakemake avec l'option --drmaa, très pratique.
Cependant ceci crée pour chaque job un fichier slurm-[job_nb].out dans le dossier d'où j'appelle snakemake.
Il s'agit des fichiers stdout de chaque job slurm, ce qui peut être très utile pour le debugging ou pour récupérer des messages de certains programmes (souvent un résumé des résultats).

Savez-vous comment faire pour indiquer à snakemake via drmaa où stocker ces fichiers STDOUT de slurm ?

Avec torque/PBS j'utilisais des options -o et -e pour spécifier les redirections de SDTOUD et STDERR des jobs, y a-t-il un équivalent pour slurm et/ou drmaa ?

Merci

Jacques

Bonjour,

C'est quelque chose que je n'ai pas réussi à configurer avec slurm sur le cluster genotoul bioinfo (slurm-drmaa-1.0.7).
Sans drmaa, cela fonctionne bien en utilisant ce qui est indiqué dans la documentation :
https://snakemake.readthedocs.io/en/stable/snakefiles/configuration.html#cluster-configuration

Je viens de voir que cela fonctionnait sur le cluster IFB (slurm-drmaa-1.0.7).
(Ils en parlent pour la version slurm-drmaa-1.1.0 :https://github.com/natefoo/slurm-drmaa/releases)

En deux mots, j'indique dans le fichier cluster.yaml :

__default__:
  name: "{rule}.{wildcards}"
  output: "{rule}.{wildcards}.slurm.out"
  error: "{rule}.{wildcards}.slurm.err"

et je lance la commande snakemake de la manière suivante :

  snakemake --jobs XX --cluster-config cluster.yaml --drmaa " ...... -J {cluster.name} --output={cluster.output} --error={cluster.error}"

Les fichiers
    slurm-[job_nb].out
deviennent
    {rule}.{wildcards}_slurm.err

Je n'ai pas testé avec des wildcards, mais j'imagine que cela fonctionne.

Cela fonctionne aussi sans drmaa, la commande est (quasiment identique) :

  snakemake --jobs XX --cluster-config cluster.yaml --cluster "sbatch ... -J {cluster.name} --output={cluster.output} --error={cluster.error}"

Bien cordialement,
Thomas

Bonjour,

Merci @ThomasFa pour tous ces éclaircissements sur slurm-drmaa.

@jvanhelden pour info, voici l'extrait de la doc Slurm pour les fichiers de sortie Slurm:

-o, --output=<filename pattern>
Instruct Slurm to connect the batch script's standard output directly to the file name specified in the "filename pattern". By default both standard output and standard error are directed to the same file. For job arrays, the default file name is "slurm-%A_%a.out", "%A" is replaced by the job ID and "%a" with the array index. For other jobs, the default file name is "slurm-%j.out", where the "%j" is replaced by the job ID. See the filename pattern section below for filename specification options.

-e, --error=<filename pattern>
Instruct Slurm to connect the batch script's standard error directly to the file name specified in the "filename pattern". By default both standard output and standard error are directed to the same file.

A bientôt