Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка программных средств интерактивной параллельной машинной графики.doc
Скачиваний:
11
Добавлен:
13.08.2013
Размер:
566.78 Кб
Скачать

Разработка программных средств интерактивной параллельной машинной графики

 

 

 

 

 

 

"Допускается к защите" Курсовая работа студента IV

Зав кафедрой курса группы ис-401

_____________________ Шагубакова Максима Рашидовича

 

 

Научные руководители:

Старший преподаватель кипу

Владимир Лазаревич Авербух

Ведущий инженер-программист Дмитрий Валерьянович Манаков

 

 

 

 

 

 

 

 

 

 

Екатеринбург

2001

 

План:

  1. 1.     Введение

  •         Основные подходы к визуализации параллельных вычислений.

  1. 2.     Основная часть

  •         Постановка задачи

  •         Теоретическая часть

  •         Назначение программы

  •         Структура и использование программы

  •         Текст программы

  1. 3.     Заключение

  •         Перспективы развития программы

  1. 4.     Приложение

 

 

 

 

 

 

 

 

 

Введение

 

Как известно, МВС-1000 состоит из двух основных частей - вычислителя и управляющей машины. Задача пользователя выполняется на одном или нескольких процессорах вычислителя. Задачи могут запускаться и завершаться независимо друг от друга. Управляющая машина, в свою очередь, хранит файлы программ и исходных/результирующих данных, запускаемых (вводимых/выводимых) на вычислителе. Во время счета задачи на вычислителе управляющая машина предоставляет ей (задаче) свои внешние устройства прозрачным образом, так, как если бы они были подключены прямо к вычислителю. Вычислитель логически представляет собой сильно связанную локальную сеть из вычислительных модулей. Вычислительный модуль есть полноценная универсальная ЭВМ с процессором, ОЗУ и двумя системами ввода/вывода, обеспечивающими как стандартный ввод/вывод, так и обмен сообщениями. Физически управляющая машина представляет собой ЭВМ общего назначения с многопользовательской операционной системой, включенную в локальную сеть и способную поддерживать Telnet-сеансы. Как правило, в качестве конкретной машины выступает DEC Alpha Station под управлением ОС Digital Unix. Возможны и другие варианты. Физически вычислитель является сетью с распределенной средой связи между вычислительными модулями. Каждый модуль оснащен набором линков - линий связи для передачи сообщений от одного конца линии к другому. Наконец, вычислительный модуль внутри себя представляет собой двухпроцессорную ЭВМ, состоящую из коммуникационного процессора и вычислительного процессора DEC Alpha 21164. На коммуникационном процессоре вычислительного модуля выполняется коммуникационное ядро ОС, а на вычислительном процессоре -- собственно ОС модуля и программа пользователя

Традиционно "большой счет" на параллельных вычислителях идет по следующей схеме:

1. Модельный счет на параллельном вычислителе;

2. Передача данных на сервер визуализации;

3. Визуализация и анализ изображений в реальном времени [2].

Аналогичная схема применяется и в отечественных вычислительных центрах при организации использования графики на параллельных вы­числителях - счет на параллельных процессорах, сборка результатов в файле или на рабочей станции, визуализация на ПЭВМ или рабочей станции при помощи универсальных или специализированных графичес­ких систем. Такой подход связан как с простотой реализации, так и с особенностями архитектуры доступных параллельных ЭВМ.

Рассмотренную схему можно назвать схемой off-line-визуализации параллельных вычислений.

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

Целью on-line-визуализации является получение отображения состояния вычислительной модели, а также возможность вмешательства в ход работы для управления выполнением процессами, а в перспективе и для обеспечения работы отладочных средств.

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

Постановка задачи

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

Текущая: На данном этапе стоит задача написания программы, которая позволяет задать передачу данных между двумя программами, запускающимися на одном компьютере.

Теоретическая часть

Анализ возможностей аппаратуры и операционной системы МВС-1000, опыт использования популярных средств трехмерной и фотореалистической графики OpenGL и VTK, а также проведенные экспериментальные разработки выявили ряд подходов к созданию параллельных сред визуализации:

1. Возможность запуска пользовательского графического (или счетного) процесса на управляющей машине с МВС-1000. Эта возможность дает самый простой интерактивный вариант работы с МВС-1000 и подключения всех широких программных возможностей управляющей машины, на которой в настоящее время могут функционировать такие языки как C, Fortran различных версий, Java, доступны графические библиотеки OpenGL и VTK.

2. Разработка библиотеки параллельных графических алгоритмов (перемещение и вращение объектов), работающих непосредственно на МВС-1000. Это позволяет возложить расчеты при обработке графики на МВС-1000, с целью увеличения скорости отображения динамических образов.

3. Разработка многопроцессорного варианта библиотеки VTK. Реализуемый в настоящее время макетный многопроцессорный вариант библиотеки VTK предусматривает, что программа, функционирующая на процессоре МВС-1000, кодирует обращения к VTK в виде некоторого метафайла. (При этом при создании метафайла используется механизм идентификаторов объектов.) Метафайл передается на управляющую машину, где переданный метафайл разбирается и на основании его происходит непосредственное рисование.

В результате экспериментов показана возможность применения механизмов реализации функции обмена сообщениями между процессорами МВС-1000 и управляющей машиной вычислителя, функционирующей на базе DEC Alpha Station под управлением ОС Digital Unix, через именованные каналы.

В настоящее время уже существуют пакеты, позволяющие решать задачи в многопроцессорных системах в интерактивном режиме. Примером может служить MITMatlab, описанный в статье “The parallel problem server: a client-server model for large scale scientific computation” by Parry Husbands and Charles Isbell.

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

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

Данная модель клиент-сервер практически универсальна. Здесь есть HTTP-серверы, которые предоставляют доступ к данным через WWW, серверы баз данных, обеспечивающих доступ к индексированным данным. Так как эти серверы используют устойчивые протоколы для передачи информации, возможно создание клиентских программ в виде web browsers.

В этой модели используются стандартные сокеты системы Юникс для связи с клиентом. Прямой протокол. Клиенты посылают запрос, состоящий из команд и аргументов. Команда – именованная функция. Функции могут запрашивать загрузку данных, сохранение или создание. Кроме того, могут потребоваться специфические операции по обработке данных. Аргументы – список символьных переменных, целых чисел и чисел с плавающей точкой. После выполнения команды высылается сообщение от сервера, которое содержит результаты или ошибки. Поддерживается полный цикл edit-compile-run.

Данная модель допускает дополнение новыми библиотеками. В них могут описываться новые функции.

Благодаря тому, что используются C++ и MPI, данная система легко переносима.

Недостатки:

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

  2. 2.                     Отсутствие буферизации при передаче данных

 

Назначение программы

 

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

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

Например, задачи математической физики, в которых от коэффициентов зависит очень многое.

Основное требование интерактивной визуализации – оперативный ввод данных и параметров. Виды ввода данных: ввод числа, ввод номера кнопки для обеспечения выбора, ввод текста + ввод графических элементов (точек, ломаных). Мы беремся обеспечить все, кроме ввода графики.

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

 

 

 

Основные блоки программы

 

Данная версия разработана для обработки исходных файлов, написанных на языке С.

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

Прежде чем использовать программу в полной мере, необходимо настроить пути для её работы. Это можно сделать, открыв окно настройки директорий: “Options/Directories”.

В этом окне перечислены пять директорий:

  1. 1.     Command.com – путь к этому файлу

  2. 2.     Working directory – путь к следующим файлам, необходимым при компиляции: tcc.exe, tlink.exe, dpmiload.exe, dpmimem.dll.

  3. 3.     Output directory – путь, по которому размещаются отчеты по компиляции и откомпилированные файлы.

  4. 4.     Include directory

  5. 5.     Library directory – директории, необходимые для компиляции программ и содержащие стандартные библиотеки и заголовочные файлы языка С.

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

Теперь рассмотрим процесс настройки интерфейса между программами:

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

  1. 2.      Устанавливаем передачу переменных следующим образом: выбираем позицию отправки/получения в тексте, и переменную в списке для левого файла и позицию получения/отправки в тексте, и переменную в списке для второго файла. После этого станут доступны кнопки «Отправить» и «Получить».

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

  1. 3.                После завершения предыдущего шага вы должны определить сессии передачи данных. Для этого надо зайти в пункт меню “Sessions/Add”. Программа расставит в определенных местах процедуры начала и завершения отправки (получения) данных.

  1. 4.                Теперь вы можете сохранить или откомпилировать файлы. При этом программы будут проверены, подключена ли к ним библиотека, в которой реализованы функции обмена и, если нет, вам предложат подключить её.

  1. 5.                После компиляции будет сообщено, успешно ли она прошла. Если нет, ошибки можно посмотреть в файле отчета.

Если вы хотите изменить отправку (получение) переменных, необходимо удалить сессии, а после внесения изменений заново разбить.

Используя данную программу, я подготовил пример.

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

Программа вычислителя получает переменную - порядок кривой Гилберта и отправляет в файл точки для рисования.

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

 

Перспективы развития программы

 

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

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

1) выбор состояния программы;

2) вывод состояния программы;

3) модификация состояния программы.

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

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

Модификация состояния программы заключается в изменении состояния программного процесса (вплоть до исходного текста) и/или ее данных.

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