У меня есть программа MPI, которая создает файл, который имеет время на итерацию определенного количества вычислений. Когда я запускаю этот код без отправки в очередь (этот кластер работает с SGE), он дает следующее время в секундах. Я захватил 8 процессоров, используя mpirun -np8
.Сроки программы MPI резко меняются после отправки в очередь
STEP ITIME
-------------
1 0.868128
2 0.426714
3 0.409768
4 0.427312
5 0.412737
6 0.413256
7 0.414480
8 0.414984
9 0.415683
10 0.416826
Но когда я представляю такое же количество работы на 8 процессоров и представить его в очередь, программа займет больше времени для вычисления итераций. Время на шаг почти в четыре раза.
STEP ITIME
-------------
1 3.189155
2 1.594365
3 1.600892
4 1.589424
5 1.605402
6 1.589136
7 1.599425
8 1.591966
9 1.601557
10 1.603447
Для отправки задания использовался следующий сценарий bash.
#!/bin/sh
#$ -S /bin/bash
#$ -pe orte 8
export PATH=~:$PATH
/opt/openmpi/bin/mpirun -np 8 ./exec
Буду признателен, если кто-то может указать мне, что может вызвать эту проблему?
Я пробовал $/opt/openmpi/bin/mpirun -np 8 uname -a. Когда я запускаю его в командной строке, я получил 8 одинаковых строк. Но, когда я пытаюсь отправить его в очередь, я получил 8 разных строк. Похоже, он работал на 8 разных хостах. – Madisz
хорошо там вы идете: ваша командная строка выполняется на одной машине, и процессы обмениваются сообщениями через разделяемую память или очень быстрый локальный loopback. ваша подача очереди запросила 8 узлов и пробежала по этим 8 узлам. ничего плохого в этом - вы можете направить на более высокий уровень параллелизма таким образом - но это то, что происходит. –