Разработка лабораторного комплекса "Кластерные технологии"

Типы кластеров и анализ кластерных технологий. Принципы работы среды MPICH. Разработка рабочих заданий для лабораторных работ, программного обеспечения для лабораторного комплекса. Подготовка рабочих мест и описание хода выполнения лабораторных работ.

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

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

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

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

67

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

ДИПЛОМНАЯ РАБОТА

Разработка лабораторного комплекса «Кластерные технологии» в рамках дисциплины «Высокопроизводительные вычислительные системы» для обучения студентов кафедры АСУ

Оглавление

1. Ввведение

1.1 Вводная часть

1.2 Анализ кластерных технологий в контексте лабораторного практикума

1.2.1 Типы кластеров

1.2.2 Показатели эффективности параллельного алгоритма

1.2.3 Средства разработки и поддержки параллельных приложений

1.2.4 Принципы работы среды MPICH

1.2.5 Кластер МИИТ Т-4700

1.3 Обоснование целесообразности разработки

1.4 Требования разработке

1.4.1 Требования к кластерной системе

1.4.2 Требования к методическому обеспечению

1.4.3 Требования к документации

1.4.4 Требования к техническому обеспечению

1.4.5 Требования к рабочим станциям

1.4.6 Требования к разрабатываемому ПО

1.4.7 Требования к показателям назначения

1.5 Анализ исходных данных

2. РАЗРАБОТКА ЛАБОРАТОРНОГО КОМПЛЕКСА «КЛАСТЕРНЫЕ СИСТЕМЫ»

2.1 Разработка методического обеспечения для лабораторного комплекса

2.2 Содержание лабораторных работ

2.2.1 Рабочее задание для лабораторной работы №1

2.2.2 Рабочее задание для лабораторной работы №2

2.2.3 Рабочее задание для лабораторной работы №3

2.3 Разработка программного обеспечения для лабораторного комплекса

2.4 Подготовка рабочих мест и описание хода выполнения лабораторных работ

2.4.1 Лабораторная работа №1

2.4.1.1 Подготовка рабочего места для выполнения лабораторной работы №1

2.4.1.2 Описание хода лабораторной работы №1

2.4.2 Лабораторная работа №2

2.4.2.1 Подготовка рабочего места для выполнения лабораторной работы №2

2.4.2.2 Описание хода лабораторной работы №2

3. СИСТЕМОТЕХНИЧЕСКИЙ РАСЧЁТ: РАСЧЁТ ПОКАЗАТЕЛЕЙ ЭФФЕКТИВНОСТИ ВЫЧИСЛЕНИЙ

3.1 Описание показателей эффективности параллельных вычислений

3.2 Описание хода лабораторной работы №3

4. АНАЛИЗ ЧЕЛОВЕКО-МАШИННОГО ВЗАИМОДЕЙСТВИЯ

4.1 Обзор теории тестовых заданий (Item response theory)

4.2 Процедура расчёта

4.3 Построение характеристических кривых для заданий

4.4 Обсуждение результатов и дальнейших действий

4.5 Вывод

5. ЭКОНОМИЧЕСКАЯ ЧАСТЬ

5.1 Постановка экономической задачи

5.2 Расчет затрат, связанных с разработкой лабораторного комплекса

5.3 Экономическая эффективность

5.3.1 Расчёт показателей эффективности

5.3.2 Расчет затрат по эксплуатации лабораторного комплекса

5.3.3 Расчёт эффективности разработки

ЗАКЛЮЧЕНИЕ

СПИСОК ИСТОЧНИКОВ

ПРИЛОЖЕНИЯ

Приложение 1. Листинг разработанного ПО

Приложение 2. Инструкция по написанию и запуску заданий на кластере МИИТ Т-4700

1. Введение

1.1 Вводная часть

Цель дипломного проекта - Разработка лабораторного комплекса «Кластерные технологии» в рамках дисциплины «Высокопроизводительные вычислительные системы» для обучения студентов кафедры АСУ.

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

1.2 Анализ кластерных технологий в контексте лабораторного практикума

1.2.1 Типы кластеров

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

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

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

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

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

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

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

· вычислительные кластеры (Computing clusters)

· grid-системы.

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

· с холодным резервом или активный/пассивный. Активный узел выполняет запросы, а пассивный ждет его отказа и включается в работу, когда таковой произойдет. Пример -- резервные сетевые соединения, в частности, Алгоритм связующего дерева. Например, связка DRBD и HeartBeat.

· с горячим резервом или активный/активный. Все узлы выполняют запросы, в случае отказа одного нагрузка перераспределяется между оставшимися. То есть кластер распределения нагрузки с поддержкой перераспределения запросов при отказе. Примеры -- практически все кластерные технологии, например, Microsoft Cluster Server. OpenSource проект OpenMosix.

· с модульной избыточностью. Применяется только в случае, когда простой системы совершенно недопустим. Все узлы одновременно выполняют один и тот же запрос (либо части его, но так, что результат достижим и при отказе любого узла), из результатов берется любой. Необходимо гарантировать, что результаты разных узлов всегда будут одинаковы (либо различия гарантированно не повлияют на дальнейшую работу). Примеры -- RAID и Triple modular redundancy.

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

Кластеры распределения нагрузки
Принцип их действия строится на распределении запросов через один или несколько входных узлов, которые перенаправляют их на обработку в остальные, вычислительные узлы. Первоначальная цель такого кластера -- производительность, однако, в них часто используются также и методы, повышающие надёжность. Подобные конструкции называются серверными фермами. Программное обеспечение (ПО) может быть как коммерческим (OpenVMS, MOSIX, Platform LSF HPC, Solaris Cluster Moab Cluster Suite, Maui Cluster Scheduler), так и бесплатным (OpenMosix, Sun Grid Engine, Linux Virtual Server).
Вычислительные кластеры
Кластеры используются в вычислительных целях, в частности в научных исследованиях. Для вычислительных кластеров существенными показателями являются высокая производительность процессора в операциях над числами с плавающей точкой (flops) и низкая латентность объединяющей сети, и менее существенными -- скорость операций ввода-вывода, которая в большей степени важна для баз данных и web-сервисов. Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки, которые обмениваются данными по связывающей сети. Одна из типичных конфигураций -- набор компьютеров, собранных из общедоступных компонентов, с установленной на них операционной системой Linux, и связанных сетью Ethernet, Myrinet, InfiniBand или другими относительно недорогими сетями. Такую систему принято называть кластером Beowulf. Специально выделяют высокопроизводительные кластеры (Обозначаются англ. аббревиатурой HPC Cluster -- High-performance computing cluster). Список самых мощных высокопроизводительных компьютеров (также может обозначаться англ. аббревиатурой HPC) можно найти в мировом рейтинге TOP500. В России ведется рейтинг самых мощных компьютеров СНГ.
Системы распределенных вычислений (grid)
Такие системы не принято считать кластерами, но их принципы в значительной степени сходны с кластерной технологией. Их также называют grid-системами. Главное отличие -- низкая доступность каждого узла, то есть невозможность гарантировать его работу в заданный момент времени (узлы подключаются и отключаются в процессе работы), поэтому задача должна быть разбита на ряд независимых друг от друга процессов. Такая система, в отличие от кластеров, не похожа на единый компьютер, а служит упрощённым средством распределения вычислений. Нестабильность конфигурации, в таком случае, компенсируется большимм числом узлов.[1]

1.2.2 Показатели эффективности параллельного алгоритма

Ускорение ( speedup ), получаемое при использовании параллельного алгоритма для p процессоров, по сравнению с последовательным вариантом выполнения вычислений определяется величиной

Sp(n)=T1(n)/Tp(n),

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

Эффективность ( efficiency ) использования параллельным алгоритмом процессоров при решении задачи определяется соотношением

Ep(n)=T1(n)/(pTp(n))=Sp(n)/p

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

Из приведенных соотношений можно показать, что в наилучшем случае Sp(n)=p и Ep(n)=1. При практическом применении данных показателей для оценки эффективности параллельных вычислений следует учитывать два важных момента:

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

Cp=pTp.

В связи с этим можно определить понятие стоимостно-оптимального (cost-optimal) параллельного алгоритма как метода, стоимость которого является пропорциональной времени выполнения наилучшего последовательного алгоритма.[2]

1.2.3 Средства разработки и поддержки параллельных приложений

Message Passing Interface(MPI)-- программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими.

MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров. Основным средством коммуникации между процессами в MPI является передача сообщений друг другу. Стандартизацией MPI занимается MPI Forum. В стандарте MPI описан интерфейс передачи сообщений, который должен поддерживаться как на платформе, так и в приложениях пользователя. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90, Си и Си++.

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

MPICH -- самая распространённая бесплатная реализация, созданная в Арагонской национальной лаборатории (США). Существуют версии этой библиотеки для всех популярных операционных систем. К тому же, она бесплатна. Перечисленные факторы делают MPICH идеальным вариантом для того, чтобы начать практическое освоение MPI. MPICH2 соответствует стандарту MPI 2.0, отсюда и название.[3]

1.2.4 Принципы работы среды MPICH

MPICH для Windows состоит из следующих компонентов:

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

· Заголовочные файлы (.h) и библиотеки стадии компиляции (.lib), необходимые для разработки MPI-программ.

· Библиотеки времени выполнения (.dll), необходимые для работы MPI-программ.

· Дополнительные утилиты (.exe), необходимые для настройки MPICH и запуска MPI-программ.

Существует мнение, что smpd.exe является не менеджером процессов, а просто средством для их запуска. Это мнение обосновано тем, что полноценный менеджер процессов должен составлять расписание запуска процессов, осуществлять мониторинг и балансировку загрузки узлов. Однако в терминологии Арагонской лаборатории, smpd.exe называется «Process manager service for MPICH2 applications»

Все компоненты, кроме библиотек времени выполнения, устанавливаются по умолчанию в папку C:\Program Files\MPICH2; dll-библиотеки устанавливаются в C:\Windows\System32.

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

Менеджер работает в фоновом режиме и ждёт запросов к нему из сети со стороны «головного» менеджера процессов (по умолчанию используется сетевой порт 8676). Чтобы как-то обезопасить себя от хакеров и вирусов, менеджер требует пароль при обращении к нему. Когда один менеджер процессов обращается к другому менеджеру процессов, он передаёт ему свой пароль. Отсюда следует, что нужно указывать один и тот же пароль при установке MPICH на компьютеры сети.

Рисунок 1.1 Схема работы MPICH на кластере

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

Запуск MPI-программы производится следующим образом (смотрите рисунок 1.1):

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

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

3. Менеджер процессов обращается к вычислительным узлам по списку, передавая запущенным на них менеджерам процессов указания по запуску MPI-программы.

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

Очень важным моментом здесь является то, что перед запуском MPI-программа не копируется автоматически на вычислительные узлы кластера. Вместо этого менеджер процессов передаёт узлам путь к исполняемому файлу программы точно в том виде, в котором пользователь указал этот путь программе Mpirun. Это означает, что если вы, например, запускаете программу C:\proga.exe, то все менеджеры процессов на вычислительных узлах будут пытаться запустить файл C:\proga.exe. Если хотя бы на одном из узлов такого файла не окажется, произойдёт ошибка запуска MPI-программы.

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

Работа MPI-программы происходит следующим образом:

1. Программа запускается и инициализирует библиотеку времени выполнения MPICH путём вызова функции MPI_Init.

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

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

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

5. Перед завершением все процессы вызывают функцию MPI_Finalize, которая корректно завершает передачу и приём всех сообщений, и отключает MPICH.

Все описанные выше принципы действуют, даже если вы запускаете MPI-программу на одном компьютере.[4]

1.2.5 Кластер МИИТ Т-4700

Для решения ресурсоемких вычислительных задач при промышленном проектировании, стоящих перед исследователями университета, МИИТ приобрел суперкомпьютерный комплекс «Т_Платформы» МИИТ Т-4700.

МИИТ Т-4700 на момент открытия стал самым мощным в России суперкомпьютером на базе процессоров AMD Opteron™ 2356 (Barcelona).

Вычислительный кластер на базе 64-х двухпроцессорных узлов Discus с четырехъядерными процессорами AMD Opteron™ (Barcelona) обеспечивает пиковую производительность 4,7 триллионов операций в секунду (Тфлопс).

Реальная производительность кластера на тесте Linpack составила 3,89 Тфлопс (83% от пиковой). В качестве интерконнекта решение использует наиболее производительную сетевую технологию InfiniBand, объединяющую суперкомпьютер с системой хранения данных и оборудованием корпоративного портала МИИТа. Благодаря объединению всех аппаратных компонентов комплекса в единую высокоскоростную сеть университет сможет организовать удобный доступ к вычислительным ресурсам системы МИИТ Т-4700 непосредственно через корпоративный портал, что существенно упростит внедрение новых технологий в процесс исследований и разработок.

Суперкомпьютер МИИТа укомплектован набором свободно распространяемых средств управления и мониторинга, а также специализированными средствами разработки и отладки приложений PGI Server от компании Portland Group. В комплект поставки также вошли предустановленные прикладные продукты компании MSC Software Corp. Для прочностных, гидро и газодинамических расчетов, пакет для промышленного моделирования SolidWorks, а также пакеты для моделирования и оптимизации транспортных потоков PTV Vision®. [5]

На кластере так же установлена реализация MPI, разработанная NetworkBased Computing Laboratory (NBCL), которая носит название MVAPICH2, что позволит задействовать его ресурсы для обучения студентов в рамках разрабатываемого курса.

1.3 Обоснование целесообразности разработки

Современные технологии позволяют сделать из множества персональных компьютеров вычислительный кластер. В учебном плане кафедры АСУ есть лекционный курс «Высокопроизводительные Вычислительные Системы». Кафедра также располагает всеми необходимыми аппаратными средствами для создания вычислительного кластера. Кроме того, в университете имеется мощный кластер МИИТ Т-4700(подробнее в п. 1.2.5). В рамках дипломного проекта требуется разработать лабораторный комплекс и соответствующее методическое и программное обеспечение, которые обеспечат овладение описанными выше технологиями и возможность применения их на практике.

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

1.4 Требования разработке

1.4.1 Требования к кластерной системе

Для лабораторного комплекса должны быть задействованы два кластера:

· кластер, организованный посредством программной реализации MPI MPICH2 на базе вычислительных средств кафедры;

· кластер МИИТ Т-4700.

Требования к информационному обеспечению

Исходные данные

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

Выходные данные

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

1.4.2 Требования к методическому обеспечению

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

· библиотека MPI(Message Passing Interface): функции, реализации;

· компиляция и запуск параллельных программ на вычислительном кластере;

· программное обеспечение для реализации кластера из персональных компьютеров, объединённых ЛВС: обзор, установка;

· компиляция и запуск параллельных программ на кластере из персональных компьютеров, объединённых ЛВС;

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

1.4.3 Требования к документации

В ходе дипломного проектирования должны быть разработаны:

· методические материалы для выполнения всех лабораторных работ;

· инструкция пользователя для разрабатываемой программы

1.4.4 Требования к техническому обеспечению

· Кластер устанавливается на имеющуюся в учебном классе операционную систему

· Вычислительные узлы кластера должны загружаться в автоматическом режиме, без участия пользователя

· Подключение к кластеру дополнительных вычислительных узлов должно происходить без перенастройки системы

· Кластер должен быть представлен пользователю как единый ресурс

· Управление процессами осуществляется через терминал

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

Для выполнения работы необходима, сеть из нескольких компьютеров.

1.4.5 Требования к рабочим станциям

Аппаратные:

· ЦП вычислительного узла с тактовой частотой не менее 900 MHz

· 256 Мб ОЗУ на всех вычислительных узлах

· Вычислительные узлы должны быть связаны в вычислительную сеть Fast Ethernet (для обучения допустимы Ethernet/Wi-Fi).

Операционная система:

· Windows Server 2003

· Windows XP

· Windows Vista

· Windows 7

Программное обеспечение:

· В качестве среды разработки будет использоваться Visual Studio 2008 или 2010 (возможно использование бесплатной версии Express).

· Программное обеспечение MPICH2.

1.4.6 Требования к разрабатываемому ПО

Комплект MPICH2 включает пользовательский интерфейс для запуска параллельных программ wmpiexec.exe. Программа, на основании данных, введённых пользователем, генерирует команду запуска и выполняет её. Данный интерфейс имеет следующий недостаток: команды, генерируемые им, распределяют нагрузку между узлами равномерно, без балансировки.

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

1.4.7 Требования к показателям назначения

В рамках лабораторного практикума необходимо предусмотреть возможность расчёта показателей эффективности параллельных алгоритмов:

· Ускорение

· Эффективность

· Стоимость

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

1.5 Анализ исходных данных

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

· Пользователь

· Вычислительные узлы

· Конфигурационный файл

Таблица 1.1 Источники данных

Источники данных

Исходные данные

Пользователь

Путь к mpiexec.exe

Путь и название исполняемого файла параллельной программы

Число и имена узлов для выполнения задачи

Выбор равномерного, навязанного или сбалансированного распределения нагрузки с учётом производительности узлов

Вычислительные узлы

Величина, характеризующая производительность узла

Конфигурационный файл

Константы величин используемых для запуска параллельных программ

Настройки запуска, сохранённые пользователем

2.

2. РАЗРАБОТКА ЛАБОРАТОРНОГО КОМПЛЕКСА «КЛАСТЕРНЫЕ СИСТЕМЫ»

2.1 Разработка методического обеспечения для лабораторного комплекса

Лабораторный комплекс «Кластерные системы» состоит из 3-х лабораторных работ. В ходе каждой из них студенту предлагается ознакомиться с новым материалом, а затем приступить к выполнению работы.

Лабораторная работа №1 знакомит студента с распределёнными вычислениями на примере технологии MPI и её реализации MPICH2 для Windows. Студенту предлагается освоить следующие процессы:

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

· настройка службы менеджера процессов MPICH2;

· адаптация среды разработки под компиляцию MPI-программ;

· написание и компиляция программ MPI-программ;

· запуск MPI-программ на нескольких узлах;

· анализ результатов работы программы.

К лабораторной работе №1 разработано ПО, устраняющее один из недостатков пакета MPICH2 - отсутствие возможности балансировки нагрузки в случае консолидации разных по производительности узлов(см. раздел Разработка программного обеспечения для лабораторного комплекса). Этим ПО, представляющем собой пользовательский интерфейс для утилиты mpiexec.exe и рекомендуется пользоваться для запуска MPI-программ в условиях объединения различных по производительности вычислительных узлов.

В ходе выполнения лабораторной работы №2 студент осваивает:

· работу с кластером МИИТ Т-4700 через протокол SSH;

· работу с менеджером распределённых ресурсов Torque.

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

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

Каждая работа для наглядности сопровождается построением графиков.

2.2 Содержание лабораторных работ

2.2.1 Рабочее задание для лабораторной работы №1

· Средствами MPICH2 организовать кластер из настольных компьютеров. Для этого установить и настроить MPICH2 на каждом компьютере, который будет использоваться в качестве вычислительного или управляющего узла кластера.

· Написать и откомпилировать параллельную программу для запуска в интерактивном режиме на реализованном кластере. Для этого требуется установить среду разработки, например Visual C++, добавить в неё библиотеку MPICH2 и откомпилировать написанную программу.

· Произвести многократный запуск программы с занесением выходных данных о времени выполнения данных в таблицу. Для запуска параллельных программ используется программа, входящая в пакет MPICH2 mpiexec.exe, которую нужно запустить из командной строки с передачей таких параметров как путь к параллельной программе, кол-во вычислительных узлов, их IP-адреса или имена, число процессов параллельной программы и т.д. Ввиду сложности такой команды предусмотрен пользовательский интерфейс для генерации такой команды на основании исходных данных, вводимых пользователем. На основании предложенного варианта необходимо выполнить параллельную программу несколько раз и занести данные в Таблицу 2.1.

Таблица 2.1 Лабораторная работа №1. Результаты выполнения MPI-программ

Вычислительные узлы

Сложность задачи (Число итераций )

Время выполнения

Равномерно распределённая нагрузка

Сбалансировано распределенная нагрузка

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

2.2.2 Рабочее задание для лабораторной работы №2

· Написать и откомпилировать параллельную программу для запуска в пакетном режиме на кластере МИИТ Т-4700. Для этого необходимо получить доступ к linux-кластеру через протокол SSH (воспользовавшись, например, PuTTy или WinSCP) и откомпилировать написанную программу с помощью программы-компилятора, входящей в состав mvapch2.

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

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

· Произвести многократный запуск программы с занесением приведённых ниже показателей в таблицу. На основании предложенного варианта необходимо выполнить параллельную программу с помощью mpiexec несколько раз и занести данные в Таблицу 2.2.

Таблица 2.2 Лабораторная работа №2. Результаты выполнения MPI-программ

Опции запуска MPI-программы

Сложность задачи

Время выполнения

Число узлов

Число ядер

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

2.2.3 Рабочее задание для лабораторной работы №3

· Рассчитать показатели эффективности использования кластеров (ускорение, эффективность, стоимость (данные показатели описаны подробнее в п. 1.2.2.)), на основании данных, полученных в Лабораторных работах №1 и №2.

Таблица 2.3 Расчёт показателей эффективности кластера на базе MPICH2

Вычислительные узлы

Сложность задачи

Время выполнения при сбалансировано распределенной нагрузке

Ускорение

Sp(n)=

T1(n)/Tp(n)

Эффективность

Ep(n) =Sp(n)/p

Стоимость

Cp=pTp

Таблица 2.4 Расчёт показателей эффективности кластера МИИТ Т-4700

Опции запуска MPI-программы

Сложность задачи

Время выполнения при сбалансировано распределенной нагрузке

Ускорение

Sp(n)=

T1(n)/Tp(n)

Эффективность

Ep(n) =Sp(n)/p

Стоимость

Cp=pTp

Число узлов

Число ядер

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

· Проанализировать результат и сделать вывод.

2.3 Разработка программного обеспечения для лабораторного комплекса

Как было заключено на этапе предпроектного анализа, комплект MPICH2 включает пользовательский интерфейс для запуска параллельных программ wmpiexec.exe. Программа, на основании данных, введённых пользователем, генерирует команду запуска и выполняет её. Данный интерфейс имеет следующий недостаток: команды, генерируемые им, распределяют нагрузку между узлами равномерно, без балансировки.

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

Рисунок 2.1 Внешний вид программы Интерфейс для MPICH

UML-диаграмма вариантов использования разработанного обеспечения представлена на рисунке 2.2.

Рисунок 2.2 UML-Диаграмма вариантов использования Интерфейса для MPICH

Запуск балансировки и запуск MPI-программ рассмотрен подробнее с помощью диаграмм активности(Рис. 2.3 и 2.4).

Для балансировки пользователь вводит необходимые исходные данные: сетевые имена узлов, сетевое имя тестирующей программы и сетевое имя файла для выходного файла. Далее Интерфейс для MPICH генерирует и выполняет команду, запускающую тестирующую MPI-программу. Принципы работы MPICH2 описаны подробно в п. 1.2.4. Тестирующей MPI-программой может стать любая программа, которая равномерно распределяет нагрузку между вычислительными узлами кластера, после чего помещает в выходной файл целые величины, которые пропорциональны скорости вычислений каждого узла. В данной работе для тестирования используется программа вычисления числа Пи. Интерфейс считывает выходные данные тестирующей MPI-программы и помещает в столбец таблицы «Число процессов» напротив каждого вычислительного узла.

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

Рисунок 2.3 UML-диаграмма деятельности запуска балансировки

Рисунок 2.4 UML-диаграмма деятельности запуска MPI-программы

Листинг программы Интерфейс для MPICH и используемой ей тестирующей программы представлен в приложении 1.

кластерный технология лабораторный программный

2.4 Подготовка рабочих мест и описание хода выполнения лабораторных работ

2.3.1 Лабораторная работа №1

2.3.1.1 Подготовка рабочего места для выполнения лабораторной работы №1

Установка ПО

Перед тем как приступить к выполнению лабораторной работы №1 необходимо загрузить последнюю версию MPICH2 с официального сайта разработчика: http://?www.?mcs.?anl.?gov/?research/?projects/?mpich2/?downloads/?index.php??s=downloads [6], и Microsoft Visual C++ 2008 c официального сайта Microsoft: http://www.microsoft.com/en-us/download/default.aspx [7]. Далее следует установить ПО на все рабочие станции, которые планируется использовать в качестве вычислительных или управляющих узлов.

Во время установки MPICH вам нужно будет ввести пароль для доступа к менеджеру процессов SMPD. Вы должны ввести одинаковый пароль на всех компьютерах:

Рисунок 2.5 Указание пароля для доступа к менеджеру процессов

В окне указания пути установки рекомендуется оставить каталог по умолчанию. Кроме того, поставить точку в пункте «Everyone»(Рис. 2.6):

Рисунок 2.6 Указание пути установки

Если Windows спросит, разрешить ли доступ в сеть программе smpd.exe, то нажмите «Разрешить».

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

· запущена ли служба «MPICH2 Process Manager»,

· разрешён ли этой службе доступ в сеть.

Необходимо зайти в службы: Пуск > Настройка > Панель управления > Администрирование > Службы. Служба «MPICH2 Process Manager» должна быть в списке служб (Рис. 2.7) и должна работать.

Рисунок 2.7 Служба «MPICH2 Process Manager» в списке служб

Далее следует зайти в настройки брэндмауэра Windows: Пуск > Настройка > Панель управления > Брандмауэр Windows и добавить программы «Process launcher for MPICH2 applications» и «Process manager service for MPICH2 applications» в список исключений.

Настройка MPICH2
Необходимо создать на каждом компьютере пользователя с одинаковым именем и паролем. От имени этого пользователя будут запускаться MPI-программы.
Любое действие система MPICH выполняет от указанного имени пользователя. Для того, чтобы спрашивать имя пользователя и пароль, используется программа Wmpiregister. Проблема в том, что имя пользователя и пароль спрашиваются достаточно часто, что может вызывать раздражение. Для того, чтобы этого избежать, Wmpiregister может сохранять имя пользователя и пароль в реестре Windows. Для этого необходимо:

· запустить программу wmpiregister,

· ввести имя пользователя в поле Account,

· ввести пароль в поле password,

· нажать кнопку Register

· нажать кнопку OK

Теперь при обращении к mpiexec, задания будут выполняться на всех узлах от имени этого пользователя, и вводить пароль повторно пользователю mpich2 не придётся.

Рис. 2.8 Скриншот программы wmpiregister

Создание общего сетевого ресурса
Для удобного запуска MPI-программ следует создать на одном из компьютеров общий сетевой ресурс. Для этого требуется в свойствах папки на вкладке «Доступ» (в нерусифицированной версии Windows - «Sharing») открыть доступ к папке. В этой папке будут храниться MPI-программы и выходные данные тестирующих программ.

2.3.1.2 Описание хода лабораторной работы №1

Создание MPI-программы в Visual Studio
Необходимо добавить файлы библиотеки MPICH2 в среду разработки.(Рис. 2.9, 2.10)
Рис. 2.9 Добавление заголовочных файлов mpich2 в среду разработки Visual C++
Рис. 2.10 Добавление библиотечных файлов mpich2 в среду разработки Visual C++
Также необходимо добавить библиотеку mpi.lib в проект, отредактировав свойства проекта (Рис. 2.11).
Рис. 2.11 Добавление библиотеки mpi.lib в проект Visual C++
Любой участок кода, который может быть выполнен отдельно независимо от других, можно выполнять параллельно в отдельном потоке или процессе. Для демонстрации воспользуемся программой вычисляющей число Пи. Метод нахождения числа Пи заключается в численном решении интеграла:
Вычисление такого интеграла по методу прямоугольников сводится к дискретизации подынтегральной функции и суммированию площадей прямоугольников под функцией (Рис. 2.12):
Рисунок 2.12 Подынтегральная функция
Чем выше частота дискретизации, тем точнее результат.
В нашей задаче выполнение суммирования(в листинге этот участок кода помечен бледным цветом) можно распараллелить, т.к. итерации не зависят друг от друга, а затем посчитать общую сумму результатов всех процессов.
Программа при запуске запрашивает у пользователя в интерактивном режиме число интервалов для суммирования - это и есть частота дискретизации(n).
Листинг программы MPI-программы
// Подключение необходимых заголовков
#include <stdio.h>
#include <math.h>
// Подключение заголовочного файла MPI
#include "mpi.h"
// Функция для промежуточных вычислений
double f(double a)
{
return (4.0 / (1.0+ a*a));
}
// Главная функция программы
int main(int argc, char **argv)
{
// Объявление переменных
int done = 0, n, myid, numprocs, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0, endwtime;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
// Инициализация подсистемы MPI
MPI_Init(&argc, &argv);
// Получить размер коммуникатора MPI_COMM_WORLD
// (общее число процессов в рамках задачи)
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
// Получить номер текущего процесса в рамках
// коммуникатора MPI_COMM_WORLD
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
// Вывод номера потока в общем пуле
fprintf(stdout, "Process %d of %d is on %s\n", myid,numprocs,processor_name);
fflush(stdout);
while(!done)
{
// количество интервалов
if(myid==0)
{
fprintf(stdout, "Enter the number of intervals: (0 quits) ");
fflush(stdout);
if(scanf("%d",&n) != 1)
{
fprintf(stdout, "No number entered; quitting\n");
n = 0;
}
startwtime = MPI_Wtime();
}
// Рассылка количества интервалов всем процессам (в том числе и себе)
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if(n==0)
done = 1;
else
{
h = 1.0 / (double) n;
sum = 0.0;
// Обсчитывание точки, закрепленной за процессом
for(i = myid + 1 ; (i <= n) ; i += numprocs)
{
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;
// Сброс результатов со всех процессов и сложение
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
// Если это главный процесс, вывод полученного результата
if(myid==0)
{
printf("PI is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT));
endwtime = MPI_Wtime();
printf("wall clock time = %f\n", endwtime-startwtime);
fflush(stdout);
}
}
}
// Освобождение подсистемы MPI
MPI_Finalize();
return 0;
}
Запуск MPI-программ
Для запуска MPI-программ в комплект MPICH2 входит программа с графическим интерфейсом Wmpiexec, которая представляет собой оболочку вокруг соответствующей утилиты командной строки Mpiexec. Однако Wmpiexec не обладает функцией балансировки нагрузки между узлами с разной производительностью. Поэтому для запуска предлагается воспользоваться программой Интерфейс для MPICH(Рис. 2.13).
Рис. 2.13 Скриншот программы Интерфейс для MPICH
Балансировка
Для балансировки нагрузки, необходимо:

· Внести данные в таблицу(имя компьютера или IP-адрес).

· Указать сетевой путь к тестирующей программе, и сетевой путь к выходному файлу.

· Нажать кнопку «Балансировка».

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

Для запуска программы, необходимо, чтобы таблица узлов была полностью заполнена. При этом пользователь может изменить рекомендованные программой значения. Также должен быть указан путь к mpiexec.exe и сетевой путь к MPI-программе. После введения данных нужно нажать «Запуск».

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

· 2 узла с двухядерными процессорами(Рис 2.14);

· 1 узел с одним ядром(если назначить 1 узлу только один процесс, то он будет выполняться на одном ядре, т.е. последовательно);

· 1 узел с числом процессов, назначенных ему, растущим как 2x ,где x - номер опыта (т.е. 1, 2, 4, 8, 16, 32, 64), для демонстрации влияния накладных расходов распараллеливания задачи на общее время выполнения программы.

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

Рисунок. 2.14 Схема кластера из 2-х узлов

Таблица №2.5 Результаты выполнения MPI-программ на кластере на базе MPICH2

Вычислительные узлы

Сложность задачи

Время выполнения

Равномерно распределённая нагрузка

Сбалансировано распределенная нагрузка

Узел 1

Узел 2

1

0.137732

0.010345

1000

0.003373

0.003709

1000000

0.010750

0.006647

10000000

0.061743

0.150230

100000000

0.536879

0.428189

500000000

2.368173

1.638354

1000000000

4.806102

3.204190

2000000000

9.413170

6.402070

Узел 1 последовательное выполнение

1

0.000311

-

1000

0.000274

-

1000000

0.008735

-

10000000

0.088661

-

100000000

0.885291

-

500000000

4.463532

-

1000000000

8.913408

-

2000000000

17.874241

-

Узел 1:1 процесс

1000000

0.008860

-

Узел 1:2 процесса

1000000

0.004488

-

Узел 1:4 процесса

1000000

0.004782

-

Узел 1:8 процессов

1000000

0.005014

-

Узел 1:16 процессов

1000000

0.006190

-

Узел 1:32 процесса

1000000

0.007988

-

Узел 1:64 процесса

1000000

0.013651

-

Построение графиков
По данным из таблицы требуется построить зависимости времени выполнения от сложности задачи для равномерно и сбалансировано распределенной нагрузки.
Рисунок 2.15 График времени выполнения вычислений
Полученные данные и построенные на их основании графики наглядно демонстрируют эффект от применения распараллеливания. Также видно, что в связи с тем, что один из узлов намного производительнее другого, балансировка смогла существенно улучшить временные показатели вычислений.
На следующем графике (Рисунок 2.16) показана зависимость времени вычисления от числа параллельных процессов при одинаковой сложности задачи. Очевидно, что когда число процессов превышает число ядер, накладные расходы на обмен данными между процессами ухудшают временные показатели. При определённых условиях увеличение числа процессов может сделать параллельный алгоритм по скорости хуже последовательного.
Рисунок 2.16 Время выполнения программы сложностью 1М итераций

2.3.2 Лабораторная работа №2

2.3.2.1 Подготовка рабочего места для выполнения лабораторной работы №2

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

2.3.2.2 Описание хода лабораторной работы №2

Подключение к кластеру МИИТ Т-4700
Доступ к кластеру осуществляется через протоколы SSH, SFTP. Для этого можно воспользоваться PuTTY, WinSCP и другими клиентами. В данном описании будет использоваться WinSCP. Требуется запустить WinSCP.exe и создать новую сессию. В открывшемся окне ввести данные о подключении: название хоста, номер порта, имя пользователя и пароль, как показано на рисунке 2.17.
Рисунок 2.17 Скриншот программы WinSCP
Компиляция программы
Для компиляции mpi-программы на linux-кластере используется программа-компилятор. В mpich есть компиляторы для языков C, C++, Fortran. Чтобы откомпилировать программу написанную на языке C++, требуется, после того как файл с исходником перенесён в папку пользователя с помощью WinSCP, послать через терминал команду общего вида:
<утилита-компилятор> -o <исполняемый файл MPI-программы> <исходный файл MPI-программы>
В нашем случае необходимо выполнить следующую команду:
ogutsu@gsc1n1:~> /share/mpi/mvapich2-1.2p1-pgi/bin/mpicxx -o /mnt/scratch/home/ogutsu/cpi.mpi /mnt/scratch/home/ogutsu/pi.c
Где, mpicxx - утилита-компилятор для C++, после ключа -o следует путь к исполняемому файлу /mnt/scratch/home/ogutsu/cpi.mpi, который будет сформирован в результате компиляции, и после пробела указан путь к исходному коду MPI-программы /mnt/scratch/home/ogutsu/pi.c.
Листинг программы MPI-программы
#include "mpi.h"
#include <stdio.h>
#include <math.h>
double f(double);
double f(double a)
{
return (4.0 / (1.0 + a*a));
}
int main(int argc,char *argv[])
{
int done = 0, n=1000000000, myid, numprocs, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0, endwtime;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
if (myid == 0) {
fflush(stdout);
if (n==0) {
fprintf( stdout, "No number entered; quitting\n" );
n = 0;
}
startwtime = MPI_Wtime();
}
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if (n == 0)
done = 1;
else {
h = 1.0 / (double) n;
sum = 0.0;
for (i = myid + 1; i <= n; i += numprocs) {
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
if (myid == 0) {
printf("pi is approximately %.16f, Error is %.16f\n",
pi, fabs(pi - PI25DT));
endwtime = MPI_Wtime();
printf("wall clock time = %f\n", endwtime-startwtime);
fflush( stdout );
}
}
MPI_Finalize();
return 0;
}
Составление скрипта задания
После компиляции по указанному пути появится исполняемый файл программы. Для её запуска требуется написать задание, выполнение управление которым на linux-кластере осуществляет менеджер распределённых ресурсов Torque. Задание запуска программы полученной выше для менеджера ресурсов Torque представляет собой скрипт следующего содержания:
#!/bin/bash
#PBS -o /mnt/scratch/home/ogutsu/mylog
echo start
/share/mpiexec-0.83/mpiexec /mnt/scratch/home/ogutsu/cpi.mpi
echo end
Данный определяет путь к файлу стандартного вывода /mnt/scratch/home/ogutsu/mylog, запускает утилиту /share/mpiexec-0.83/mpiexec, которая выполняет mpi-программы, в данном случае нашу /mnt/scratch/home/ogutsu/cpi.mpi. Написание и запуск заданий для менеджера распределённых ресурсов Torque описано подробнее в приложении 2.
Запуск заданий
Общая схема кластера под управлением менеджера ресурсов Torque изображена на рисунке 2.18.
Команда
qsub -l nodes=20 f1.pbs
помещает задание f1.pbs, которое нужно выполнить на 20 узлах кластера, в очередь. Если задание первое в очереди, то оно выполняется. Задание выполняет программу в пакетном режиме, помещая вывод в файл, указанный в скрипте задания. Его содержимое можно легко посмотреть.
Содержимое /mnt/scratch/home/ogutsu/mylog:
start
pi is approximately 3.1415926535899708, Error is 0.0000000000001776
wall clock time = 8.752536
end
Рисунок 2.18 Схема кластера, управляемого менеджеров ресурсов Torque
Занесение данных в таблицу
Результаты многократного запуска программы следует занести в таблицу №2.
В столбце Опции запуска MPI-программы нужно написать число узлов и ядер, на которых выполняется задание. О запуске заданий менеджера распределённых ресурсов Torque написано подробнее в приложении 2. В качестве сложности задачи снова выступает число итераций вычисления интеграла. Т.к.MPI- программа выполняется на кластере в пакетном режиме, варьировать этот параметр нужно в самой программе или передавая программе параметр при запуске. После выполнения MPI-программы с заданными (согласно варианту) сложностью и числом вычислительных узлов, необходимо внести время выполнения программы в секундах в таблицу 2.6. В последней серии опытов число ядер меняется по закону 2n-1, где n номер опыта, а сложность задачи меняется пропорционально числу ядер, начиная с числа 16777216, т.е. 223+n.
Таблица №2.6 Результат выполнения вычислений на кластере МИИТ Т-4700

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

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