ВКР: Разработка системы поддержки выполнения DVM-программ
Описание
Оглавление
Введение 3
Краткое описание C-DVM 6
Постановка задачи 9
Функции системы поддержки 10
Неравномерно-блочное распределение 12
Результаты работы 14
Список литературы 15
Рисунок 1. Распределение массива на системе процессоров 16
Приложение 1. Результат трансляции программы на C-DVM 17
Приложение 2. Фрагмент трассировки программы 19
Приложение 3. Случай разной загрузки процессоров 20
Введение
В настоящее время возможности дальнейшего наращивания производительности средств вычислительной техники в рамках последовательных принципов обработки информации считаются практически исчерпанными, что обусловлено в основном конечной скоростью распространения сигналов. Поиск решений проблемы повышения производительности идет в направлении развития принципов параллельной обработки информации. Однако и при использовании этих принципов возникает множество проблем, которые, прежде всего, связаны с эффективным использованием потенциальных возможностей параллельных вычислительных систем.
Параллельная обработка – не новое понятие. Операционные системы по крайней мере уже лет тридцать имеют дело с моделированием и реальным воплощением параллельного действия компьютеров. Разработчики аппаратных средств занимались проблемами параллелизма еще со времен фон Неймана. Действительно, в ранних проектах машин фон-неймановского типа рассматривались различные свойства параллельной работы. Однако эти проекты отвергались главным образом из-за низкой надежности компонентов, доступных для конструирования машин. Способствовал реализации возможно более простых проектов и общий недостаток опыта.
Ныне производители машин стали предоставлять разработчикам и программистам возможность использования множества процессоров непосредственно для совместного решения одной задачи.
Некоторый беспорядок в области параллельного программирования существует в настоящее время благодаря большому разнообразию компьютерных культур, которые стали источником терминологии, используемой энтузиастами параллельного программирования. Часто это приводит к ситуациям, когда одно базовое понятие может быть описано тремя или четырьмя словами или фразами, которые имеют почти, но не полностью идентичный смысл.
Еще большее расхождение в терминологии возникает из-за различия между машинами с общей памятью и с распределенной памятью. Каждый тип машины может моделировать машину другого типа, однако хорошо видна линия раздела, что, конечно, отражается в двух перекрывающихся, но не идентичных множествах терминов для родственных понятий.
Параллельное программирование может быть еще более разочаровывающим, чем традиционное программирование. К обычным для всех видов разработки программ проблемам здесь добавляются новые, и для успешного параллельного программирования необходимо считаться с дополнительными критериями. Разработка программного обеспечения для параллельных ЭВМ непосредственно связана со следующими проблемами:
- исключение взаимных блокировок и бесполезных обменов сообщениями;
- предохранение от лишних операций синхронизации;
- избежание образования слишком большого числа параллельных процессов;
- обнаружение завершения программы простейшим способом.
К новым критериям оценки параллельных программ относятся:
- ускорение программы в зависимости от числа процессоров;
- величина затрат времени на синхронизацию;
- влияние размера задачи на ускорение;
- сбалансированность загрузки процессоров;
- максимальное число занятых процессоров при решении задачи;
- детерминизм выполнения программы.
Кроме того, при проектировании программ возникают вопросы нового типа:
- какой размер должны иметь «порции» параллельной программы?
- сколько параллельных процессов должно быть образовано?
- какой вид синхронизации процессов должен быть принят?
- как должен управляться доступ к разделяемым данным?
- как гарантировать детерминированное выполнение программы?
- как должны подразделяться задачи обработки для достижения наибольшей эффективности использования доступного параллельного оборудования?
В настоящее время возрастает потребность в средствах организации параллельных вычислений, особенно для распределенных систем. Одним из средств, которые обеспечивают возможность параллельной работы большого числа разнородных компьютеров, является MPI.
MPI - это стандартизованный интерфейс передачи сообщений, вышла уже вторая версия стандарта. Это не новый язык программирования, это библиотека функций, которые могут быть вызваны из языков вроде C и Fortran. Он был разработан открытым международным комитетом и быстро получил широкую поддержку, потому что был тщательно спроектирован, чтобы обеспечивать максимальную производительность на многих платформах. Есть реализации MPI как для машин с общей памятью, так и для распределенных систем. Практически для любой платформы существует хотя бы одна реализация стандарта MPI. Например, для рабочих станций на основе Windows NT таких реализаций не менее трех. Однако из-за низкоуровневости MPI, довольно сложно писать параллельные программы без использования дополнительных средств. Действительно, MPI назвали языком ассемблера параллельного программирования. Одним из таких средств, облегчающих написание параллельных программ, является язык C-DVM.
Краткое описание C-DVM
Язык C-DVM предназначен для разработки мобильных и эффективных параллельных программ вычислительного характера. Он представляет собой расширение языка Си в соответствии с моделью DVM (Distributed Virtual Machine, Distributed Virtual Memory), разработанной в ИПМ им М.В. Келдыша РАН.
Вычислительные программы для последовательных ЭВМ традиционно создавались на языках Фортран 77 и Си. Для многопроцессорных ЭВМ с распределенной памятью (транспьютерные системы, Intel Paragon, IBM SP2, МВС-100) и сетей ЭВМ такие программы в настоящее время, как правило, создаются на языках Фортран 77 и Си, расширенных библиотеками передачи сообщений (PVM, MPI). Разработка таких параллельных программ требует от прикладного программиста гораздо больших усилий, чем разработка последовательных программ, поскольку ему требуется не только распределить данные и вычисления между разными процессорами, но и организовать взаимодействие процессоров посредством обмена сообщениями. Фактически, параллельная программа представляет собой систему взаимодействующих программ, каждая из которых выполняется на своем процессоре. Программы на разных процессорах могут быть совершенно различными, могут различаться лишь незначительно, а могут являться одной программой, поведение которой зависит от номера процессора. Но даже в этом последнем случае, программист обычно вынужден разрабатывать и сопровождать два различных варианта своей программы - последовательный и параллельный.
Файлы условия, демо
Характеристики ВКР
Список файлов
- Дипломная работа.doc 258 Kb