GNUPlot не может быть выполнен после команды mpirun в сценарии PBS - PullRequest
0 голосов
/ 16 мая 2018

У меня есть команда PBS примерно так

#PBS -N marcell_single_cell
#PBS -l nodes=1:ppn=1
#PBS -l walltime=20000:00:00
#PBS -e stderr.log
#PBS -o stdout.log
# Specific the shell types
#PBS -S /bin/bash
# Specific the queue type
#PBS -q dque

#uncomment this if you want to debug the process
#set -vx

cd $PBS_O_WORKDIR

ulimit -s unlimited

NPROCS=`wc -l < $PBS_NODEFILE`

#export PATH=$PBS_O_PATH

echo This job has allocated $NPROCS nodes
echo Cleaning old files...
rm -rf *.png *.plt *.log
echo Cleaning success
/opt/Lib/openmpi-2.1.3/bin/mpirun -np $NPROCS  /scratch4/marcell/CellMLSimulator/bin/CellMLSimulator -ionmodel grandi2010 -solverType CVode  -irepeat 4 -dt 0.01
gnuplot -p plotting.gnu

Получено сообщение об ошибке, сгенерированное журналом ошибок PBS.

/var/spool/torque/mom_priv/jobs/6265.node01.SC: line 28: gnuplot: command not found

Я уже убедился, что путь к GNUPlot уже добавлен в переменную среды PATH.

Однако странная часть: если я поменяю последовательность команд, как сначала gnuplot, а затем mpirun, ошибки не будет. Я подозреваю, что некоторые команды после mpirun требуют специальных настроек, но я не знаю, как это сделать

Уже следую этому решению, но безрезультатно.

команда сна не найдена в моментах pbs, но работает в оболочке

РЕДАКТИРОВАНИЕ:

Похоже, что до и после mpirun все еще получалась ошибка. и вот какой результат:

which: no gnuplot in (/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/opt/pgi/linux86-64/9.0-4/bin:/opt/openmpi/bin:/usr/kerberos/bin:/prog/tools/grace/grace/bin:/home/prog/ansys_inc/v121/fluent/bin:/bin:/usr/bin:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/scratch7/feber/jdk1.8.0_101:/scratch7/feber/code/apache-maven/bin:/usr/local/bin:/scratch7/cml/bin) 

Странно, так как когда я пытаюсь найти gnuplot, он находится в / usr / local / bin

ls -l /usr/local/bin/gnuplot 
-rwxr-xr-x 1 root root 3262113 Sep 18 2017 /usr/local/bin/gnuplot

Более того, если я запускаю эти команды без PBS, они выполняются, как я и ожидал:

/scratch4/marcell/CellMLSimulator/bin/CellMLSimulator -ionmodel grandi2010 -solverType CVode  -irepeat 4 -dt 0.01
gnuplot -p plotting.gnu

1 Ответ

0 голосов
/ 13 июня 2018

Весьма вероятно, что ваша система имеет разные "узлы входа / заголовка" и "вычислительные узлы". Это общепринятая практика во многих суперкомпьютерных кластерах. Пока вы создаете и запускаете приложение из головного узла, оно выполняется на одном или нескольких вычислительных узлах.

Вычислительные узлы могут иметь различное аппаратное и программное обеспечение по сравнению с головными узлами. В вашем случае, gnuplot установлен только на головном узле, как вы можете видеть из различных выходных данных which gnuplot. Чтобы решить эту проблему, у вас есть три подхода:

  1. Запрос системным администраторам установить gnuplot на вычислительных узлах.

  2. Соберите и установите свою собственную версию gnuplot в файловой системе, доступной с вычислительных узлов. Это может быть ваш домашний каталог или где-то еще, в зависимости от вашего кластера. В общем, файловая система, в которой находится ваше приложение, будет доступна. В вашем случае, где-нибудь под /scratch4/marcell/, вероятно, будет работать.

  3. Запустите gnuplot на головном узле после завершения заданий MPI в качестве шага постобработки. PBS / Torque не предоставляет прямой способ сделать это. Для этого вам нужно написать отдельный скрипт bash (не PBS).

...