Questão:
Executando SnakeMake no cluster
Nikita Vlasenko
2018-09-05 06:16:19 UTC
view on stackexchange narkive permalink

Não entendo como especificar corretamente os parâmetros em um cluster SLURM para snakemake usá-los. Tentei enviar o seguinte arquivo SLURM , mas não funciona dessa forma e o número de núcleos usados ​​é apenas 1 , não 20 :

  #! / bin / bash # SBATCH -p padrão # SBATCH -A geral #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  

Então, tentei seguir o snakemake tutorial. E criei cluster.json com base nos parâmetros SLURM de que preciso:

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

E executou snakemake dentro de um snakemake recém-criado .sh script:

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

E está me dando um erro agora:

sbatch: erro: Não foi possível abrir o arquivo
/ bin / sh: linha 1: -t: comando não encontrado Erro ao enviar jobscript (código de saída 127):

Agora estou completamente perdido no que eu deveria realmente fazer. Eu preferiria o envio de arquivos .slurm simples, mas como fazer o snakemake usá-los? Qualquer sugestão seria muito apreciada.

Eu removi \ - separadores de linha no script snakemake.sh :

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

E começou a funcionar. Não é conveniente para mim. Prefiro enviar apenas um trabalho usando o arquivo .slurm passando todos os parâmetros de #SBATCH . É possível?

O que significa% A?
nome de usuário que é responsável pelos recursos de computação da conta do cluster, seu pagamento. Você pode ser esse usuário, mas também pode ser a outra pessoa, dependendo de quem está pagando pelo cluster.
Você pode usar {rule} e {wildcards} na saída e nomes de erro no slurm.json para nomear a saída e os arquivos de erro de um trabalho? então, em vez de "output": "snakemake% A.out", tem "" output ":" snakemake {rule} _ {wilcards} .out "?
boa pergunta. idk, mas também gostaria de aprender que, uma vez que simplifica as coisas
Dois respostas:
Devon Ryan
2018-09-05 12:05:38 UTC
view on stackexchange narkive permalink

Você pode omitir --nodes , você precisa do seguinte:

  #! / bin / bash # SBATCH --ntasks-per-node = 1 # SBATCH -c threads_from_snakemake # SBATCH -p some_partitionCommands vá aqui  

Para slurm, você pode querer modificar meu script SlurmEasy. Usamos isso com o snakemake o tempo todo, geralmente no formato:

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

Você também vai querer unidades com suas solicitações de memória, como 12G . Além disso, em geral, é melhor não submeter o próprio snakemake ao cluster, em vez de executá-lo em um nó interativo e fazer com que ele envie trabalhos em seu nome (se os administradores reclamarem, indiquem que o snakemake mal está usando os recursos do nó principal).

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

Embora eu concorde em não enviar o snakemake ao cluster, não é uma ótima solução fazer seu programa piloto rodar interativamente - a automação via script em lote não deve depender de um shell aberto.

Que tal alocar um nó inteiro com muitos núcleos e trabalhar dentro das habilidades paralelas do GNU do snakemake.



Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 4.0 sob a qual é distribuído.
Loading...