Тестовые скрипты:
-
/usr/local/submit/submit-wien2k.sh
Запуск расчетов:
Последняя версия WIEN2k находится в директории /usr/local/WIEN2k/WIEN2k_11
. Для запуска WIEN2k, нужно задать некоторые переменные окружения. Для этого нужно скопировать файл /usr/local/submit/.bashrc.wien2k в домашнюю директорию
cp /usr/local/submit/.bashrc.wien2k ~
Перед запуском WIEN2k нужно добавить следующую строчку в конец файла ~/.bashrc
:
source ~/.bashrc.wien2k
Содержимое файла /usr/local/submit/.bashrc.wien2k
:
# Intel MKL
. /usr/local/intel/mkl/bin/mklvars.sh intel64
. /usr/local/intel/bin/compilervars.sh intel64
export WIENROOT=/usr/local/WIEN2k/WIEN2k_11
export STRUCTEDIT_PATH=$WIENROOT/SRC_structeditor/bin
export OCTAVE_EXEC_PATH=${PATH}::
export OCTAVE_PATH=${STRUCTEDIT_PATH}::
export PATH=$PATH:$WIENROOT:$STRUCTEDIT_PATH:.
ulimit -s unlimited
Для запуска задачи на кластере нужно указать директорию, в которой хранятся данные для расчетов. Перед началом расчетов необходимо скопировать скрипт submit-tp в домашную директорию:
cp /usr/local/submit/submit-tp ~
Запуск задачи на кластере осуществляется следующим образом (предполагается, что в директории ~/WIEN2k/myProject
хранятся данные для расчетов):
~/submit-tp -f "/usr/local/submit/submit-wien2k.sh ~/WIEN2k/myProject"
При этом результаты расчетов будут находится в указанной папке (~/WIEN2k/myProject
для этого примера). Для запуска задачи на нескольких ядрах, выполните следующую команду:
~/submit-tp -n <число_ядер> -f "/usr/local/submit/submit-wien2k.sh ~/WIEN2k/myProject"
Внимание, файл .machines
в директории с данными будет переписан (в нем будут указаны задействованные узлы). Содержимое скрипта /usr/local/submit/submit-wien2k.sh
:
!/bin/bash
if [ -n "$1" ]; then
SPECIFIED_DIR="$1"
if [ ! -d /tmp/$USER ]; then
mkdir /tmp/$USER
fi
if [ ! -d /tmp/$USER/wien2k ]; then
mkdir /tmp/$USER/wien2k
fi
# Create and export SCRATCH directory
export SCRATCH=`mktemp -d -p /tmp/$USER/wien2k/`
# Change dir to project dir
cd "$SPECIFIED_DIR"
# Create .machines file
cat $PBS_NODEFILE > machines.LINUX
cat machines.LINUX |uniq > nodes.par
for i in `cat nodes.par | xargs`; do
n=$(grep $i machines.LINUX|wc -l);
echo 1:${i}:$n;
done > .machines
# Create SCRATCH dir on each node
for n in `cat nodes.par`; do ssh $n "mkdir -p $SCRATCH;"; done
echo "Nodes:"
cat .machines
echo "Using WIEN2k: $WIENROOT"
# Start calculations
time $WIENROOT/run_lapw -p -NI -ec 0.0001
# Remove SCRATCH dir
for n in `cat nodes.par`; do ssh $n "rm -rf $SCRATCH"; done
else
echo "Please specify a working directory!"
fi
Для задания других параметров, либо запуска другой команды WIEN2k измените следующую строчку в скрипте /usr/local/submit/submit-wien2k.sh
:
time $WIENROOT/run_lapw -p -NI -ec 0.0001
Простой пример запуска задачи на счёт приведён ниже:
$ mkdir -p ~/WIEN2k
& mkdir -p ~/WIEN2k/examples
$ cd ~/WIEN2k/examples
$ cp /usr/local/WIEN2k/examples/Fe.tar ~/WIEN2k/examples
$ tar xvf ~/WIEN2k/examples/Fe.tar
$ ~/submit-tp -n 16 -f "usr/local/sumit/submit-wien2k.sh ~/WIEN2k/examples/Fe"
19089.pbs-tp.hpc.cc.spbu.ru
В директории, где запускался скрипт, по окончании вычисления будут располагаться файлы:
$ ls -l *19089
-rw------- 1 vij users 648 Dec 27 2011 job.1324937055.e19089
-rw------- 1 vij users 116 Dec 27 2011 job.1324937055.o19089
Результат вычислений будет располагаться в директории ~/WIEN2k/Fe
. Стоит также упомянуть о проблеме, связанной с интерактивным вводом. Для задач, требующих участия пользователя (интерактивного ввода пользовательских данных) можно использовать следующее решение. Для передачи таких данных программе в скрипте небходимо написать код вида:
echo -e "<параметр 1>\n <параметр 2>\n ... <параметр k>\n" | <программа>
При этом i-ый параметр соответствует i-ому преждложению ввода от программы. Поясним это на примере. В пакете WIEN2k есть приложение kgen, которое удобно запускать через программу x (получается x kgen). Ему требуется получить от пользователя 2 значения. Вначале появляется предложение ввести данные. После того, как пользователь ввел данные, приложение обрабатывает их и через некоторое время от пользователя снова требуется ввод данных. Таким образом, приложение дважды задаст пользователю вопрос и потребует ввода данных. Но как быть, если приложение запускается на кластере, где пользовательский ввод невозможен? Решение - указанная выше конструкция. В данном случае она будет выглядеть так (вместо "3" и "0" могут быть любые другие значения):
echo -e "3\n 0\n" | x kgen
Таким образом, на первый запрос приложению будет передано значение "3", а на второй - "0".
Web-интерфейс
Для запуска web-интерфейса, нужно задать некоторые переменные окружения. Для этого скопируйте файл /usr/local/submit/.bashrc.wien2k в домашнюю директорию.
cp /usr/local/submit/.bashrc.wien2k ~
Перед запуском Web-интерфейса добавьте следующую строчку в конец файла ~/.bashrc
:
source ~/.bashrc.wien2k
На виртуальной машине выполните команду:
w2web
Введите имя пользователя и пароль (рекомендуется использовать такие же, как и для входа на виртуальную машину), в дальнейшем они будут использоваться для входа в web-интерфейс
Введите номер порта:
7890
Введите полное имя виртуальной машины.
Нажмите (y).
После того как w2web был запущен, запустите браузер виртуальной машины и перейдите по адресу:
http://hostname:7890
где hostname - полное имя вашей виртуальной машины. Инструкция по запуску графических приложений на виртуальной машине находится по адресу: http://cc.spbu.ru/ru/services/....
Для своей работы w2web использует директорию "~/.w2web".
Чтобы получить доступ к web-интерфейсу с локальной машины используется ssh-туннель.
Доступ с Linux машины
Для установки ssh-туннеля, на локальной машине выполните команду:
ssh -fNL 2000:hostname:7890 user@hostname
где hostname - полное имя виртуальной машины, а user - имя пользователя для входа на виртуальную машину.
Введите пароль для входа на виртуальную машину.
Запустите браузер локальной машины и перейдите по адресу:
http://localhost:2000
Доступ с Windows машины
Для установки ssh-туннеля необходима программа Putty.
Запустите Putty от имени Администратора.
В левой колонке выберите "Connection → SSH → Tunnels" .
Заполните поля:
"Source port" - 2000
"Destination" - hostname:7890
где hostname - полное имя виртуальной машины.
Нажмите Add.
В левой колонке выберите "Session".
В поле "Host Name (or IP address)" введите полное имя вашей виртуальной машины и нажмите кнопку "Open".
Введите имя пользователя и пароль для входа на виртуальную машину, после входа в систему ssh-тунель будет установлен.
Запустите браузер локальной машины и перейдите по адресу:
http://localhost:2000