Администрирование параллельных процессов

Назначение и принципы построения вычислительного кластера. Анализ кластерных систем для организации параллельных вычислений. Методы организации параллельной архитектуры. Разработка кластера для организации параллельных процессов обработки информации.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 06.10.2016
Размер файла 655,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru

СОДЕРЖАНИЕ

  • Введение
  • 1. Кластер для организации параллельных вычислений
  • 1.1 Существующие принципы администрирования
  • 1.2 Назначение вычислительного кластера
  • 1.3 Цели создания проекта
  • 1.4 Постановка задачи
  • 2. Кластерные системы для организации параллельных вычислений
  • 2.1 Структура кластера и его параметры
  • 2.2 Принципы построения кластера
  • 2.3 Организация параллельной архитектуры
  • 2.3.1 Коммуникационная библиотека MPI
  • 2.3.2 Коммуникационная библиотека PVM
  • 2.4 Параллелизм и параллельные алгоритмы
  • 2.4.1 Формы и характеристики параллелизма
  • 2.4.2 Параллельные алгоритмы
  • 2.5 Модели параллельных вычислений
  • 2.6 Языки и методы параллельного программирования
  • 3. Организация администрирования параллельных процессов
  • 3.1 Архитектура кластера кафедры АИС
  • 3.1.1 Узлы кластера
  • 3.1.2 Сеть кластера
  • 3.2 Аппаратное и программное обеспечение кластера кафедры АИС
  • 3.2.1 Аппаратный состав кластера
  • 3.2.2 Программное обеспечение кластера
  • 3.2.2.2 Дистрибутивы развертывания кластера
  • 3.3 Распараллеливание процессов
  • 3.3.1 Процесс декомпозиции
  • 3.3.2 Параллельная виртуальная машина кластера кафедры АИС
  • 3.3.2.1 Взаимодействие задач с PVM
  • 3.3.2.2 Управление задачами в PVM
  • 3.3.2.3 Передача сообщений в PVM
  • 3.3.2.4 Установка и администрирования PVM
  • 3.4 Программное обеспечение для администрирование кластера кафедры АИС
  • 3.5 Реализация параллельных программ на кластере
  • 3.5.1 Моделирование параллельных программ
  • 3.5.2 Разделение вычислений на независимые части
  • 3.5.2 Выделение информационных зависимостей
  • 3.5.3 Масштабирование набора подзадач
  • 3.5.5 Распределение задач между процессами
  • 3.5.6 Анализ работы СЛАУ на кластере
  • 3.5.6.1 Принцип реализации СЛАУ на кластере
  • 3.6.6.2 Результаты вычислительных экспериментов СЛАУ на кластере кафедры АИС
  • 4. Экономическая часть
  • 5. Охрана труда
  • 5.1 Анализ опасных и вредных производственных факторов
  • 5.2 Мероприятия по снижению опасных и вредных производственных факторов
  • 5.3 Расчет освещения (шум)
  • 5.4 Меры пожарной безопасности
  • 6. Промышленная экология
  • Заключение
  • Список используемых источников

ВВЕДЕНИЕ

Последние годы во всем мире происходит бурное внедрение вычислительных кластеров - локальных сетей, с узлами из рабочих станций или персональных компьютеров специально собранных для использования в качестве многопроцессорной вычислительной системы. Для построения вычислительных кластеров обычно используются общедоступные компьютеры на базе процессоров Intel или AMD, стандартные сетевые технологии Ethernet или Fast Ethernet, свободно распространяемая операционная система (ОС) Linux и коммуникационная библиотека MPI и VPM, реализующая связь между ветвями параллельного вычислительного процесса. Таким образом, сегодня вычислительные кластеры стали общедоступной и сравнительно дешевой альтернативой традиционным суперкомпьютерам. На многих классах задач и при достаточно большом числе узлов кластерные системы достигают производительности сравнимой с суперкомпьютерной. Главным успехом кластерных вычислительных технологий является то, что параллельные вычисления, реальной альтернативой которым в области высокоскоростных вычислений в ближайшие годы не предвидится, стали доступны для многих образовательных и научно-исследовательских организаций.

Приходится констатировать, что парк вычислительной техники университета составляют только персональные компьютеры, а мощные рабочие станции и, тем более, вычислительные кластеры отсутствуют. Тем не менее, в Карагандинском Государственном Техническом Университете существует ряд научных направлений, для успешного развития которых повышение имеющегося в университете уровня вычислительных мощностей является совершенно необходимым условием. Методика параллельных вычислений, осуществляемая на кластере, позволит:

- решать граничные и эволюционные задачи, обладающие пространственно-временной зависимостью;

- для решения ряда задач для квантово-физических расчетов и моделирования химических процессов;

- решение алгебраических вычислений;

- сложные прикладные расчеты.

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

кластер вычисление параллельный информация

1. КЛАСТЕР ДЛЯ ОРГАНИЗАЦИИ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ

1.1 Существующие принципы администрирования

Кластер -- группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единую машину.

Один из первых архитекторов кластерной технологии Грегори Пфистер (Gregory F. Pfister) дал кластеру следующее определение: «Кластер -- это разновидность параллельной или распределённой системы, которая:

- состоит из нескольких связанных между собой компьютеров;

- используется как единый, унифицированный компьютерный ресурс».

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

Обычно различают следующие основные виды кластеров:

- отказоустойчивые кластеры (High-availability clusters, HA)

- кластеры с балансировкой нагрузки (Load balancing clusters)

- вычислительные кластеры (Сompute clusters)

- grid-системы

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

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

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

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

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

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

1.2 Назначение вычислительного кластера

Кластеры используются в вычислительных целях, в частности в научных исследованиях. Для вычислительных кластеров существенными показателями являются высокая производительность процессора на операциях над числами с плавающей точкой (Flops) и низкая латентность объединяющей сети, и менее существенными -- скорость операций ввода-вывода, которая в большей степени важна для баз данных и web-сервисов. Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки, которые обмениваются данными по связывающей сети. Одна из типичных конфигураций -- набор компьютеров, собранных из общедоступных компонентов, с установленной на них операционной системой Linux, и связанных сетью Ethernet, Myrinet, InfiniBand или другими относительно не дорогими сетями. Такую систему принято называть кластером Beowulf. Специально выделяют высокопроизводительные кластеры (Обозначаются англ. аббревиатурой HPC Cluster -- High-performance computing cluster).

Beowulf (Beowolf) -- кластер, который состоит из широко распространённого аппаратного обеспечения, работающий под управлением операционной системы, распространяемой с исходными кодами (например, GNU/Linux или FreeBSD).

Особенностью такого кластера также является масштабируемость, то есть возможность увеличения количества узлов системы с пропорциональным увеличением производительности. Узлами в кластере могут служить любые серийно выпускаемые автономные компьютеры, количество которых может быть от 2 до 1024 и более. Для передачи информации между узлами обычно используются протоколы MPI или PVM.

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

1. Цикл для вычисления элементов одномерного массива, когда его элементы представлены довольно сложным выражением.

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

3. Алгоритм решения системы дифференциальных уравнений можно распараллелить на кластере.

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

5. Решения задач неорганической химии, связанные с квантовыми расчетами твердого тела и моделирования структуры вещества методами молекулярной динамики.

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

1.3 Цели создания проекта

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

В 2008 году на кафедре АИС Карагандинского Государственного Технического Университета была открыта новая специальность: «Математическое и компьютерное моделирование». В связи с этим появилась необходимость создания системы для изучения организации параллельных вычислений, моделирования физических, химических и математических процессов.

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

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

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

Целью данного дипломного проекта является администрирование вычислительного кластера.

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

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

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

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

При реализации кластера и осуществления его администрирования необходимо изучить следующие вопросы:

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

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

3. Определить особенности параллельных процессов. Рассмотреть языки, методы и среды параллельного программирования.

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

2. КЛАСТЕРНЫЕ СИСТЕМЫ ДЛЯ ОРГАНИЗАЦИИ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ

2.1 Структура кластера и его параметры

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

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

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

В качестве вычислительных узлов в кластере обычно используются однопроцессорные персональные компьютеры, двух- или четырехпроцессорные SMP-серверы. Каждый узел работает под управлением своей копии операционной системы, в качестве которой чаще всего используются стандартные операционные системы: Linux, NT, Solaris и т.п. Состав и мощность узлов может меняться даже в рамках одного кластера, давая возможность создавать неоднородные системы. Выбор конкретной коммуникационной среды определяется многими факторами: особенностями класса решаемых задач, необходимостью последующего расширения кластера и т.п. Возможно включение в конфигурацию специализированных компьютеров, например, файл-сервера, и, как правило, предоставлена возможность удаленного доступа на кластер через Internet.

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

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

2.2 Принципы построения кластера

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

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

Для решения проблем низкой производительности сети применяют несколько методов:

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

- применение так называемого «транкинга», т.е. объединение нескольких каналов Fast Ethernet в один общий скоростной канал, соединяющий несколько коммутаторов. Очевидным недостатком такого подхода является «потеря» части портов, задействованных в межсоединении коммутаторов.

- для повышения производительности создаются специальные протоколы обмена информацией по таким сетям, которые позволяют более эффективно использовать пропускную способность каналов и снимают некоторые ограничения накладываемые стандартными протоколами (TCP/IP,IPX). Такой метод часто используют в системах класса Beowulf.

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

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

2.3 Организация параллельной архитектуры

2.3.1 Коммуникационная библиотека MPI

MPI это интерфейс прикладного программирования к библиотеке пересылки сообщений, содержащий в себе спецификации к протоколу и семантики описывающие то? как функции библиотеки должны вести себя при любом применении (таком например, как буферизация сообщений и требования процесса доставки сообщения). MPI включает в себя передачу сообщений типа точка-точка и коллективные (глобальные) операции, ограниченные указанной пользователем группой процессов. Более того, MPI обеспечивает абстракции дл процессов на двух уровнях. Сначала процессы называются согласно рангу группы в которой связи установлены. Потом, виртуальные топологии позволяют графический или Декартов процесс именования процессов, что помогает относить семантику приложения к семантике передачи сообщений удобным и эффективные способом. Коммуникаторы, которые размещают группы и информации. О контексте связи, обеспечивают меры безопасности , что необходимо и полезно для построения библиотечно-ориентированных параллельных программ MPI так же обеспечивает три дополнительных класса служб: запрос о среде, основная информация о синхронизации для измерения производительности приложения, и интерфейс профилирования для внешнего мониторинга производительности. MPI делает гетерогенное преобразование данных прозрачной частью своих служб посредством запроса спецификации типа используемых данных для всех операций связи. Поддерживаются встроенные и определенные пользователем типа данных.

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

MPI обеспечивает поддержку для SPMD и MPMD режимов параллельного программирования. Более того, MPI может поддерживать вычисления между приложениями при помощи операций интеркоммуникатора, который поддерживает связи между группами лучше чем в пределах одной группы. Dataflow-style вычисления так же могут конструироваться при помощи интеркоммуникаторов.

2.3.2 Коммуникационная библиотека PVM

PVM (Parallel Virtual Machine) является продуктом исследовательского проекта по сетевым вычислениям в гетерогенной сетевой среде. Общая цель этого проекта обследовать вопросы и разрабатывать решения для параллельных вычислений в гетерогенной среде. PVM это интегрированное множество вспомогательных программ и библиотек, которые эмулируют универсальные, гибкие, неоднородные параллельные вычисления на объединенных компьютерах с различными архитектурами. Общая цель PVM дать возможность совместного использования абсолютно разных по архитектуру компьютеров для параллельного вычисления.

Кратко рассмотрим принципы, на которых основана PVM:

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

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

Процессориентированные вычисления: единицей параллелизма в PVM является задача (часто, но не всегда UNIX процесс), независимая последовательная нить управления, которая чередуется между связью и вычислением. Отсутствие отображения процесс-процесс подразумевается и принуждается PVM$ в частности, множественные задачи могут выполняться на единственном процессоре.

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

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

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

2.4 Параллелизм и параллельные алгоритмы

2.4.1 Формы и характеристики параллелизма

Параллелизм -- это возможность одновременного выполнения нескольких арифметико-логических или служебных операций. На стадии постановки задачи параллелизм не определен, он появляется только после выбора метода вычислений. В зависимости от характера этого метода параллелизм алгоритма (то есть количество одновременно выполняемых операций) может меняться в довольно больших пределах. Параллелизм используемой ЭВМ также меняется в широких пределах и зависит в первую очередь от числа процессоров, способа размещения данных, методов коммутации и способов синхронизации процессов. Язык программирования является средством переноса параллелизма алгоритма на параллелизм ЭВМ и тип языка может в сильной степени влиять на результат переноса.

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

2.4.2 Параллельные алгоритмы

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

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

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

- определить необходимую (или доступную) для решения задачи вычислительную систему и выполнить распределение имеющего набора подзадач между процессорами системы.

Рисунок 2.1 - Общая схема разработки параллельных алгоритмов

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

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

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

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

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

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

2.5 Модели параллельных вычислений

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

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

Рассмотрим основные модели параллельного программирования, их абстракции в параллельном программировании:

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

Модель процесс/канал характеризуется следующими свойствами:

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

2. Процесс - это последовательная программа с локальными данными. Процесс имеет входные и выходные порты, которые служит интерфейсом к среде процесса.

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

4. Посылающаяся операция асинхронная - она завершается сразу, не ожидая того, когда данные будут получены. Получающаяся операция синхронная: она блокирует процесс до момента поступления сообщения.

5. Пары из входного и выходного портов соединяются очередями сообщений, называемыми каналами (channels). Каналы можно создавать и удалять. Ссылки на каналы (порты) можно включать в сообщения, так что связность может измениться динамически.

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

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

Обмен сообщениями (Message Passing). В этой модели программы, возможно различные, написанные на традиционном последовательном языке исполняются процессорами компьютера. Каждая программа имеют доступ к памяти исполняющего е§ процессора. Программы обмениваются между собой данными, используя подпрограммы приема/передачи данных некоторой коммуникационной системы. Программы, использующие обмен сообщениями, могут выполняться только на MIMD компьютерах.

На сегодняшний день модель обмен сообщениями (message passing) является наиболее широко используемой моделью параллельного программирования. Программы этой модели, подобно программам модели процесс/канал, создают множество процессов, с каждым из которых ассоциированы локальные данные. Каждый процесс идентифицируется уникальным именем. Процессы взаимодействуют, посылая и получая сообщения. В этом отношение модель обмен сообщениями является разновидностью модели процесс/канал и отличается только механизмом, используемым при передаче данных. Например, вместо отправки сообщения в канал "channel 2" можно послать сообщение процессу "process 3".

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

В таких системах каждый процесс выполняет одну и ту же программу (параметризованную относительно идентификатора либо процесса, либо процессора), но работает с разными данными, поэтому о таких системах говорят, что они реализуют SPMD (single program multiple data - одна программа много данных) модель программирования. SPMD модель приемлема и достаточно удобна для широкого диапазона приложений параллельного программирования, но она затрудняет разработку некоторых типов параллельных алгоритмов.

Параллелизм данных (Data Parallel). В этой модели единственная программа задает распределение данных между всеми процессорами компьютера и операции над ними. Распределяемыми данными обычно являются массивы. Как правило, языки программирования, поддерживающие данную модель, допускают операции над массивами, позволяют использовать в выражениях целые массивы, вырезки из массивов. Распараллеливание операций над массивами, циклов обработки массивов позволяет увеличить производительность программы. Компилятор отвечает за генерацию кода, осуществляющего распределение элементов массивов и вычислений между процессорами. Каждый процессор отвечает за то подмножество элементов массива, которое расположено в его локальной памяти. Программы с параллелизмом данных могут быть оттранслированы и исполнены как на MIMD, так и на SIMD компьютерах.

Модель параллелизм данных также является часто используемой моделью параллельного программирования. Название модели происходит оттого, что она эксплуатирует параллелизм, который заключается в применении одной и той же операции к множеству элементов структур данных. Например, "умножить все элементы массива M на значение x", или "снизить цену автомобилей со сроком эксплуатации более 5-ти лет". Программа с параллелизмом данных состоит из последовательностей подобных операций. Поскольку операции над каждым элементом данных можно рассматривать как независимые процессы, то степень детализации таких вычислений очень велика, а понятие "локальности" (распределения по процессам) данных отсутствует. Следовательно, компиляторы языков с параллелизмом данных часто требуют, чтобы программист предоставил информацию относительно того, как данные должны быть распределены между процессорами, другими словами, как программа должны быть разбита на процессы. Компилятор транслирует программу с параллелизмом данных в SPMD программу, генерируя коммуникационный код автоматически.

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

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

2.6 Языки и методы параллельного программирования

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

Существование проблемы второго языка объясняет, что достаточно распространены методы представления параллельных программ, через добавление средств параллелизма в обычные языки программирования, такие как Fortran, Pascal, Ada и др. Существуют версии ряда стандартных языков императивного программирования, приспособленные к выражению взаимодействия последовательных процессов в предположении, что в каждый момент времени существует лишь один процесс. При таком подходе в программе выделяются критические интервалы, учет которых полезен при распараллеливании программ.

Независимая разработка специализированных языков параллельного программирования и языков управления процессами дала ряд интересных идей по представлению и масштабированию параллельных вычислений, с которыми можно ознакомиться по материалам о языках APL, Symula-67, Sisal, БАРС, Occam, Поляр и др.

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

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

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

Развитие суперкомпьютеров обусловлено существованием особо важных задач, главным требованием к решению которых является скорость вычислений в реальном времени. Нужная скорость достигается ценой весьма сложной организации связей между синхронизованными на уровне аппаратуры процессорами. Активно используется локальная память процессоров, приспособленная к быстрым матричным вычислениям и вообще однородной обработке информации. При программировании целенаправленно выделяются конвейерные процессы, приспособленные к минимизации хранения промежуточных результатов. Разработаны специальные архитектуры сверхдлинных команд с внутренним совмещением микроопераций. Исследованы асинхронные конфигурации и модели управления на метауровне организации параллельных процессов. Специфику языков параллельного программирования для высокопроизводительных вычислений на базе суперкомпьютеров и многоядерных архитектур рассмотрим на примере языков APL, Sisal и БАРС.

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

Заметное место среди языков функционального программирования занимают языки параллельного программирования. Довольно известен язык функционального программирования Sisal.

Название языка расшифровывается как "Streams and Iterations in a Single Assignment Language", сам он представляет собой дальнейшее развития языка VAL, известного в середине 70-х годов. Среди целей разработки языка Sisal следует отметить наиболее характерные, связанные с функциональным стилем программирования:

1. Создание универсального функционального языка.

2. Разработка техники оптимизации для высокоэффективных параллельных программ.

3. Достижение эффективности исполнения, сравнимой с императивными языками типа Fortran и C.

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

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

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

3. ОРГАНИЗАЦИЯ АДМИНИСТРИРОВАНИЯ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ

3.1 Архитектура кластера кафедры АИС

За основу проектирования кластера взята высокопроизводительная сетевая система Beowulf. Такой кластер имеет гетерогенную структуру. В него могут входить самые разнообразные по параметрам компьютеры, построенные на различных аппаратных платформах, например Intel Pentium различных версий, Alpha, RISC-процессоры, Transmeta, 32-х и 64-х битовые процессоры. Более того, на компьютерах в кластере могут быть установлены самые различные системы: Linux, Windows, OS/2 WARP.

Аппаратная платформа кластера кафедры АИС однообразна. Структура разрабатываемого кластера представлена на рисунке 3.1.

Рисунок 3.1 - Структура кластера кафедры АИС

В данном виде кластеров можно выделить следующие основные особенности:

- кластер состоит из нескольких отдельных узлов, объединенных в общую сеть, общие ресурсы узлами кластера не используются;

- оптимальным считается построение кластеров на базе двухпроцессорных SMP систем;

- для уменьшения накладных расходов на взаимодействие между узлами применяют полнодуплексный 100 MB Fast Ethernet (реже используют SCI), создают несколько сетевых сегментов или соединяют узлы кластера через коммутатор;

- в качестве программного обеспечения применяют ОС Linux, и бесплатно распространяемые коммуникационные библиотеки (PVM и MPI);

3.1.1 Узлы кластера

Это или однопроцессорные ПК, или SMP-сервера с небольшим числом процессоров (2-4, возможно до 6). По некоторым причинам оптимальным считается построение кластеров на базе двухпроцессорных систем, несмотря на то, что в этом случае настройка кластера будет несколько сложнее (главным образом потому, что доступны относительно недорогие материнские платы для 2 процессоров Pentium II/III). Стоит установить на каждый узел 64-128MB оперативной памяти (для двухпроцессорных систем 64-256MB).

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

При комплектации рабочих узлов вполне возможно отказаться от жестких дисков эти узлы будут загружать ОС через сеть с центральной машины, что, кроме экономии средств, позволяет сконфигурировать ОС и все необходимое ПО только 1 раз (на центральной машине). Если эти узлы не будут одновременно использоваться в качестве пользовательских рабочих мест, нет необходимости устанавливать на них видеокарты и мониторы. Возможна установка узлов в стойки (rackmounting), что позволит уменьшить место, занимаемое узлами, но будет стоить несколько дороже.

Возможна организация кластеров на базе уже существующих сетей рабочих станций, т.е. рабочие станции пользователей могут использоваться в качестве узлов кластера ночью и в выходные дни. Системы такого типа иногда называют COW (Cluster of Workstations).

Количество узлов следует выбирать исходя из необходимых вычислительных ресурсов и доступных финансовых средств. Следует понимать, что при большом числе узлов придется также устанавливать более сложное и дорогое сетевое оборудование.

3.1.2 Сеть кластера

Основные типы локальных сетей, задействованные в рамках проекта Beowulf, - это Gigabit Ethernet, Fast Ethernet и 100-VG AnyLAN. В простейшем случае используется один сегмент Ethernet (10Mbit/sec на витой паре). Однако дешевизна такой сети, вследствие коллизий оборачивается большими накладными расходами на межпроцессорные обмены; а хорошую производительность такого кластера следует ожидать только на задачах с очень простой параллельной структурой и при очень редких взаимодействиях между процессами (например, перебор вариантов).

Для получения хорошей производительности межпроцессорных обменов используют полнодуплексный Fast Ethernet на 100Mbit/sec. При этом для уменьшения числа коллизий или устанавливают несколько "параллельных" сегментов Ethernet, или соединяют узлы кластера через коммутатор (switch).

Более дорогостоящим, но также популярным вариантом являются использование коммутаторов типа Myrinet (1.28Gbit/sec, полный дуплекс).

Менее популярными, но также реально используемыми при построении кластеров сетевыми технологиями являются технологии сLAN, SCI и Gigabit Ethernet.

Иногда для связи между узлами кластера используют параллельно несколько физичеких каналов связи - так называемое «связывание каналов» (channel bonding), которое обычно применяется для технологии Fast Ethernet. При этом каждый узел подсоединяется к коммутатору Fast Ethernet более чем одним каналом. Чтобы достичь этого, узлы оснащаются либо несколькими сетевыми платами, либо многопортовыми платами Fast Ethernet. Применение связывания каналов в узлах под управлением ОС Linux позволяет организовать равномерное распределение нагрузки приема/передачи между соответствующими каналами.


Подобные документы

  • Пакетный метод как основной способ выполнения коммуникационных операций, его содержание и предъявляемые требования. Оценка трудоемкости операции передачи данных между двумя узлами кластера. Этапы разработки параллельных алгоритмов (распараллеливания).

    презентация [318,1 K], добавлен 10.02.2014

  • Описание кластерных систем и характеристика библиотек параллелизма. Аналоги PVM. Организация параллельных вычислений. Описание оборудования и программного обеспечения кластера. Гипотеза Гольдбаха. Процесс компиляции собственной программы для работы с PVM.

    курсовая работа [847,2 K], добавлен 05.12.2014

  • Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа [1,1 M], добавлен 15.12.2010

  • Понятие вычислительных систем, их классификация по различным признакам. Модели параллельных вычислений PGAS и APGAS. Разработка программного продукта для анализа информационных обменов в параллельных программах на языке IBM X10. Расчёт его себестоимости.

    дипломная работа [1,6 M], добавлен 10.06.2013

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

    статья [19,8 K], добавлен 08.12.2016

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

    презентация [1,1 M], добавлен 22.02.2016

  • Основные модели вычислений. Оценки эффективности параллельных алгоритмов, их коммуникационная трудоемкость. Последовательный алгоритм, каскадная схема и способы ее улучшения. Модифицированная каскадная схема. Передача данных, классификация операций.

    презентация [1,3 M], добавлен 10.02.2014

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

    дипломная работа [3,5 M], добавлен 08.07.2012

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

    дипломная работа [3,1 M], добавлен 17.06.2013

  • Классификация параллельных вычислительных систем. Существенные понятия и компоненты параллельных компьютеров, их компоненты. Особенности классификаций Хендера, Хокни, Флинна, Шора. Системы с разделяемой и локальной памятью. Способы разделения памяти.

    курсовая работа [331,1 K], добавлен 18.07.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.