Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
nextflow [2025/02/06 01:11] mirocownextflow [2025/02/26 20:36] (текущий) mirocow
Строка 1: Строка 1:
 ====== Nextflow ====== ====== Nextflow ======
 +
 +===== Основные компоненты =====
  
 ==== Директивы ==== ==== Директивы ====
Строка 11: Строка 13:
 </code> </code>
  
-https://training.nextflow.io/basic_training/containers/#software-directives+  * https://training.nextflow.io/basic_training/containers/#software-directives
  
 ==== Каналы ==== ==== Каналы ====
Строка 21: Строка 23:
 </code> </code>
  
-https://training.nextflow.io/basic_training/channels/#channel-factories+  * https://training.nextflow.io/basic_training/channels/#channel-factories
  
 ==== Процессы ==== ==== Процессы ====
Строка 51: Строка 53:
   * script|shell|exec/Скрипт — это строковый оператор, определяющий команду, которая должна быть выполнена задачей процесса.   * script|shell|exec/Скрипт — это строковый оператор, определяющий команду, которая должна быть выполнена задачей процесса.
  
-https://training.nextflow.io/basic_training/processes+  * https://training.nextflow.io/basic_training/processes
  
 ==== Операторы ==== ==== Операторы ====
Строка 62: Строка 64:
 </code> </code>
  
-https://training.nextflow.io/basic_training/operators+  * https://training.nextflow.io/basic_training/operators
  
 ==== Модули ==== ==== Модули ====
Строка 72: Строка 74:
 </code> </code>
  
-https://training.nextflow.io/basic_training/modules/+  * https://training.nextflow.io/basic_training/modules/
  
 ==== Конфигурация ==== ==== Конфигурация ====
Строка 88: Строка 90:
 docker.enabled = true docker.enabled = true
  
 +// Настройки пакетного планировщика
 process { process {
     cpus = 10     cpus = 10
Строка 103: Строка 106:
   * docker-daemon:// извлеките образ контейнера из локальной установки Docker и преобразуйте его в файл образа Singularity.   * docker-daemon:// извлеките образ контейнера из локальной установки Docker и преобразуйте его в файл образа Singularity.
  
-https://training.nextflow.io/basic_training/config/+  * https://training.nextflow.io/basic_training/config/
  
-===== Docker =====+===== Docker =====
  
 ==== Варианты работы: ==== ==== Варианты работы: ====
Строка 259: Строка 262:
 </code> </code>
  
-===== Docker Swarm =====+===== Docker Swarm =====
  
 Отсутствует поддержка в Nextflow Отсутствует поддержка в Nextflow
  
-===== Kubernetes =====+===== Kubernetes =====
  
 <code bash> <code bash>
Строка 269: Строка 272:
 </code> </code>
  
-===== Slurm =====+===== Slurm =====
  
-Slurm — это отказоустойчивая и высокомасштабируемая система управления кластером и планирования заданий с открытым исходным кодом для больших и малых кластеров Linux. Slurm не требует никаких изменений ядра для своей работы и является относительно самодостаточной. Как менеджер рабочей нагрузки кластера, Slurm имеет три ключевые функции. Во-первых, он выделяет пользователям эксклюзивный и/или неэксклюзивный доступ к ресурсам (вычислительным узлам) на определенный период времени, чтобы они могли выполнять работу. Во-вторых, он предоставляет фреймворк для запуска, выполнения и мониторинга работы (обычно параллельной работы) на наборе выделенных узлов. Наконец, он разрешает конфликты за ресурсы, управляя очередью ожидающих работ.+[[application:hpc:slurm|Slurm]] — это отказоустойчивая и высокомасштабируемая система управления кластером и планирования заданий с открытым исходным кодом для больших и малых кластеров Linux. Slurm не требует никаких изменений ядра для своей работы и является относительно самодостаточной. Как менеджер рабочей нагрузки кластера, Slurm имеет три ключевые функции. Во-первых, он выделяет пользователям эксклюзивный и/или неэксклюзивный доступ к ресурсам (вычислительным узлам) на определенный период времени, чтобы они могли выполнять работу. Во-вторых, он предоставляет фреймворк для запуска, выполнения и мониторинга работы (обычно параллельной работы) на наборе выделенных узлов. Наконец, он разрешает конфликты за ресурсы, управляя очередью ожидающих работ.
  
-Демоны slurmd обеспечивают отказоустойчивую иерархическую связь. Пользовательские команды включают: sacct , sacctmgr , salloc , sattach , sbatch , sbcast , scancel , scontrol , scrontab , sdiag , sh5util , sinfo , sprio , squeue , sreport , srun , sshare , sstat , strigger и sview . Все команды могут выполняться в любом месте кластера.+Демоны slurmd обеспечивают отказоустойчивую иерархическую связь.  
 +Пользовательские команды включают: sacct, sacctmgr, salloc, sattach, sbatch, sbcast, scancel, scontrol, scrontab, sdiag, sh5util, sinfo, sprio, squeue, sreport, srun, sshare, sstat, strigger и sview.  
 +Все команды могут выполняться в любом месте кластера.
  
-CharlieCloud и Singularity больше подходят для использования контейнеров в системе HPC с отдельным контроллером заданий (обычно Slurm) и устранения проблем безопасности в Docker в общей системе.+  https://github.com/koroltim/NextFlow-on-SLURM/tree/main/examples
  
 <code bash> <code bash>
Строка 285: Строка 290:
  
 OAR — это универсальный менеджер ресурсов и задач (также называемый пакетным планировщиком) для кластеров HPC и других вычислительных инфраструктур (например, экспериментальных испытательных стендов распределенных вычислений, где универсальность является ключевым фактором). OAR — это универсальный менеджер ресурсов и задач (также называемый пакетным планировщиком) для кластеров HPC и других вычислительных инфраструктур (например, экспериментальных испытательных стендов распределенных вычислений, где универсальность является ключевым фактором).
 +
 +  * https://oar.imag.fr/
 +  * https://github.com/oar-team/oar
 +  * https://github.com/oar-team/oar3
 +  * https://oar.imag.fr/docs/2.5/
  
 <code bash> <code bash>
Строка 290: Строка 300:
 </code> </code>
  
-===== HyperQueue =====+===== HyperQueue =====
  
  
 HyperQueue — это инструмент, разработанный для упрощения выполнения больших рабочих процессов (графов задач) на кластерах HPC. Он позволяет выполнять большое количество задач простым способом, без необходимости вручную отправлять задания в пакетные планировщики, такие как Slurm или PBS. Вы указываете, что именно вы хотите вычислить, а HyperQueue автоматически запрашивает вычислительные ресурсы и динамически распределяет нагрузку задач по всем выделенным узлам и ресурсам. HyperQueue также может работать без Slurm/PBS как общий распределенный механизм выполнения задач. HyperQueue — это инструмент, разработанный для упрощения выполнения больших рабочих процессов (графов задач) на кластерах HPC. Он позволяет выполнять большое количество задач простым способом, без необходимости вручную отправлять задания в пакетные планировщики, такие как Slurm или PBS. Вы указываете, что именно вы хотите вычислить, а HyperQueue автоматически запрашивает вычислительные ресурсы и динамически распределяет нагрузку задач по всем выделенным узлам и ресурсам. HyperQueue также может работать без Slurm/PBS как общий распределенный механизм выполнения задач.
 +
 +  * https://github.com/It4innovations/hyperqueue
 +  * https://it4innovations.github.io/hyperqueue
 +  * https://github.com/jaantollander/workflows
  
 <code bash> <code bash>
Строка 299: Строка 313:
 </code> </code>
  
-===== HTCondor =====+===== HTCondor =====
  
  
 HTCondor — это программная система, которая создает среду высокопроизводительных вычислений (HTC). Она эффективно использует вычислительную мощность машин, подключенных через сеть, будь то отдельный кластер, набор кластеров в кампусе, облачные ресурсы, как автономные, так и временно присоединенные к локальному кластеру, или международные сети. Мощь исходит из способности эффективно использовать общие ресурсы с распределенным владением. HTCondor — это программная система, которая создает среду высокопроизводительных вычислений (HTC). Она эффективно использует вычислительную мощность машин, подключенных через сеть, будь то отдельный кластер, набор кластеров в кампусе, облачные ресурсы, как автономные, так и временно присоединенные к локальному кластеру, или международные сети. Мощь исходит из способности эффективно использовать общие ресурсы с распределенным владением.
 +
 +  * https://github.com/htcondor/htcondor
  
 <code bash> <code bash>
Строка 308: Строка 324:
 </code> </code>
  
-===== Flux =====+===== Flux =====
  
  
 Flux — это гибкая структура для управления ресурсами, созданная для вашего сайта. Структура состоит из набора проектов, инструментов и библиотек, которые могут использоваться для создания настраиваемых менеджеров ресурсов для центров высокопроизводительных вычислений. В отличие от традиционных менеджеров ресурсов, Flux может работать как параллельное задание в большинстве пусковых установок, поддерживающих MPI, в том числе в самом Flux. Это не только делает пакетные скрипты и рабочие процессы для Flux переносимыми на другие менеджеры ресурсов (просто запустите Flux как задание), но также означает, что пакетные задания имеют в своем распоряжении все функции полного менеджера ресурсов, как будто у них есть целый кластер.  Flux — это гибкая структура для управления ресурсами, созданная для вашего сайта. Структура состоит из набора проектов, инструментов и библиотек, которые могут использоваться для создания настраиваемых менеджеров ресурсов для центров высокопроизводительных вычислений. В отличие от традиционных менеджеров ресурсов, Flux может работать как параллельное задание в большинстве пусковых установок, поддерживающих MPI, в том числе в самом Flux. Это не только делает пакетные скрипты и рабочие процессы для Flux переносимыми на другие менеджеры ресурсов (просто запустите Flux как задание), но также означает, что пакетные задания имеют в своем распоряжении все функции полного менеджера ресурсов, как будто у них есть целый кластер. 
  
-<code bash>+./nextflow.config 
 +<code> 
 +manifest { 
 +    mainScript = 'demo.nf' 
 +    homePage = 'https://github.com/nextflow-io/nextflow/tree/master/docker/flux' 
 +    description = 'Demo using Nextflow with Flux' 
 +}
  
 +process {
 +    executor = 'flux'
 +}
 </code> </code>
  
-===== Bridge =====+./main.nf 
 +<code> 
 +workflow { 
 +    breakfast Channel.of '🥞️', '🥑️', '🥧️', '🍵️', '🍞️' 
 +    haveMeal(breakfast) 
 +
 + 
 +process haveMeal { 
 +    debug true 
 +    input: 
 +    val food 
 +    script: 
 +    """ 
 +    printf '$food for breakfast!' 
 +    """ 
 +
 +</code> 
 + 
 +<code bash> 
 +$ nextflow -c nextflow.config run main.nf 
 +</code> 
 + 
 +===== # Bridge ===== 
 + 
 +Repo: https://github.com/cea-hpc/bridge
  
 <code bash> <code bash>
  
 </code> </code>