Как преобразовать цикл в Job-массив в кластере LSF

У меня есть 100 файлов, и я хочу распараллелить отправку, чтобы сэкономить время, а не запускать задания по одному. Как я могу изменить этот скрипт на массив заданий в LSF, используя систему отправки bsub, и запускать 10 заданий каждый раз?

#BSUB -J ExampleJob1         #Set the job name to "ExampleJob1"
#BSUB -L /bin/bash           #Uses the bash login shell to initialize the job's execution environment.
#BSUB -W 2:00                #Set the wall clock limit to 2hr
#BSUB -n 1                   #Request 1 core
#BSUB -R "span[ptile=1]"     #Request 1 core per node.
#BSUB -R "rusage[mem=5000]"  #Request 5000MB per process (CPU) for the job
#BSUB -M 5000                #Set the per process enforceable memory limit to 5000MB.
#BSUB -o Example1Out.%J      #Send stdout and stderr to "Example1Out.[jobID]"

path=./home/

for each in *.bam 
do 
samtools coverage ${each} -o ${each}_coverage.txt
done

Спасибо за уделенное время; любая помощь приветствуется. Я новичок в LSF и совсем запутался

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы отметили свой вопрос тегом nextflow , поэтому я предоставлю минимальное (непроверенное) решение с использованием Nextflow, включив исполнителя LSF . Используя Nextflow, мы можем абстрагироваться от базовой системы отправки заданий и сосредоточиться на написании конвейера, каким бы тривиальным он ни был. Я думаю, что этот подход предпочтительнее, но он создает зависимость от Nextflow. Я думаю, что он небольшой и, возможно, избыточный для ваших текущих требований, но Nextflow обладает другими преимуществами, такими как возможность изменять и возобновлять когда эти требования неизбежно меняются.

Содержимое main.nf:

params.bam_files = './path/to/bam_files/*.bam'
params.publish_dir = './results'


process samtools_coverage {

    tag { bam.baseName }

    publishDir "${params.publish_dir}/samtools/coverage", mode: 'copy'

    cpus 1
    memory 5.GB
    time 2.h

    input:
    path bam

    output:
    path "${bam.baseName}_coverage.txt"

    """
    samtools coverage \\
        -o "${bam.baseName}_coverage.txt" \\
        "${bam}"
    """
}

workflow {

    bam_files = Channel.fromPath( params.bam_files )

    samtools_coverage( bam_files )
}

Содержимое nextflow.config:

process {

    executor = 'lsf'
}

Запустите, используя:

nextflow run main.nf

Обратите также внимание:

LSF поддерживает ограничение памяти как для каждого ядра, так и для каждого задания. Nextflow предполагает что LSF работает в режиме ограничения памяти для каждого ядра, таким образом, он разделяет запрашиваемой памяти по количеству запрашиваемых процессоров.

Это не требуется, если LSF настроен на работу в памяти для каждого задания. лимитный режим. Вам нужно будет указать, что добавление опции perJobMemLimit в Scope executor в конфигурационном файле Nextflow.

Это так здорово, Стив, и ты дал замечательное объяснение. Я собираюсь попробовать это как можно скорее

LDT 06.10.2022 09:37

Другие вопросы по теме