Запуск параллельных задач с файлами, находящимися вне AFS

Переменная $TMPDIR, устанавливаемая при выполнении задания, указывает на временную директорию на счетных машинах, куда могут быть записаны файлы задания. Соответственно в script-файле должны быть команды копирования нужных файлов с директорий, которые не входят в AFS и которые доступны непосредственно только на интерактивных машинах lxpub01-lxpub05, а на счетных машинах – доступны только по абсолютному пути.
Для работы с использованием /scrc/ надо иметь в домашней директории script-файл для запуска задачи с использованием MPI, а на /scrc/u/username – нужные файлы (тексты программы или исполняемый файл и/или входные файлы).

Пример script-файла для запуска параллельных задач с файлами вне AFS:

#PBS -l walltime=00:20:00
#PBS -l cput=00:05:00
#PBS -l nodes=4
# Переходим во временную директорию на счетном компьютере:
ret=0
cd $TMPDIR
if test $? -ne 0 ; then
echo “ERROR 1: can not cd $TMPDIR”
ret=1
fi
# Копирование исполняемых и входных файлов:
# (заменить директорию /scrc/u/username/ и имена файлов – на свои)
scp -p2 lxpub01:/scrc/u/tsap/test .
scp -p2 lxpub01:/scrc/u/tsap/in.dat .
# – здесь копируем файлы только на одну машину,
# а ниже – на остальные:
for h in `cat $PBS_NODEFILE | sort | uniq` ; do
test X”`hostname -f`” = X”$h” && continue
ssh -1x $h “mkdir -p $TMPDIR”
scp -p2 test $h:$TMPDIR
scp -p2 in.dat $h:$TMPDIR
done
# Проверка, все ли получилось.
# (имена файлов – тоже заменить на свои)
if test ! -e $TMPDIR/test ;

then echo “ERROR 2: no $TMPDIR/test”

ret=1
fi
if test ! -e $TMPDIR/in.dat ; then
echo “ERROR 3: no $TMPDIR/in.dat”
ret=1

fi
test $ret -ne 0 && exit 1
# Запуск на счет:
mpiexec ./test
# Копирование выходного файла out.dat
# (также заменить имя файла и адрес на /scrc/ на свои)
if [ -f out.dat ]; then
scp -p2 out.dat lxpub01:/scrc/u/tsap/.
fi