Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Запуск программЗадача ставится в очередь обычной командой запуска MPI-приложений (в квадратных скобках указаны необязательные параметры): mpirun -np N <программа с аргументами!> где N - число процессоров, которое должно быть не более разрешенного числа процессоров для одной задачи. Система автоматически подбирает свободные узлы (процессоры) для запуска задачи. На каждом узле может быть запущено прикладных процессов более, чем реально доступно процессоров. Если задача запущена, то система присваивает задаче уникальный номер (ID). В дальнейшем ID может использоваться для получения информации о состоянии задачи и о результатах ее выполнения. Спецификация необходимых ресурсов может быть осуществлена в qsub с помощью ключей командной строки, особенно - l. Например, чтобы поставить в очередь single задачу sleep.job на один процессор, на полтора часа и используя сто мегабайт памяти, можно сделать так:
qsub -l nodes=1:ppn=1,mem=100mb,walltime=1:30:00 -q single sleep.job
Еще одна возможность задания ресурсов, более удобная – это указание их внутри самого командного файла, вначале его, в строках-комментариях начинающихся с #PBS, и запуск. Например файл sleep.job может быть следующим:
#!/bin/bash #PBS -q single #PBS -l nodes=1:ppn=1,mem=100mb,walltime=1:30:00 #PBS -S /bin/bash #PBS -o sleep.out #PBS -e sleep.err #PBS -N sleep
echo " Start date:`date`" sleep 10 echo " End date:`date`"
В таком случае он запускается просто как qsub sleep.job. Полный список параметров и ресурсов для qsub можно найти c помощью man qsub и man pbs_resources. Для запуска параллельных задач, т.е. задач, использующих несколько процессоров, необходимо выполнять одно главное правило: Задача должна работать именно на тех узлах и тех процессорах, которые выделены ей Torque. Большинство дистрибутивов MPI имеют собственную систему динамического определения узлов, на которых будет запущена программа. Такая система не должна использоваться, необходимо статически указать дистрибутиву MPI «правильные» узлы. Для этого нужно чтобы командный файл задачи брал список выделяемых узлов из файла, на который указывает переменная $PBS_NODEFILE.
Дистрибутив OpenMPI умеет самостоятельно получать список узлов от Torque, поэтому пользователю нет необходимости заботиться об этом. При использовании дистрибутивов MVAPICH, MVAPICH2 необходимо указать список узлов вручную или использовать специальное средство запуска mpirun_pbs. Каким образом это можно сделать описано ниже. Например, вот так может выглядеть командный файл запуска параллельной версии программы расчета числа Пи с использованием дистрибутива OpenMPI: #!/bin/bash#PBS -l nodes=2:ppn=2,mem=100mb,walltime=1:30:00#PBS -S /bin/bash #PBS -o out#PBS -e err#PBS -N cpi#PBS -q para /share/openmpi/bin/mpirun –np 4 /home/testuser/bin/cpi
Разумеется, программа cpi должна быть скомпилирована с использованием дистрибутива OpenMPI, например:
/share/openmpi/bin/mpicc /home/testuser/bin/cpi.c –o /home/testuser/bin/cpi
Команда /share/openmpi/bin/mpirun –np 4 /home/testuser/bin/cpi запускает 4 экземпляра программы cpi, выполняемых параллельно. Как видно из примера, пользователю не нужно заботиться, на каких узлах исполняется программа. В этом преимущество OpenMPI.
|