Использование MSC Marc и Mentat
Принцип работы
- Программное обеспечение MSC установлено в поддиректориях '/opt/shared/msc/'. Например, Marc и Mentat 2010 находятся в '/opt/shared/msc/marc2010' и '/opt/shared/msc/mentat2010' соответственно. Ниже будут рассматриваться как раз версии 2010, при необходимости использовать другие версии ПО надо соответствующим образом изменить все пути.
- Пре- и постпроцессор к MSC.Marc, программа Mentat, взаимодействует с пользователем через графический интерфейс и может запускаться двумя способами:
- На сервере ИВЦ НГУ. Для передачи изображения на рабочую станцию пользователя используется технология X Window. Запуск Mentat осуществляется командой
/opt/shared/msc/mentat2010/bin/mentat
Текущая директория (из которой был произведен запуск) будет использоваться в качестве рабочей для создания временных файлов, поэтому перед запуском следует перейти в нужную директорию.
- На рабочей станции пользователя. Недостаток этого способа состоит в необходимости постоянно копировать данные между рабочей станцией и сервером: данные для Marc ('Marc input file') после создания на рабочей станции передаются на сервер, обрабатываются и затем результат должен для анализа передаваться обратно на рабочую станцию. Также необходимо предпринять дополнительные шаги для получения Mentat'ом лицензий через ssh-соединение с сервером.
- В обоих случаях сами вычисления (программа Marc) не должны запускаться непосредственно из Mentat, т.к. тогда они будут выполняться не на узлах кластера, а либо на управляющем сервере, который для этого не предназначен, либо на рабочей станции пользователя. Правильный алгоритм работы такой:
- С помощью Mentat создаётся один или нескольких 'marc input file'.
- Через планировщик Altair PBS Pro производится запуск Marc для их обсчета.
- После получения результата он анализируется с помощью Mentat.
- Принцип распаралелливания вычислений объясняется в следующей цитате из руководства 'Marc 2010 volume A' (глава '13. Parallel Processing'):
- Marc can make use of multiple processors when performing an analysis. Most, but not all, features of Marc are supported in parallel mode. The type of parallelism used is based upon domain decomposition. A commonly used name for this is the Domain Decomposition Method (DDM). The model is decomposed into domains of elements, where each element is part of one and only one domain. The nodes which are located on domain boundaries are duplicated in all domains at the boundary. These nodes are referred to as inter-domain nodes below. The total number of elements is thus the same as in a serial (nonparallel) run but the total number of nodes can be larger. The computations in each domain are done by separate processes on the machine used. At various stages of the analysis, the processes need to communicate data between each other. This is handled by means of a communication protocol called MPI (Message Passing Interface). MPI is a standard for how this communication is to be done and Marc makes use of different implementations of MPI on different platforms. Marc uses MPI regardless of the type of machine used. The types of machines supported are shared memory machines, which are single machines with multiple processors and a memory which is shared between the processors, and cluster of separate workstations connected with some network. Each machine (node) of a cluster can also be a multiprocessor machine.
- Marc also has matrix solvers which can perform the matrix solution in parallel while the rest of the analysis is serial. The MUMPS solver supports both shared memory machines and clusters. It uses MPI for the communication. The SGI and Pardiso solvers support shared memory machines. These solvers can also be used with DDM.
- Таким образом, при распараллеливании есть два ключевых момента - разбиение задачи на области (DDM) и параллельный запуск с использованием MPI. Причем MPI используется как в случае нескольких вычислительных узлов, так и для нескольких процессорных ядер одного узла.
- Вариант использования 'parallel matrix solvers' пока не опробован и не задокументирован.
Mentat 2012
В новой версии Mentat, Mentat 2012, значительно изменился интерфейс пользователя, поэтому отдельно установлена версия Mentat 2012 с классическим интерфейсом.
- Mentat 2012 с новым интерфейсом установлен в
/opt/shared/msc/mentat2012
. В новая версия реализована с использованием библиотеки интерфейсных компонент QT и требует аппаратной поддержки функций OpenGL. Для того, чтобы запустить Mentat на удаленном X-дисплее (подробнее о запуске графических программ на удаленном X-дисплее), следует перед запуском Mentat выполнить команду
export LIBGL_ALWAYS_INDIRECT=y
Затем запустить Mentat командой
/opt/shared/msc/mentat2012/bin/mentat
- Mentat 2012 с классическим интерфейсом установлен в
/opt/shared/msc/mentat2012_classic
. Запуск этой версии выполняется по следующей команде.
/opt/shared/msc/mentat2012_classic/bin/mentat
Кроме того, в новой версии Marc 2012 появилась возможность использования ускорителей вычислений на основе технологии CUDA (Подробнее Использование GP GPU в MSC Marc).
DDM
- Определиться с количеством используемых областей (domain), т.е. сколько параллельных потоков (процессорных ядер) будут производить вычисления.
- Запустить Mentat одним из двух описанных выше способов.
- Создать новый или открыть имеющийся 'model file' (с расширением 'mud'): Files - Open. Для первоначального ознакомления предлагается использовать файл
/opt/shared/msc/marc2010/test_ddm/exmpl2/cyl2.mfd
- Замечено, что при длинном списке поддиректорий иногда не отображается полоса прокрутки, для её появления необходимо сменить текущую директории (например, перейти на уровень выше) и затем вернуться обратно.
- Далее последовательность действий слегка различается между версиями:
- Для Mentat 2008:
- Main - Jobs - Domain decomposition - Generate, ввести количество областей внизу в командной строке.
- Main - Jobs - Run, включить 'Use DDM'.
- Для Mentat 2010:
- Main - Jobs - User domains - Generate, ввести количество областей внизу в командной строке.
- Main - Jobs - Run - Parallelization, включить 'Use DDM', переключить на 'Decomposition in Mentat', убедиться, что выбрана опция 'Multimle input file', Ok.
- Сохранить 'Marc input file': Advanced job submission - Write input file - Ok. Получилось несколько (в соответствии с введённым количеством областей) файлов с расширением 'dat'. Если они находятся на рабочей станции пользователя, их надо скопировать с помощью протокола SCP/SFTP на сервер ИВЦ.
- На этом работа с Mentat завершена до получения результатов.
- Возможность использования 'single input file', декомпозицию Marc'ом и выбор оптимального для конкретной задачи алгоритма декомпозиции при необходимости предлагается изучить самостоятельно.
Marc
- Запуск Marc осуществляется через планировщик PBS, с использованием скрипта 'run_marc'
- Открыть ssh-сессию, если она ещё не установлена.
- Перейти в рабочую директорию, в которой находятся полученные на предыдущем шаге 'Marc input file' и где будут создаваться файлы результатов. В случае, если рабочие файлы имеют существенный размер, необходимо использовать области для временных файлов, а не свою домашнюю директорию.
- Создать в текущей директории скрипт, например, с именем 'marc2010.sh', примерно такого содержания:
#!/bin/sh #PBS -l walltime=00:05:00 #PBS -l select=1:ncpus=4:mpiprocs=4:mem=8000Mb #PBS -m n MARC_INPUT_FILE=cyl2_job1 RUN_MARC=/opt/shared/msc/marc2010/tools/run_marc MPICLEAN=/opt/shared/msc/marc2010/tools/mpiclean ##--- MPI_PROCS=$(cat $PBS_NODEFILE | wc -l) HOSTFILE=$PBS_O_WORKDIR/hostfile.$PBS_JOBID cd $PBS_O_WORKDIR date ; echo rm -f $HOSTFILE >/dev/null 2>&1 nodes=$(cat $PBS_NODEFILE|sort -u|awk '{print $1}') for n in $nodes ; do echo -n "$n " >> $HOSTFILE cat $PBS_NODEFILE | grep -c $n >> $HOSTFILE done echo "HOSTFILE:" ; cat $HOSTFILE $RUN_MARC -jid $MARC_INPUT_FILE -host $HOSTFILE -nprocd $MPI_PROCS \ -dir $PBS_O_WORKDIR -sdir $PBS_O_WORKDIR \ -v n -b n -ci no -cr no 2>&1 echo $MPICLEAN rm -f $HOSTFILE >/dev/null 2>&1 echo ; date
- Скорректировать параметры PBS 'walltime' и 'select', указав необходимые ресурсы. Подробное описание возможных параметров PBS находится в руководстве пользователя, доступном на странице, посвященной работе с PBS.
- В переменной MARC_INPUT_FILE указать общую часть названия имеющихся 'marc input file': без цифр спереди и без расширения 'dat'.
- Параметры скрипта 'run_marc' описаны в руководстве 'Marc 2010 Volume A', глава 'Program Initiation':
- -jid $MARC_INPUT_FILE: Input file (job) name identification.
- -host $HOSTFILE: name of the host file for running over a network.
- -nprocd $MPI_PROCS: Number of domains for parallel processing.
- -dir $PBS_O_WORKDIR: Pathname to directory where the job I/O should take place.
- -sdir $PBS_O_WORKDIR: Directory where scratch files are placed.
- -v n: Do not ask for confirmation.
- -b n: Run Marc in the foreground.
- -ci no: Do not copy input files automatically to remote hosts for a network run.
- -cr no: Do not copy post files automatically from remote hosts used for a network run.
- Находясь в рабочей директории, поставить задачу в очередь, выполнив:
qsub marc2010.sh
- Дождаться завершения работы. В рабочей директории должны появиться файлы перенаправленного вывода: 'marc2010.eXXXX' и 'marc2010.oXXXX'
- Просмотреть marc2010.oXXXX и убедиться, что работа завершена без ошибок, т.е. что в конце файла присутствует следующий текст:
This is a successful completion to a Marc simulation indicating that no additional incremental data was found and that the analysis is complete.
- После этого можно вернуться к Mentat и проанализировать полученный результат.