Пользователям кластера "Макарьич"
Для получения аккаунта необходимо заполнить форму:
https://makarich.fbb.msu.ru/signup.html
Памятка для пользователей:
http://labhub.co/t/faq-dlya-polzovatelej-klastera-makarich/
*** Информация ниже устарела, но может быть полезна в академических целях ***
0. Что есть
node01: 512GB RAM 48 CPU
node03-node32: 48GB RAM 24CPU
91T HDD /home - для данных и расчетов
9Т HDD /home/user/work - для редактирования скриптов и текущей работы
/home/1000genomes - данные из проекта 1000 геномов.
Web-интерфейс к R-Studio: http://ma.fbb.msu.ru/rstudio/
1. Общие сведения
Зайти на кластер ssh user@ma.fbb.msu.ru.
Скопировать файл на кластер scp [файл] user@ma.fbb.msu.ru:~/destination
В windows использовать утилиты putty и pscp, либо tunnelier.
Для запуска задачи нужно создать стартовый скрипт start.sh
start.sh - пример стартового скрипта
#!/bin/bash
#PBS -l walltime=100:00:00,mem=200gb,nodes=bigmem
#PBS -d.
#как пример - запуск велвета, здесь нужно запустить нужную вам команду или программу
./velvetg from_all_reads -exp_cov auto -cov_cutoff auto -ins_length 80 -ins_length1 180 -ins_length2 120 -amos_file yes -min_contig_lgth 1000
В скрипте указано, что требуется 100 часов расчетного времени, 200Г памяти, использовать узел с большой памятью (node01). По умолчанию расчетное время (walltime) равно 1 часу. Если не указать walltime, то через час задача будет автоматически завершена.
Более подробно о запросе ресурсов можно прочитать в файле man pbs_resources.
Например, чтобы использовать 10 ядер, нужно задать
#PBS -l nodes=1:ppn=10.
Узлы делятся на обычные расчетные (node13-node32) и узел с большой памятью (node01). Последний предназначен для задач, требующих большой памяти (для сборки геномов). Поэтому его нельзя загружать задачами, для которых большая память не нужна. Если в опции -l не указать nodes, то по умолчанию задача попадет на один из обычных расчетных узлов, а не на узел с большой памятью. Если нужна большая память, нужно написать -l nodes=bigmem.
Поставить задачу на выполнение qsub start.sh.
В ходе выполнения задачи создаются 2 файла start.sh.o<номерзадачи> - поток вывода и start.sh.e<номерзадачи> - поток ошибок. Если задача создает очень большой (гигабайты) файл вывода, то лучше перенаправлять его сразу в определенный файл, например perl script.pl > /home/user/result.out. Иначе, весь большой вывод сначала создается в виде файла shart.sh.0 на одном из расчетных узлов, а в конце счета копируется по сети в домашнюю папку, что замедляет работу главного узла.
Просмотреть состояние очереди qstat -n1 - подробно, qstat - кратко.
Удалить задачу qdel <номер>.
Посмотреть доступные узлы можно командой qhost, более подробно - pbsnodes.
pbsnodes -l free - показывает все узлы, на которых свободно хотя бы одно ядро.
2. О расчетах на главном узле
Не считайте на главном узле (главный узел - это head02, куда вы попадаете, когда заходите).
Если нужно посчитать количество строчек в огромном файле, сделайте для этого задачу и запустите её в очередь.
#!/bin/bash
#PBS -d .
#PBS -l walltime=24:00:00
wc -l moscow.fca.fastq.filtered > moscow.fca.fastq.filtered.wc
Чтение огромных файлов с главного узла приводит к тому, что другие пользователи, которые в это время редактируют свои скрипты, не могут работать. Также не стоит открывать большие геномные файлы emacs'ом. На всякий случай стоит ограничение в 5G по памяти.
В начале работы со сборкой генома нужно взять чтения из /mnt/readarchive. Чтобы это сделать, зайдите на узел node01 и находясь на нем (а не на главном узле head02), скопируйте нужные вам чтения в домашнюю папку.
Запускать на короткое время и отлаживать программы можно с любого свободного от задач узла:
qhost - определить свободный узел
ssh nodeX - перейти на него
3. Массивы задач
Когда нужно обработать много файлов, например, пробластовать их против базы, хорошо использовать массивы задач. Не делайте массивов больше чем на 1000 задач.
Например
#!/bin/bash
#PBS -d .
echo $PBS_ARRAYID
Запуск задачи: qsub -t 0-39 start.sh. Просмотр очереди: qstat -t
Порождается 40 одинаковых задач, каждой выделяется свое ядро, каждой передается свое значение переменной $PBS_ARRAYID от 0 до 39. В зависимости от значения, можно внутри скрипта обратиться к какому-либо файлу, например perl transl.pl $PBS_ARRAYID.fasta > $PBS_ARRAYID.prot.
Можно ограничить ваш массив одним узлом: #PBS -l nodes=node13, тогда начнется выполнение первых 24-х задач, а остальные будут ждать в очереди.
Если указать строку #PBS -l nodes=node13:ppn=20+node14:ppn=20 для массива задач, то эта строка работает не для всего массива, а для каждой задачи из массива. Т.е. получается, что каждая из 100 задач будет пытаться занять 20 ядер на узле 13 и 20 ядер на узле 14. Следовательно, все считаться они будут медленно, и 39 из занятых 40 ядер будут простаивать. Не делайте так.
4. Приоритеты
Если у вас много мелких задач, и, с одной стороны, хочется их посчитать, а с другой - стыдно занимать кластер и вызывать справедливое негодование коллег, то поставьте пониже приоритет.
qsub -p -10 task.sh.
Тогда новые задачи, только что пришедшие в очередь (по умолчанию приоритет =0), будут запущены сразу, как только освободится ресурс для них, а задачи, запущенные ранее с низким
приоритетом, будут ждать.
5. Дополнительная информация
Любознательные пользователи могут обратиться к разделу 2.0 документации http://www.adaptivecomputing.com/resources/docs/torque/2-5-12/help.htm также многое написано в man qsub, man qstat, man pbs_resources
6. Программы
Многие программы уже установлены в /home/tools. Их можно использовать. Для исполняемых файлов создаются символические ссылки в /home/tools/bin. Этот путь добавлен в $PATH на всех узлах. Т.е. в скрипте можно просто писать program-binary, а не /home/tools/program/program-binary. Если вам нужна какая-то программа, и её нет в /home/tools, но она может пригодиться другим, то установите её в /home/tools/newprogram и сделайте символическую ссылку на исполняемый файл: ln -s /home/tools/newprogram/bin/program.exe /home/tools/bin/program.exe.
Есть распределенная версия mrbayes с mpi. В примере запускается на 2 узлах, занимая всего 46 ядер.
#!/bin/bash
#PBS -d .
#PBS -l walltime=100:00:00,nodes=node26:ppn=23+node27:ppn=23
mpirun -np 46 mb-mpi primates.nex
Список программ
7. Ограничения по вводу-выводу
Все вычислительные узлы, а также рабочий узел head02 подключены к файл-серверу (/home). Если файл сервер начинает испытывать очень большие нагрузки по чтению-записи, то становится трудно работать на head02. Придерживайтесь простого правила - при запуске массивов задач, которые интенсивно читают-пишут большие файлы (sam,bam, etc, размеры - в гигабайтах, десятках гигабайт) не занимайте этими задачами больше 5 узлов кластера.
Для отладки программ и редактирования скриптов можно использовать папку /home/user/work. Это диск не предназначен для запуска задач в очередь. Этот диск независим от /home. На него действует квота - 200G.
8. Сборка геномов
Как собирать геном - первые шаги
http://www.cbcb.umd.edu/research/assembly_primer.shtml
Для сборки использовать velvet или soapdenovo.
9. О памяти
В параметрах задачи -l nodes=1:ppn=24,mem=2GB
2GB означает не то, что задаче будет гарантировано 2GB памяти, а то, что как только задача превысит это значение, она будет снята.
Система очередей следит за количеством занимаемых ядер. По умолчанию задаче дается одно ядро. Если на узле уже нет свободных ядер или он в статусе busy (занят), то задача распределяется на следующий узел. Статус busy появляется, когда еще не все ядра заняты,
но когда узел уже интенсивно загружен расчетами (в системе для этого задано пороговое значение).
Если нужно гарантировать себе память, то это можно сделать, заняв весь узел (ppn=24),
или полузла (ppn=12), или запустив задачу на узле с большой памятью.