Текст ВКР (1218920), страница 3
Текст из файла (страница 3)
– запускать на выполнение команды оболочки.
Также имеются встроенные редактор McEdit и программа для просмотра файлов [9]. Таким образом, на кластере имеются все необходимые средства для редактирования и настройки компонентов программного комплекса.
Отдельно стоит упомянуть об использовании gnuplot для построения графиков результатов. Возможно визуализировать все данные с поддержкой XWindow, но в случае работы программного комплекса это не является необходимым. Гораздо удобнее выводить графики в файлы определенного формата, которые сразу же можно использовать в каких-либо публикациях или же для наглядного сравнения различных наборов параметров.
Построение графиков можно выполнять во многих свободно-распространяемых программах gnuplot, QtiPlot, Veusz и других. Большинство этих программ имеют интерактивный ГПИ, позволяющий выполнить точную настройку каждого графика. Перед программным комплексом стоит совершенно иная задача – необходимо создавать много однотипных графиков для различных наборов данных. В этом случае, редактировать каждый график вручную будет значительно затратным по времени. В gnuplot существует возможность строить графики по заданному сценарию – скрипту. Это обстоятельство позволяет производить построение множество графиков без участия человека – в автоматизированном режиме.
-
2.3 Взаимодействие компонентов и автоматизация
Разработку логической составляющей программного комплекса было решено производить на программном языке высокого уровня C++. Это решение обосновано следующими свойствами.
С++ – это компилируемый язык со статической типизацией. Наличие большого числа компиляторов, сборка программы с проверкой ошибок, поддержка консольных команд – все эти свойства значительно упрощают процесс разработки программного комплекса. Статическая типизация – позволяет иметь разработчику более полное представление о структуре переменных программы, а также отслеживать их значение в любой момент времени.
Поддержка высоко- и низкоуровневых средств, позволяет более полно задействовать все ресурсы вычислительного кластера. Использование указателей, ссылок шаблонов позволяет универсализировать конструкции программы.
Данный язык программирования обладает богатой историей и широким разнообразием функциональных библиотек и несмотря на обилие критики в его адрес, (например [10]) разумное его применение позволяет избежать затрат времени на написание прежде реализованных функций. Кроме того существует большое число различных интегрированных сред разработки ( integrated development environment – IDE) с открытым кодом, позволяющих производить отладку программного кода.
Не смотря на наличие на кластере необходимых компиляторов, использование IDE на локальной машине является принципиально важным. При таком подходе к разработке программного комплекса решаются следующие задачи:
– процесс разработки не зависит он наличия интернет соединения;
– достигается оптимальное распределение времени на проектирование;
– минимизируется занятость кластера.
Переносимость программного кода достигается путем его компиляции на кластере.
Наличие на кластере командной оболочки Bash и интерактивного графопостроителя gnuplot позволяет оптимально использовать все предоставляемы возможности. Bash как и gnuplot – представители так называемых «скриптовых» языков. Их отличительной особенностью является отсутствие необходимости компиляции кода перед его исполнением.
Представление программных компонент в виде отдельных скриптов является широко распространённым в Unix-подобных системах. Этим достигается распределение большой задачи на специфические подзадачи. В результате при возникновении ошибок – их устранение сводится к работе с каким-то отдельным компонентом, а не со всем комплексом в целом.
Командная оболочка для Linux – это не просто промежуточное звено между пользователем и ОС. Написанные на ее языке программы обычно называют скриптами или сценариями. В сценарии прописываются всевозможные команды и настройки для ОС Linux. Кроме этого существует возможность использования и таких стандартных для языков программирования возможностей, как условные операторы и циклы. Широкое применение скриптов в Unix-подобных системах связано также с их удобностью в задачах администрирования системы, когда нет необходимости использовать языки программирования высокого уровня [11].
Отрицательной стороной применения командной оболочки является последовательное считывание интерпретатором каждой строки скрипта для выполнения указанной инструкции. По этой причине выполнение скрипта происходит значительно медленнее, чем исполняемого файла. Тем не менее, язык командной оболочки значительно облегчает осуществление взаимосвязи между программными компонентами и автоматизированной работой комплекса. По этому стоит подробно изучить возможности скриптов Bash и gnuplot.
Bash (от англ. Bourne again shell, каламбур «Born again» shell – «Возрождённый» shell) – усовершенствованная и модернизированная вариация командной оболочки Bourne shell [12]. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.
Bash – мощный и простой в использовании язык сценариев, преимущества интерактивного взаимодействия, заимствованные из семейства командных оболочек C Shell, свобода распространения и полностью открытые исходные коды [12].
Отличия грамматики Bash и Bourne shell незначительны. Подстановка переменных, параметров, использование апострофов и кавычек, перенаправление – реализованы идентично. Поддержка этих возможностей в Bash основана на стандарте Posix 1003.2. Bash значительно отличается от других командных интерпретаторов по своей функциональности. По этой причине он негласно используется в качестве стандарта на современных Linux-серверах.
Относительно сложно происходит отладка Bash-скриптов по той причине, что командная оболочка не предусматривает такого модуля. Для того чтобы локализировать ошибки скрипта следует чаще пользоваться командой echo – вывода данных в консоль или же в файл лога. Это позволит следить за значениями переменных и отображать ход выполнения программы. Способы фиксации состояния исполнения программы не ограничиваются командой echo.Инструменты интерпретатора bash, которые могут помочь при отладке неработающих сценариев [12]:
– команда-фильтр tee, которая поможет проверить процессы и потоки данных в критических местах;
– bash -n scriptname - проверит наличие синтаксических ошибок, не запуская сам сценарий. Того же эффекта можно добиться, вставив в сценарий команду set -n или set -o noexec. Но некоторые из синтаксических ошибок не могут быть выявлены таким способом;
– bash -v scriptname - выводит каждую команду прежде, чем она будет выполнена. Того же эффекта можно добиться, вставив в сценарий команду set -v или set -o verbose. Ключи -n и -v могут употребляться совместно: bash -nv scriptname;
– bash -x scriptname - выводит, в краткой форме, результат исполнения каждой команды. Того же эффекта можно добиться, вставив в сценарий команду set -x или set -o xtrace.
Вставив в сценарий set -u или set -o nounset, вы будете получать сообщение об ошибке unbound variable всякий раз, когда будет производиться попытка обращения к необъявленной переменной.
Функция «assert», предназначенная для проверки переменных или условий, в критических точках сценария (эта идея заимствована из языка программирования C).
В случае написания сценариев для gnuplot ситуация практически аналогичная, но обладает своими особенностями.
Программа gnuplot – это интерактивная среда построения графиков с консольным интерфейсом. Автоматизировать построение графиков позволяет использование различных сценариев. Сам по себе сценарий для gnuplot содержит набор статических настроек, которые программа использует последовательно – подобно тому, как это делает интерпретатор Bash.
Необходимым условием для работы gnuplot с большим количеством входных файлов является использование имен файлов ввода и вывода в качестве переменных. Для этого в Bash используется команда:
gnuplot<<EOF …. EOF
которая указывает, что после EOF и до повтора этого управляющего слова находится встроенный файл команд для gnuplot. Такое включение gnuplot-элементов в Bash-сценарий позволяет пользоваться возможностями Bash при построении графиков. Как упоминалось выше – Bash-сценарии представляют пользователю широкие возможности по программированию, которые не предусмотрены в gnuplot. Благодаря этому достигается автоматизация построения графиков без участия человека.
Компоненты комплекса реализуются отдельно от высокоуровневого приложения. В процессе работы программный комплекс обращается к необходимым компонентам в порядке выполнения поставленных исследователем задач.
Резюмируя все аспекты проектирования можно выделить следующие основные моменты:
– возможности вычислительного кластера позволяют реализовать все необходимые компоненты программного комплекса;
– автоматический режим работы программного комплекса позволяет исследователю не вникать в сложности взаимодействия составляющих компонентов на различных программных языках;
– можно выполнить все поставленные задачи с максимальным использованием возможностей вычислительного кластера и, как следствие, повысить его полезность.
3 Компоненты программного комплекса
3.1 Общая схема
В соответствии с заданием был разработан автоматизированный программный комплекс по нахождению оптимального набора параметров. Программный комплекс для расчета и анализа результатов исследуемой задачи состоит из следующих компонентов:
– Analyzer.exe– программа анализа, объединяющая весь программный комплекс в единое целое (далее Анализатор);
– starter и script – написанные на Bash исполняемые скрипты, осуществляющие постановку задачи на счет (далее Запускатель);
– bash2d.sh и plot2d.sh – Bash-скрипты для программы GNUPlot, обеспечивающие рисование графиков зависимости нормы погрешности решений от шага (сценарии Визуализатора);
– bash3d.sh и plot3d.sh – Bash-скрипты для программы GNUPlot, обеспечивающие рисование 3D-графиков по произвольным точкам в плоскости (скрипты Визуализатора);
– copy.sh – вспомогательный скрипт, используемый Анализатором для результирующего сбора информации.
Рассматриваемый программный комплекс рассчитан на совместную работу с приложением исследователя, которое должно быть предварительно подготовлено для ввода и вывода данных в определенном формате, а также способно принимать некоторые параметры в качестве ключа.
Параметры для счета должны принимать из командной строки в следующем формате:
<№_сетки><кол-во_потоков><δ><ν>< ν*><флаг><файл_парметров>,
где <флаг> может принимать значение 0 для этапа массового счета и 1 – для этапа счета с подготовкой данных для рисования.
После запуска с параметром <флаг> равным 1 должна создаваться папка с уникальным именем. В консоль должен выводиться полный путь до этой папки. В папке должны создаваться следующие файлы:
– u.dat и v.dat – файлы с данными для построения 3D-поверхностей в формате:
<1-я_компонента><2-я_компонента><Значение_абс_погрешности>;
– u.err и v.err – файлы с данными для вычисления процентов узлов с заданной погрешностью формата:
<значение_абсолютной_погрешности_в_узле_1>
…
<значение_абсолютной_погрешности_в_узле_N>
где N – число узлов конечно-элементной сетки.
Результаты должны выводиться в консоль в следующем формате:
<исследуемое_значение_1> …< исследуемое_значение_n><код1><код2>,
где n – количество величин, которые предполагается исследовать; <код1> и <код2> - содержат числовые характеристики распределения погрешностей для первой и второй компонент решения.
Комплекс предоставляет конечному пользователю возможности проведения расчета и анализа с использованием аппаратных ресурсов вычислительного кластера. Напомним, что доступ к кластеру осуществляется по протоколу SSH при помощи терминала Putty.exe, установленного на локальной машине (глава 2.2).
При работе на локальной машине под управлением операционной системы Windows файловый обмен между кластером и локальной машиной удобно осуществлять при помощи программы WinSCP – свободно распространяемой в сети. В данной программе редактирование настроечных файлов программного комплекса осуществляется в обычном текстовом редакторе, например, AkelPad, что более привычно для пользователей Windows. Встроенные возможности кластера также позволяют создавать, редактировать и удалять файлы входных данных, если в этом есть необходимость, но интерфейс в данном случае будет ограничиваться функционалом и возможностями редактора MCEdit [9].
Зависимость компонентов программного комплекса показана на диаграмме (рисунок 3):
Рисунок 3 – Компоненты программного комплекса
Запуск программного комплекса производится в автоматическом и в ручном режимах. Автоматический режим является режимом работы по умолчанию и предусматривает два этапа исследования начальных наборов параметров. Каждому этапу работы предшествует автоматическая подготовка входных данных (генерация файла с наборами параметров).















