Научная статья на тему 'Графический интерфейс ScopeShell: поддержка вычислительного эксперимента и визуализации данных'

Графический интерфейс ScopeShell: поддержка вычислительного эксперимента и визуализации данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
80
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
УПРАВЛЯЕМЫЙ ТЕРМОЯДЕРНЫЙ СИНТЕЗ / ВИЗУАЛИЗАЦИЯ ВЫЧИСЛИТЕЛЬНОГО ЭКСПЕРИМЕНТА / ГРАФИЧЕСКИЙ ИНТЕРФЕЙС / CONTROLLED THERMONUCLEAR FUSION / GRAPHICAL USER INTERFACE / COMPUTATIONAL EXPERIMENT VISUALIZATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Костомаров Д. П., Зайцев Ф. С., Шишкин А. Г., Степанов С. В.

Рассматриваются задачи визуализации и автоматизации рутинных операций, возникающие в процессе проведения вычислительного эксперимента. Предложен современный универсальный платформенно-независимый графический интерфейс к вычислительным кодам ScopeShell, включающий средства визуализации данных и мониторинга вычислений на распределенных системах. Описаны концепция, функциональные возможности и технология применения ScopeShell. Система ScopeShell используется для поддержки вычислительного эксперимента в области управляемого термоядерного синтеза. Система существенно повышает эффективность проведения исследований, требующих расчетов по большим вычислительным кодам.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Graphical interface SCOPESHELL: Support of numerical experiments and data visualization

The problems of visualization and automation of routine operations resulting in a computational experiment are considered. The up-to-date universal platform-independent graphical user interface for computer codes ScopeShell including data visualization and monitoring algorithms on distributed systems is designed and developed. We describe the concept, functionality and technology of the ScopeShell system. The ScopeShell is used to support computational experiment in the field of controlled thermonuclear fusion. The system greatly improves the efficiency of researches, requiring calculations with the help of large computer codes.

Текст научной работы на тему «Графический интерфейс ScopeShell: поддержка вычислительного эксперимента и визуализации данных»

УДК 004.514

Д.П. Костомаров, Ф.С. Зайцев, А.Г. Шишкин, С.В. Степанов4

ГРАФИЧЕСКИЙ ИНТЕРФЕЙС SCOPESHELL: ПОДДЕРЖКА ВЫЧИСЛИТЕЛЬНОГО ЭКСПЕРИМЕНТА И ВИЗУАЛИЗАЦИЯ ДАННЫХ*

Рассматриваются задачи визуализации и автоматизации рутинных операций, возникающие в процессе проведения вычислительного эксперимента. Предложен современный универсальный платформенно-независимый графический интерфейс к вычислительным кодам ScopeShell, включающий средства визуализации данных и мониторинга вычислений на распределенных системах. Описаны концепция, функциональные возможности и технология применения ScopeShell. Система ScopeShell используется для поддержки вычислительного эксперимента в области управляемого термоядерного синтеза. Система существенно повышает эффективность проведения исследований, требующих расчетов по большим вычислительным кодам.

Ключевые слова: управляемый термоядерный синтез, визуализация вычислительного эксперимента, графический интерфейс.

1. Введение. Традиционно сложные численные коды в проблеме управляемого термоядерного синтеза (УТС) разрабатываются без специального графического интерфейса. Такой подход объясняется необходимостью использования разнообразных мощных удаленных компьютеров и постоянным, достаточно быстрым совершенствованием вычислительной техники и системного программного обеспечения. Сильная привязка ресурсоемкого численного кода к конкретному графическому пакету значительно сузила бы круг доступных для кода вычислительных систем и потребовала бы больших усилий для его модернизации.

Задача настройки кода на конкретный расчет, компиляция и запуск программы на выполнение, как правило, проводятся вручную. Пользователю кода необходимо помнить имена множества файлов, содержащих входную информацию, а это могут быть не только файлы с данными, но и файлы с программами, знать особенности компиляции и запуска кода на том или ином компьютере. Все это затрудняет проведение расчетов.

Визуализация данных является еще более сложной задачей. Развитые численные коды, такие, например, как SCoPE [1], генерируют сотни и тысячи файлов с данными. Для построения графиков необходимо помнить смысл содержимого файлов, используемые единицы измерения величин, формат данных, создавать подписи к рисункам, осям координат, кривым и т. п. Для визуализации обычно применяют графические пакеты общего назначения, многие из которых требуют специального, не всегда простого формата входных данных, задания множества настроек или даже написания программы на некотором внутреннем языке. Такие системы хороши для качественного построения единичных графиков, но малопригодны для мониторинга вычислений, особенно удаленных, и быстрой визуализации большого множества функций.

Система ScopeShell ориентирована на автоматизацию рутинных операций, возникающих в процессе проведения вычислительного эксперимента, в том числе на распределенных системах, и представляет собой один из вариантов решения задачи построения универсального дружественного графического интерфейса для больших численных кодов и визуализации данных. Система разработана с учетом большой практики авторов в области математического моделирования плазмы, в частности опыта решения задач УТС. Программное обеспечение ScopeShell написано на языке JAVA и поэтому не зависит от программно-аппаратной вычислительной среды.

1 Факультет ВМК МГУ, проф., д.ф.-м.н., e-mail: d.kostomarovQcs.msu.su

2 Факультет ВМК МГУ, проф., д.ф.-м.н., e-mail: zaitsevQcs.msu.su

3 Факультет ВМК МГУ, ст. научн. сотр., к.ф.-м.н., e-mail: shishkinQcs.msu.su

4 Факультет ВМК МГУ, асп., e-mail: sergey.v.stepanov@gmail.com

*Работа поддерживалась Российским фондом фундаментальных исследований, гранты № 10-07-00207, 07-07-00064, 08-07-00182, 08-01-00721 и группой FAEG Ltd (http://leader.ic.msu.su/~farg).

2. Концепция и функциональные возможности. Графическая среда ScopeShell предназначена для автоматизации рутинных операций настройки входных и выходных данных численного кода, его компиляции и запуска, мониторинга формирования данных, преобразования формата данных, построения двумерных и трехмерных графиков, обеспечения доступа к распределенным по сети компьютеров файлам.

Одна из важных идей, заложенных в ScopeShell, — платформенная независимость графического интерфейса. С целью реализации этой идеи ScopeShell написан на языке JAVA.

Другая важная идея состоит в предоставлении возможности использования различных графических пакетов для непосредственного изображения данных. Такой подход позволяет избежать реализации сложной задачи визуализации и сосредоточиться на удобстве интерфейса пользователя. ScopeShell совместим с пакетом Gnuplot [2], разрабатываемым с 1986 г., свободно распространяемым и доступным в версиях для операционных систем MS Windows и UNIX.

Однако ScopeShell не привязан к конкретному графическому пакету. Общение с Gnuplot построено с помощью формирования файла директив, содержание которого может быть легко адаптировано для другого графического пакета.

Работа со ScopeShell состоит в манипуляции с древовидными списками и таблицами. Настройка ScopeShell на конкретный численный код проводится один раз и сохраняется в виде проекта. Проекты можно копировать и модифицировать, что позволяет избежать введения большого объема информации заново. Имеется рабочее поле для сохранения избранных, например часто используемых, графиков.

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

Основная таблица ScopeShell — таблица проектов Project Properties — содержит название проекта, имена командных файлов для компиляции и запуска численного кода, комментарий. Каждый проект может включать следующие компоненты.

• Sources — таблица файлов входных данных, включая файлы с программами. Такие файлы можно просматривать и редактировать с помощью встроенного в систему ScopeShell или внешнего редактора. Поля таблицы содержат краткое описание файла, его полное имя (место расположения в файловой системе) и комментарий.

• Files — таблица файлов выходных или входных данных численного кода в формате, пригодном для использования в применяемом графическом пакете, например Gnuplot. Элементы Files подлежат визуализации. Таблица Files содержит краткое описание содержимого файла, его полное имя, комментарий. В разделе Columns можно задать различные детали построения графиков: названия осей, подписи, единицы измерения, диапазоны переменных величин и т. д.

• Masks — таблица наборов близких по смыслу файлов, в именах которых присутствует нумерация. Например, выходные файлы кода SCoPE с именами EUO, EU20, ..., EU500 содержат информацию о тороидальном электрическом поле на временном шаге с номером 0, 20,..., 500. Здесь EU — префикс маски, 0 — начальное значение ее переменной части, 500 — конечное значение, 20 — шаг. Имя может содержать и некоторый постоянный суффикс. С помощью понятия маски реализуется возможность быстро изображать данные из множества файлов на одном графике. Поля таблицы Masks аналогичны таблице Files, но дополнительно содержат данные о нумерации файлов.

• Converts — таблица файлов для преобразования данных. В таблице хранится информация об именах входных и выходных файлов, команде конвертирования и комментарий. Данные Converts позволяют, например, переформатировать двоичный файл в текстовый для визуализации в Gnuplot.

Для хранения результатов вычислительного эксперимента и информации о соответствующих файлах в рамках системы ScopeShell разработана подсистема, состоящая из трех основных компонентов: сервера баз данных, программы-демона на стороне сервера баз данных и клиентской части. В качестве сервера баз данных используется MySQL Server, являющийся свободно распространяемым в версиях как для Windows, так и для UNIX.

Вся хранящаяся информация разбита на четыре уровня. Первым уровнем является информация о проекте: название проекта, данные о руководителе, даты начала и последнего обновления, количество задач и комментарии к проекту. На втором уровне находится информация о задаче, т. е. информация

о том, кто является ответственным за данную задачу, какова цель в проекте, о дате начала задачи, о количестве экспериментов. Кроме того, пользователь может хранить некоторые комментарии, касающиеся данной задачи. Третьим уровнем являются сведения о результатах вычислительного эксперимента, которые представляют собой набор масок для выделения необходимых данных, файлы масок и сведения о файлах данных. И, наконец, последним уровнем являются сами данные вычислительного эксперимента.

Система поддерживает контекстный поиск элементов, импорт новых файлов данных, ввод новых проектов, задач, масок, изменения данных проектов, задач, файлов, масок, экспорт файлов данных из базы данных, экспорт проектов программной системы SCoPEShell из базы данных, импорт проектов программной системы SCoPEShell в базу данных. При этом система автоматически создаст xml-файл по данным программной системы ScopeShell следующего формата:

<?xml version="1.0" encoding="Windows-1251"?> <Project>

<prjName> "Имя проекта" </prjName> <prjOwner> "Владелец" </prjOwner> <prjDBeg> "Дата начала" </prjDBeg> <prjDEnd> "Дата завершения" </prjDEnd> <prjComment> "Комментарии" </prjComment> <prjRunNum> "Количество экспериментов" </prjRunNum> <Run>

<runName> "Название эксперимента" </runName> <runOwn> "Владелец" </runOwn> <runPar> "Параметры эксперимента" </runPar> <runDate> "Дата эксперимента" </runDate> <File>

<fileName> "Файл данных" </fileName> <fileType> "Тип файла" </fileType> <fileComment> "Комментарии" </fileComment> <fileNum> "Вспомогательные данные" </fileNum> <filePropName> "Вспомогательные данные" </filePropName> <fileRepos> "Вспомогательные данные" </fileRepos> </File> <Mask>

<maskName> "Имя маски" </maskName> <maskStep> "Шаг" </maskStep> <maskComment> "Комментарии" </maskComment> <maskNum> "Вспомогательные данные" </maskNum> <maskPropName> "Вспомогательные данные" </maskPropName> </Mask> </Run> </Project>

После этого вся информация, содержащаяся в xml-файле, будет загружена в базу данных.

Систему можно использовать для доступа как к локальной базе данных, так и к удаленной. Удаленный доступ может обеспечиваться по протоколу JDBC и через безопасное соединение по протоколу SSH (Secure Shell). Для этого в системе реализован модуль доступа SSHClient, который позволяет не только перенаправлять запросы программной системы к базе данных по протоколу SSH, но и пересылать файлы по протоколу SFTP (Secure Shell File Transfer Protocol).

Предусмотрена возможность преобразования всего проекта или его частей в один или несколько файлов широко применяемого формата NetCDF (Network Common Data Form) [3]. Для визуализации NetCDF-файлов имеются различные коммерческие системы. Существуют преобразователи NetCDF в другие распространенные форматы, например IDA [4].

Система ScopeShell реализована на языке JAVA. Проведено расширенное тестирование системы с использованием различных верификаторов [5].

3. Графический интерфейс и технология использования. Команда вида java-jar ScopeShell.jar запускает ScopeShell на локальном компьютере. Запуск интерфейса на удаленном компьютере с отображением графики на локальном осуществляется через систему VNC (Virtual Network Computing) [6] или графический X-терминал [7].

Пример главного окна ScopeShell представлен на рис. 1.

Рис. 1. Окно Project Properties системы ScopeShell

Окно разделено на две области. В левой области расположен список проектов. Для каждого проекта имеется список файлов и масок. В правой области находится список часто используемых ранее построенных двух- и трехмерных графиков, т. е. избранное.

Для графического отображения данных достаточно выбрать конечный элемент дерева, всю маску или группу элементов, удерживая клавишу Ctrl или Shift. Построение графика происходит нажатием кнопки Plot или щелчком правой кнопки "мыши" и выбором Plot из всплывающего меню. На рис. 2 иллюстрируется построение двух трехмерных поверхностей на одном графике по данным из файлов J0 и J180. Всплывающее меню позволяет также сделать тонкую настройку внешнего вида графиков (Plot Options), преобразовать данные в формат NetCDF или отредактировать соответствующие поля таблицы Plots.

Кнопка Save a plot служит для помещения графика в избранное. Управление списком избранных рисунков и получение справочной информации осуществляется нажатием правой кнопки "мыши".

Кнопка Projects открывает окно Project Properties с таблицей проектов. В Project Properties (рис. 2) имеются кнопки для редактирования таблиц Sources, Files, Masks, Convert, а также кнопки компиляции и запуска проекта Compile и Run.

Операции над полями таблиц унифицированы. Детали описаны в он-лайн документации, реализованной в виде web-страниц. Действия пользователя аналогичны принятым, например, в известной системе MS Excel.

К достоинствам ScopeShell относится наличие гибкой контекстно-зависимой системы логических справок ScopeShell Wizard, автоматически подсказывающей возможные варианты действий в конкретной ситуации и предоставляющей информацию по каждому варианту (см. рис. 1).

Рис. 2. Визуализация двух поверхностей в ScopeShell

При проведении серии расчетов можно рекомендовать следующую технологию использования ЭсореЗЬеП.

• Создать в ЗсореЭЬеП канонический проект для данной серии расчетов и настроить численный код, например ЭСоРЕ, и среду ЗсореЭЬеП на некоторую каноническую структуру директорий проекта, например такую:

Directory SCoPE

SCoPE/SCoPE SCoPE/CANONIC SCoPE / CANONIC/BATCH SCoPE / CANONIC / CMP SCoPE / CANONIC/DATA.IN SCoPE / CANONIC/DATA.OUT

Description

Дистрибутив кода SCoPE и среды ScopeShell Файлы и директории ScopeShell Канонический проект SCoPE project Файлы для компиляции и запуска SCoPE Объектные файлы, созданные компилятором Входные файлы для кода SCoPE Выходные файлы для кода SCoPE

Каждому новому расчету можно сопоставить отдельный проект и отдельную директорию файловой системы, например с именем RUN1.

Рекурсивно скопировать директорию CANONIC в RUN1 с помощью штатных средств операционной системы. Затем в ScopeShell создать новый проект, скопировать в него таблицы канонического проекта (кнопки Projects -> Сору) и отредактировать средствами ScopeShell содержимое командных файлов в директории SCoPE/RUNl/BATCH и при необходимости данные в SCoPE/RUNl/DATA.IN и SCoPE/RUNl (кнопки Projects -> Sources).

Структура первой директории в серии расчетов примет вид:

Directory

SCoPE/RUNl

SCoPE/RUNl/BATCH

SCoPE/RUNl/CMP

SCoPE/RUNl/DATA.IN

SCoPE/RUNl/DATA.OUT

Description

Вариант RUN1 кода SCoPE. Исходные файлы Файлы для компиляции и запуска SCoPE Объектные файлы, созданные компилятором Входные файлы для кода SCoPE Выходные файлы для кода SCoPE

Написанные в хорошем стиле численные коды генерируют доступные для использования файлы с данными в процессе расчета. ScopeShell позволяет наблюдать динамику создания таких файлов, визуализировать их содержание. Список файлов в основном окне обновляется кнопкой Refresh. Данные для отображения на одном графике можно набирать из различных проектов, что существенно облегчает задачу сравнения и анализа результатов нескольких вариантов расчетов.

В заключение приведем примеры командных файлов для UNIX-систем. Эти файлы можно расположить, например, в поддиректории BATCH и запускать на выполнение из среды ScopeShell кнопками Projects -> Compile и Projects -> Run.

Файл term^scope_compile_unix.sh запускает командный файл в окне:

#!/bin/bash

Project Dir '../('ANOXIC

cd $ProjectDir

xterm -e ./BATCH/scope_compile_unix.sh k,

Содержание командного файла scope_compile_unix.sh может быть следующим: #!/bin/bash

FortranCompiler='ifort -с -03 -cm'

# Set linker command and options #FortranLinker='g77 -o scope.out' FortranLinker='ifort -static -o scope.out'

# Go to the directory where object and exe files should appear mkdir ./CMP

cd ./CMP

# Remove executable and object files rm -f scope.out *.o

# Compile all *.for files $FortranCompiler ,./*.for

Ф Link all *.o files $FortranLinker ,/*.o

echo 'SCoPE compilation and linking completed.' echo 'Sleeping for 1800 seconds ...' sleep 1800

Файл term^scope_run_unix.sh выполняет численный код в окне: #!/bin/bash

# Project directory relative to ScopeShell directory ProjectDir='../CANONIC'

cd $ProjectDir

xterm -e ./BATCH/scope_run_unix.sh k,

где scope_run_unix.sh содержит

#!/bin/bash rundir='./DATA.OUT' mkdir $rundir rm -f $rundir/* cd $rundir

rundir='pwd'

echo "SCoPE is executing in directory $rundir ..." nohup time ../CMP/scope.out k,

Если применяется описанная выше структура директорий, то при переходе в серии расчетов от варианта CANONIC к RUN1 достаточно в командных файлах из RUN1/BATCH заменить CANONIC на RUN1.

Предложенная схема проведения серии расчетов автоматизирует многие рутинные действия пользователя, позволяя сосредоточиться на исследовательской стороне дела.

4. Заключение. Создан современный универсальный платформенно-независимый графический интерфейс ScopeShell к вычислительным кодам, включающий средства визуализации данных и мониторинга вычислений на распределенных системах. Система ScopeShell является конкретной реализацией общих подходов к автоматизации программирования и вычислительного эксперимента. Программное обеспечение ScopeShell написано на языке JAVA. Проведена настройка интерфейса ScopeShell для поддержки мощных комплексов программ SCoPE [1] и FPP-3D [8]. Система ScopeShell доступна для использования удаленным пользователям на сайте http://leader.cs.msu.su/~fusion/.

Важно подчеркнуть, что необходимость разработки среды ScopeShell возникла при практическом решении очень сложных вычислительных задач в проблеме УТС. Система ScopeShell внедрена и используется в Culham Science Centre Агентства по атомной энергии Великобритании.

Из-за большого разнообразия подходов и высокой сложности задач в настоящее время еще не выработан общепризнанный стандарт для средств поддержки больших вычислительных кодов и вычислительного эксперимента. Однако разработка соответствующих систем крайне важна, так как позволяет выйти на качественно новый уровень решения задач математического моделирования за счет повышения производительности труда исследователей, занятых непосредственно моделированием, и обеспечения доступа широкого круга ученых, не участвовавших в разработке кодов, к уникальному программному обеспечению.

СПИСОК ЛИТЕРАТУРЫ

1. Kostomarov D.P., Zaitsev F. S., Shishkin A. G. et al. The problem of evolution of toroidal plasma equilibriua // Сотр. Phys. Comm. 2000. N 126. P. 101-106.

2. Gnuplot (http://www.gnuplot.info).

3. NetCDF (http://www.unidata.ucar.edu/software/netcdf).

4. Waterhouse J., Manhood S.J. The MAST data acquisition system — system architecture // Fusion engineering and design. 2000. N 40. P. 187-189.

5. Степанов C.B., Шишкин А. Г. Использование средств статической отладки для верификации программной среды ScopeShell // Вычислительные методы и программирование. 2009. № 10. С. 22-33.

6. Richardson Т., Stafford-Fraser Q., Wood К. R. et al. Virtual network computing // IEEE Internet Computing. 1998. 2. N 1. P. 33-38.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

7. S che i fier R., Gettys J. X Window system: Core and extension protocols. Boston: Elsevier Science & Technology Books, 1997.

8. Zaitsev F.S., Longinov V. V., O'Brien M. R. et al. 1. Difference schemes for the time evolution of three-dimensional kinetic equations //J. Comput. Phys. 1998. N 147. P. 239-264.

Поступила в редакцию 10.02.10

GRAPHICAL INTERFACE SCOPESHELL: SUPPORT OF NUMERICAL EXPERIMENTS AND DATA VISUALIZATION

Kostomarov D. P., Zaitsev F.S., Shishkin A. G., Stepanov S. V.

The problems of visualization and automation of routine operations resulting in a computational experiment are considered. The up-to-date universal platform-independent graphical user interface for computer codes — ScopeShell — including data visualization and monitoring algorithms on distributed systems is designed and developed. We describe the concept, functionality and technology of the ScopeShell system. The ScopeShell is used to support computational experiment in the field of controlled thermonuclear fusion. The system greatly improves the efficiency of researches, requiring calculations with the help of large computer codes.

Keywords: controlled thermonuclear fusion, graphical user interface, computational experiment visualization.

i Надоели баннеры? Вы всегда можете отключить рекламу.