WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 | 4 | 5 |   ...   | 23 |
Предисловие В этот том сборника “Труды Института Системного Программирования" вошли статьи, отражающие ряд направлений исследований и разработок, выполняемых в Институте системного программирования Российской академии наук.

Цикл из первых трех работ сборника отражает новые решения в области создания средств разработки параллельных программ в модели "параллелизма по данным" (SPMD). В первой статье рассматривается возможность создания параллельных программ средствами моделей параллелизма высокого уровня, отражающих специфику прикладной задачи и учитывающих особенности архитектуры используемой вычислительной системы. Во второй и третьей статьях цикла дается описание разработанной авторами среды ParJava, являющейся расширением среды Java средствами разработки масштабируемых, переносимых, объектно-ориентированных параллельных программ для однородных и неоднородных вычислительных систем с распределенной памятью.

Вопросы оптимизации преобразований при реализации редуктивных операций над массивами данных рассматриваются в статье "Применимость тайлинга для компиляции редукций в языке С[]".

Следующие две работы посвящены актуальной проблеме взаимодействия объектно-ориентированных программ с реляционными базами данных.

Работа “Обеспечение совместимости протоколов Ipv4 и Ipv6:

бесконтекстный IP/ICMP транслятор в среде Linux” предоставляет одно из решений задачи перехода на протокол следующего поколения Ipv6 для компьютерных сетей.

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

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

Член-корреспондент РАН В.П.Иванников одно- или многопроцессорный компьютер, имеющий память, устройство ввода-вывода и операционную систему. Конструктивно узлы кластера могут быть собраны в общем корпусе или разнесены в пространстве. Такие кластеры легко обслуживать, расширять и модернизировать. Они мобильны и относительно недороги, а их мощность сопоставима с суперкомпьютерной.

Объектные модели высокого уровня Суммируя сказанное, можно сделать вывод о том, что вопросы создания для разработки эффективных простых и эффективных средств разработки параллельных программ сегодня как никогда актуальны, что подтверждается и многочисленными программ с параллелизмом по данным исследованиями в этой области, результаты которых публикуются в научной периодике и на сайтах в Интернет [4]. Одним из таких средств является среда ParJava [5]. Среда ParJava расширяет среду Java [6] средствами разработки О.И. Самоваров, С.С. Гайсарян, В.В. Бабкова программ с параллелизмом по данным, как для однородных, так и для неоднородных параллельных вычислительных систем с распределенной памятью.

Аннотация. В данной статье рассматривается возможность создания параллельных программ средствами моделей параллелизма высокого уровня, которые отражают Программы для многопроцессорных вычислительных комплексов с специфику прикладной задачи и учитывают особенности архитектуры конкретного распределенной памятью (суперкомпьютеров, кластеров, локальных сетей), как вычислительного комплекса. Такие модели призваны скрыть от разработчика уровень правило, создаются на языках C, C++ и Fortran, расширенных средствами, MPI (Message Passing Interface) – среды передачи сообщений [1]. Использование реализующими обмен сообщениями. В настоящее время наиболее широкое объектных моделей параллелизма превращает процесс разработки параллельных распространение получили два стандартных интерфейса, описывающих программ заданной прикладной области в отработанную технологию. Это позволяет межпроцессорные взаимодействия, – MPI (Message Passing Interface) и PVM значительно сократить время, затрачиваемое на создание и отладку параллельных (Parallel Virtual Machine) [7]. Эти интерфейсы реализованы как библиотеки к программ.

языкам C, C++, Fortran почти для всех существующих параллельных платформ.

Наибольшей популярностью у разработчиков пользуются реализации 1. Введение интерфейса MPI.

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



распределенной памятью включает в себя не только разработку синтаксически В настоящее время, как альтернатива суперкомпьютерам появились и и семантически корректного кода, но также и отладку эффективности его завоевывают все большую популярность вычислительные кластеры. Кластер – выполнения на этом вычислительном комплексе. Кроме того, отладка MPI это система параллельной или распределенной обработки, которая состоит из программы затруднена еще и тем, что ее поведение в процессе выполнения узлов – отдельных компьютеров, соединенных между собой быстрой недетерминировано. Несмотря на разнообразие функциональностей, MPI не локальной сетью, например, Myrinet [2] и работающих совместно как один предоставляет средств, необходимых для решения описанных выше задач, что интегрированный вычислительный ресурс [3]. Узлом кластера может быть делает разработку параллельных MPI программ трудоемким процессом.

Работа поддерживалась грантом РФФИ 99-01-5 В данной статье рассматривается возможность иного подхода к созданию В рамках модели разработчику предоставляются следующие возможности параллельных программ. Этот подход основан на использовании моделей параллельного выполнения программы:

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

сообщений, предоставив средства распараллеливания более высокого уровня распределение данных;

[8]. Конечно, такой подход ограничивает круг решаемых задач в рамках одной модели, однако превращает процесс создания параллельных программ распределение вычислений;

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

параллельных программ.

В качестве средства разработки моделей параллелизма рассматривается язык организация эффективного доступа к удаленным (расположенным на программирования Java. Таким образом, разрабатываемые модели будут других процессорах) данным;

обладать всеми преимуществами объектно-ориентированной технологии, а организация эффективного выполнения редукционных операций – значит простыми в создании, модификации и отладке. Переносимость Java глобальных операций с расположенными на различных процессорах программ позволит использовать объектные модели параллелизма на разных данными, число которых уменьшается после выполнения (таких, как их вычислительных платформах. Кроме того, рассматриваемые объектные модели суммирование или нахождение их максимального или минимального высокого уровня разрабатываются как часть среды ParJava.

значения).

Далее мы коротко рассмотрим возможности и состав объектной модели JavaКроме этого пользователю предлагаются средства отладки и анализа DVM [8]. Также разберем два примера параллельных программ. Первая параллельной программы, о которых будет сказано ниже.

параллельная программа разработана с использованием объектной модели параллелизма Java-DVM, вторая - средствами языка Java, расширенного В рамках модели DVM предполагается, что параллельная программа библиотекой MPI. Обе программы решают уравнение Лапласа методом Якоби и разрабатывается для многопроцессорной системы с распределенной памятью, реализованы в рамках модели SPMD (Single Program Multiple Data) [3]. В которую программист может представлять в виде 2-х архитектур – линейка или заключении мы проведем сравнительный анализ этих примеров, что позволит прямоугольная многомерная решетка процессоров. Это позволяет разработчику нам яснее увидеть достоинства и недостатки использования объектных моделей компактно и наглядно описывать распределение данных и вычислений. В параллелизма при разработке параллельных программ.

объектной модели Java-DVM такое представление вычислительной среды описывается соответствующим классом пакета java.dvm – VPM (название класса от Virtual Parallel Machine). Создав экземпляр подобного класса, и 2. Объектная модель Java-DVM изменяя его атрибуты, разработчик может управлять выделением сети Объектная модель Java-DVM представляет собой пакет Java классов, которые виртуальных процессоров требуемой архитектуры, на которых будет реализуют модель параллелизма DVM. Модель DVM была разработана в выполняться его параллельная программа. В процессе запуска программы Институте прикладной математики им. М.В. Келдыша РАН [10]. Она виртуальная сеть процессоров будет отображена на реальный вычислительный предназначена для создания переносимых и эффективных вычислительных комплекс. При этом пользователю дается механизм управления этим параллельных приложений. Аббревиатура DVM соответствует двум понятиям:

отображением.

Distributed Virtual Memory и Distributed Virtual Machine. Первое отражает Распределение данных осуществляется разделением какого-либо из измерений наличие единого адресного пространства. Второе отражает использование определенного массива на примерно равные части и размещением этих частей виртуальных машин для двухступенчатой схемы отображения данных и на процессоры. Для примера на рисунке 1 показано y-распределение массива вычислений на реальную параллельную машину.





(вдоль столбцов) на линейку процессоров n1 – n4.

7 import java.dvm.*;

public class MyClass { public static void main (String[] args) { /* Выделяется сеть виртуальных процессоров. Сеть рассматривается как линейка процессоров. */ VPM vpm = new VPM();

Рис. 1. Y-распределение массива на линейку процессоров.

Как было сказано выше, многопроцессорная вычислительная система, на /* Массив da размерностью 100x100 распределен на процессоры которой будет выполняться параллельная программа, может рассматриваться не виртуальной сети vpm. Используется y-распределение */ только как линейка процессоров, но и как многомерная решетка. Например, DoubleDArray da = new DoubleDArray(new RowDistribution(vpm, представим, что вычислительная система состоит из N процессоров. Тогда в 100, 100));

рамках модели DVM она может быть представлена как 2-мерная матрица } процессоров размерностью N1 на N2 (N=N1*N2). В этом случае одно из } измерений массива может быть разделено на N1 отрезков, а какое-либо другое на N2 число отрезков – 2d-распределение. В результате массив будет разделен на Рис. 3. Пример реализации распределенного массива средствами N1*N2 частей, каждая из которых будет размещена на соответствующий библиотеки Java-DVM процессор 2-мерной решетки. На рис. 2 показано распределение массива на 2Распределение вычислений определяется распределением данных. Разработчик мерную решетку процессоров размерностью 2x2.

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

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

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

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

Рис. 2. 2d-распределение массива на двумерную решетку процессоров.

В определениях модели DVM распределяются только массивы, все остальные данные размещаются на процессорах целиком и называются размноженными.

В Java-DVM предлагаются классы, описывающие x-, y- и 2d способы распределения массивов – ColumnDistribution, RowDistribution и 2dDistribution соответственно. Определив способ распределения, разработчик может создать распределенный массив требуемого типа данных.

Классы ряда xxxDArray описывают распределенные массивы для всех Рис. 4. Распределение витков параллельного цикла на линейку простых типов данных в языке Java. На рис. 3 показан пример создания процессоров.

распределенного массива в нотациях объектной модели Java-DVM.

9 { На рис. 4 показано распределение витков параллельного цикла на линейку /* Записать в элемент (i,j) базового массива a значение процессоров n1-n4 совместно с матрицей А размерностью 40x20.

суммы индексов i+j */ Для реализации параллельных циклов в Java-DVM есть классы блока a.putElem(i, j, i+j);

xxxDForall. Это абстрактные классы, которые описывают параллельную } обработку распределенных массивов для всех простых типов данных в языке } Java. Разработчик должен создать свой собственный класс, расширяющий один из классов блока xxxDForall, в котором ему необходимо реализовать Рис. 5. Пример реализации параллельного цикла средствами библиотеки Java-DVM.

абстрактный метод body(). Этим методом описывается правило обхода элементов распределенного массива. На рис. 5 приведен пример, в котором Перед выполнением программы необходимо, чтобы все данные, которые показано, как реализуются параллельные циклы в Java-DVM.

требуются для вычислений, находились в локальной памяти узла. В случае import java.dvm.*; параллельных циклов это условие выполняется редко. Очень часто случается public class MyClass ситуация, когда одна и та же ссылка на элемент массива в разных витках { параллельного цикла вызывает обращение, как к локальным, так и нелокальным public static void main (String[] args) элементам массива. В DVM доступ к удаленным данным осуществляется { путем их буферизации в памяти узлов вычислительной системы и обменом /* Выделяется сеть виртуальных процессоров. Сеть буферов сразу для нескольких витков цикла одновременно. Импортируемые рассматривается как линейка процессоров. */ элементы, которые примыкают к локальным (по их индикации в массиве) VPM vpm = new VPM();

элементам, образуют так называемые грани. Грани имеют ширину.

/* Массив da размерностью 100x100 распределен на процессоры виртуальной сети vpm. Используется y-распределение */ Например, предположим, что выделенная виртуальная сеть представляет DoubleDArray da = new DoubleDArray(new RowDistribution(vpm, собой линейку процессоров n1-n3 (рис. 6).

100, 100));

/* Параллельный цикл с базовым распределенным массивом da */ UserDCycle dc = new UserDCycle(da);

/* Выполнить параллельный цикл */ dc.execute();

} } import java.dvm.*;

// Класс пользователя, в котором реализуется абстрактный метод //body() class UserDCycle extends DoubleDForall { DoubleDArray da; /* Базовый массив */ public ACycleDJacobi(DoubleDArray a) Рис. 6. Грани импортируемых данных и теневые грани.

{ super(a);

Pages:     || 2 | 3 | 4 | 5 |   ...   | 23 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.