Otázka:
Spuštění SnakeMake na clusteru
Nikita Vlasenko
2018-09-05 06:16:19 UTC
view on stackexchange narkive permalink

Nechápu, jak správně specifikovat parametry v clusteru SLURM , aby je snakemake mohl používat. Zkoušel jsem odeslat následující soubor SLURM , ale nefunguje to tak a počet použitých jader je pouze 1 , ne 20 :

  #! / bin / bash # SBATCH -p standard # SBATCH -A overall #SBATCH --time = 12: 00: 00 # SBATCH --output = snakemake% A.out # SBATCH - -error = snakemake% A.err # SBATCH --nodes = 1 # SBATCH --ntasks = 1 # SBATCH --cpus-per-task = 20 # SBATCH --mem = 120000snakemake  

Potom jsem vyzkoušel snakemake návod. A vytvořil cluster.json na základě parametrů SLURM , které potřebuji:

  {"__default__": {"A": "celkově "," time ":" 24:00:00 "," nodes ": 1," ntasks ": 1," cpus ": 20," p ":" standard "," mem ": 120000," output ": "snakemake% A.out", "error": "snakemake% A.err"}}  

A běžel snakemake uvnitř nově vytvořeného snakemake .sh skript:

  #! / bin / bashsnakemake -j 999 --cluster-config cluster.json --cluster "sbatch -A {cluster.A} -p { cluster.p} \ -t {cluster.time} - výstup {cluster.output} - chyba {cluster.error} - uzly {cluster.nodes} \ - ntasks {cluster.ntasks} --cpus-per -task {cluster.cpus} --mem {cluster.mem} " 

A teď mi to dělá chybu:

sbatch: error: Nelze otevřít soubor
/ bin / sh: řádek 1: -t: příkaz nebyl nalezen Chyba při odesílání JobScript (kód ukončení 127):

Nyní jsem úplně ztracen na to, co bych vlastně měl dělat. Upřednostňuji obyčejné pravidelné odesílání souborů .slurm , ale jak je použít k použití snakemake ? Jakékoli návrhy by byly velmi oceněny.

Odstranil jsem \ - oddělovače řádků ve skriptu snakemake.sh :

  #! / bin / bash
snakemake -j 10 --cluster-config cluster.json --cluster "sbatch -A {cluster.A} -p {cluster.p} -t {cluster.time} - výstup {cluster.output} - chyba { cluster.error} --nodes {cluster.nodes} --ntasks {cluster.ntasks} --cpus-per-task {cluster.cpus} --mem {cluster.mem} " 

A začalo to běžet. Není to pro mě pohodlné. Raději bych raději odeslal pouze jednu úlohu pomocí souboru .slurm , který předá všechny parametry z #SBATCH . Je to možné?

Co znamená% A?
uživatelské jméno, které má na starosti výpočetní prostředky účtu klastru, jejich platby. Můžete být tímto uživatelem, ale může se také stát, že jde o druhou osobu, v závislosti na tom, kdo za klastr platí.
Můžete použít {rule} a {zástupné znaky} v názvech výstupů a chyb v souboru slurm.json k pojmenování výstupních a chybových souborů úlohy? takže místo "output": "snakemake% A.out" máte "" output ":" snakemake {pravidlo} _ {wilcards} .out "?
dobrá otázka. idk, ale také bych se to chtěl naučit, protože to věci zjednodušuje
Dva odpovědi:
Devon Ryan
2018-09-05 12:05:38 UTC
view on stackexchange narkive permalink

Můžete vynechat --nodes , potřebujete následující:

  #! / bin / bash # SBATCH --ntasks-per-node = 1 # SBATCH -c threads_from_snakemake # SBATCH -p some_partitionCommands go here  

U slurmu možná budete chtít upravit můj skript SlurmEasy. Používáme to s snakemake po celou dobu, obvykle ve tvaru:

  snakemake -c "SlurmEasy -t {threads} -n {pravidlo} --mem-per-cpu {cluster.memory } "...  

Budete také chtít jednotky s požadavky na paměť, například 12G . Obecně je také nejlepší neposílat samotný snakemake do klastru, spíše jej spouštět na interaktivním uzlu a nechat ho odesílat úlohy vaším jménem (pokud si stěžovatelé administrátora všimnou, že snakemake sotva používá nějaké zdroje na hlavním uzlu).

Excel Que
2020-02-11 21:45:13 UTC
view on stackexchange narkive permalink

I když souhlasím s neodesíláním snakemake do klastru, není to skvělé řešení, aby se váš pilotní program spustil interaktivně - automatizace pomocí dávkového skriptu by neměla záviset na otevřeném prostředí.

Co takhle přidělit celý uzel s mnoha jádry a pracovat v rámci GNU paralelních schopností snakemake.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 4.0, pod kterou je distribuován.
Loading...