Наивное распараллеливание в файле.pbs
Можно ли сделать распараллеливание через цикл for в файле PBS?
Ниже приведен файл моей попытки. Я хотел бы выделить 4 узла и одновременно выделить 16 процессов на узел. Я успешно сделал это, но теперь у меня есть 4 работы, и я хотел бы отправить одну работу на каждый узел. (Мне нужно сделать это, потому что алгоритм очередей заставит меня подождать несколько дней для отправки 4 отдельных заданий в кластере, который я использую)
#!/bin/bash
#PBS -q normal
#PBS -l nodes=4:ppn=16:native
#PBS -l walltime=10:00:00
#PBS -N HuMiBi000
#PBS -o HuMiBi.000.out
#PBS -e HuMiBi.000.err
#PBS -A csd399
#PBS -m abe
#PBS -V
./job1.sh
./job2.sh
./job3.sh
./job4.sh
Задания выполняются независимо и не используют одни и те же данные. Могу ли я запустить 1 задание на узел из того же сценария PBS?
Спасибо.
1 ответ
Стандартный способ достижения этого - использование библиотеки интерфейса передачи сообщений (MPI). Open MPI - прекрасная реализация, с которой вы можете работать. Некоторые основные примеры можно найти здесь, и это руководство для OpenMPI, если вы хотите узнать больше.