LINUX.ORG.RU
ФорумAdmin

torque+mpi


0

1

Дистрибутив scientific linux-5.7

Вдоволь натрахашись с пакетами rpm (там выползали ну просто страннейшие глюки с torque и openmpi/mpich2), обновляться до 6.1 не вариант, ну пока не вариант... хотя возможно, половину проблем это решило бы.

Принято было мною решение не париться, и собрать всё руками из исходников. Что мне вообще нужно сделать? Настроить систему очередей torque (openpbs) и проверить, чтобы она работала вместе с mpi. Взял сразу две реализации openmpi и mpich2. (первая вроде как на сях, другая на питоне).

Делал всё по инструкции, собирал из исходников. http://www.adaptivecomputing.com/resources/downloads/torque/ отсюда брал torque, версии 2.5.9, отсюда http://www.open-mpi.org/ openmpi последней стабильной версии, ну и отсюда http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads mpich2

Собрал всё, установил. torque поставил в /usr/local (ну и скрипты добавил в /etc/init.d). openmpi и mpich2 поставил в /opt/openmpi и /opt/mpich2 , чтобы была возможность выбора, и она была более очевидной.

Итак, настроил. Всё, в принципе работает. Вот, что пишет pbsnodes -a:

mgm
     state = free
     np = 4
     ntype = cluster
     jobs = 0/10.<хостнейм>
     status = много букафф
     gpus = 0

node1
     state = free
     np = 8
     ntype = cluster
     jobs = 0/10.хостнейм
     status = много букафф
     gpus = 0

node2
     state = free
     np = 8
     ntype = cluster
     jobs = 0/10.хостнейм
     status = много букафф
     gpus = 0

node3
     state = free
     np = 8
     ntype = cluster
     jobs = 0/10.хостнейм
     status = много букафф
     gpus = 0

Таким образом 4 ноды (первая главная), остальные вычислительные.

И в принципе всё работает... и в принципе как надо. Одно но, до которого голова моя никак не дойдёт %) не соображаю уже.

Запускаю тестовый скрипт вот такого вида:

#!/bin/bash
#PBS -l mem=100mb,walltime=1:30:00
#PBS -S /bin/bash
#PBS -N testmpi
#PBS -q batch
echo start
date
echo 'openmpi test...'
/opt/openmpi/bin/mpirun ~/testpbs/test.openmpi
echo 'mpich2 test...'
/opt/mpich2/bin/mpirun ~/testpbs/test.mpich2
date
echo end

собственно, test.openmpi и test.mpich2 тестовые программки по типу хеллоуворлда. они работают, всё нормально. После отработки этого скрипта создаются два файлика testmpi.e<номер> и testmpi.o<номер>, во втором соответственно вывод (то есть всё, что после echo, data, и вывод самих программ)

ИТАК, а если добавить в этот скрипт безобидный параметр nodes=4:

#!/bin/bash
#PBS -l [b]nodes=4[/b],mem=100mb,walltime=1:30:00
#PBS -S /bin/bash
#PBS -N testmpi
#PBS -q batch
echo start
date
echo 'openmpi test...'
/opt/openmpi/bin/mpirun ~/testpbs/test.openmpi
echo 'mpich2 test...'
/opt/mpich2/bin/mpirun ~/testpbs/test.mpich2
date
echo end

задача вроде запускается, всё нормально. но никаких файликов в том же каталоге не создаётся!!! и ничего никуда не пишется. никаких ошибок тоже... почему??? %)

И ещё кое-что... если указать параметр nodes=4:npp=4, то тогда он и вовсе ругается, что недостаточно ресурсов

qsub: Job exceeds queue resource limits MSG=cannot locate feasible nodes (nodes file is empty or all systems are busy)

Хотя это бессмыслица. на первой ноде 4 проца. на всех остальных по 8. уж по 4 на каждой точно должно запуститься.

В принципе, если эти параметры опускать и запускать без них - всё работает, да... но для чего тогда вообще эти параметры нужны? Где я ошибся?

> там выползали ну просто страннейшие глюки с torque и openmpi/mpich2

Например?

[…] не париться […] собрать всё руками из исходников


Н-да уж

[…] обновляться […] пока не вариант


На трех каких-нибудь из ЕМНИП двух десятков машин обновиться и тестово погонять — вполне вариант. Только я бы сначала LDAP+SSL оживил бы

задача вроде запускается, всё нормально. но никаких файликов в том же каталоге не создаётся!!! и ничего никуда не пишется. никаких ошибок тоже... почему??? %)


lsof +p $(pgrep имя_зачачи) что говорит?

на первой ноде 4 проца. на всех остальных по 8.


В конфигурации torque они прописаны? На всех узлах?

dexpl ★★★★★ ()
Ответ на: комментарий от dexpl

> Например?

Из того, что сейчас вспоминается и приходит в голову... какая-то ошибка, связанная с gethostbyname в mpich2. Если запускать руками, не проявляется, а если из скрипта - то почему-то возникает... и ничего не работает.

скорее всего в какой-то версии этот глюк просто поправили. а мейнтейнеры эту версию в дистрибутив не включили...

BattleCoder ★★★★★ ()
Ответ на: комментарий от dexpl

> задача вроде запускается, всё нормально. но никаких файликов в том же каталоге не создаётся!!! и ничего никуда не пишется. никаких ошибок тоже... почему??? %)

lsof +p $(pgrep имя_зачачи) что говорит?

Догадался... в чём дело. Это прописано в FAQ, просто не заметил сразу (оно в конце где-то) http://www.adaptivecomputing.com/resources/docs/torque/2-5-9/11.1troubleshoot...

qsub will not allow the submission of jobs requesting many processors

решением было сделать

Qmgr: set server resources_available.nodect=2048
Qmgr: set queue batch resources_available.nodect=2048

Странно, что такие параметры не принимаются по умолчанию... или я всё-таки чего-то не понял.

Вот так всегда... написал что-нибудь на лор. сам наткнулся на решение своей проблемы почти сразу... хотя и до этого пол-интернета перелопатил. Ну почти всегда.

В конфигурации torque они прописаны? На всех узлах?

Да, прописаны в /var/spool/torque/server_priv/nodes. Кстати, вывод команды pbsnodes говорит о том, что всё правильно определяется...

P.S. Кстати, я ещё не пробовал сторонний планировщик (вместо pbs_sched) использовать... вдруг это решит проблему, хотя и выглядит странно.

BattleCoder ★★★★★ ()

Не, оказывается ни хрена оно не помогло... Вместо этого теперь может запускать по несколько задач, каждая из которых требует по 100500 ядер процессоров... и все они запускаются на одной ноде. на первой. как будто на ней безлимитное число процессоров... а остальные ноды даже не задействуются.

что-то я неправильно понял.

BattleCoder ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.