Зразок роботи
ЗАКЛЮЧЕНИЕ
В процессе исследования были получены следующие результаты.
При изучении принципов построения параллельных систем был рассмотрен общепринятый подход к классификации ВС, предложенный М.Флинном в 1966 г, где основным определяющим архитектурным параметром является взаимодействие потока команд и потока данных (операндов и результатов), и выделяют следующие четыре класса ВС:
• SISD (Single Instruction, Single Data)
• SIMD (Single Instruction, Multiple Data)
• MISD (Multiple Instructions, Single Data)
• MIMD (Multiple Instructions, Multiple Data) .
Кроме классификации ВС по Флинну, рассмотрена также классификация по Джонсону. И, если классификация Флинна относит почти все параллельные вычислительные системы к одному классу – MIMD, то Джонсон предлагает дальнейшее разделение многопроцессорных систем на основе используемых способах организации оперативной памяти. Классификация Джонсона основана на структуре памяти (global - глобальная или distributed - распределенная) и механизме коммуникаций и синхронизации (shared variables - разделяемые переменные или message passing - передача сообщений). Системы GMSV (global-memory-shared-variables) часто называются также мультипроцессорами с разделяемой памятью (shared-memory multiprocessors). Системы DMMP (distributed-memory-message-passing) также называемые мультикомпьютерами с распределенной памятью (distributed-memory multicomputers).
Для определения эффективных способов организации параллельных вычислений было предложено разбивать задачу на следующие этапы: анализ, дизайн, реализация, отладка, тестирование и настройка.
Было определено, что «идеальная» параллельная программа обладает следующими свойствами:
— длины параллельно выполняемых ветвей равны между собой.
— полностью исключены простои из-за ожидания данных, передачи управления и возникновения конфликтов при использовании общих ресурсов.
— обмен данными полностью совмещен с вычислениями.
Увеличение степени эффективности параллелизма (уменьшение временных затрат на накладные расходы) достигается следующими способами:
— укрупнением единиц распараллеливания;
— уменьшением сложности алгоритмов генерации параллельных процедур (подпрограмм);
— изначальной подготовкой пакета различных вариантов исходных данных;
— распараллеливанием алгоритмов генерации параллельных процедур (подпрограмм).
В работе предложено оценивать степень эффективности этапа реализации на основе ряда критериев выполнения четырёх основных подзадач: выделение независимых частей, определение информационного взаимодействия между частями, масштабирование задач и их распределение между процессорами.
При изучении особенностей многопоточности и синхронизации в ОС Windows были определены основные понятия: поток (thread) и процесс (process). Под «потоком» понимают «поток команд», то есть последовательность инструкций, которые считывает и исполняет процессор. Процесс – это набор потоков, работающих в едином адресном пространстве. В этом пространстве размещаются код и данные приложения (обычно это один exe- и несколько dll-модулей). Именно единство этого пространства и делает обмен данными между потоками приложения предельно простым.
Windows называют многопоточной операционной системой с вытесняющей многозадачностью, потому что каждый поток может быть остановлен в произвольный момент времени и вместо него выбран для исполнения другой.
Каждому потоку назначается уровень приоритета с нулевого (самого низкого) до 31 (самого высокого). В Windows поддерживаются шесть классов приоритетов: Idle (холостого хода), Below Normal (ниже обычного), Normal (обычный), Above Normal (выше обычного), High (высокий) и Real time (реального времени). По умолчанию выбирается приоритет Normal.
Программу, которая реализует тот или иной алгоритм планирования исполнения задач, называют планировщиком (scheduler). В многопроцессорных системах используется динамическое планирование - т.е. планирование с учетом состояния процессов системы в текущий момент времени. Выделяют два подхода:
— Work Sharing - централизованное планирование, при котором планировщик контролирует единый пул задач в системе и назначает задачи процессорам;
— Work Stealing - децентрализованное планирование, при котором единый планировщик отсутствует, а процессоры сами выбирают какие задачи им исполнять.
Для гарантии того, что любая часть разделяемых данных защищена от возможности изменения их значений множеством потоков, используется синхронизация - согласование действий различных потоков. Существует несколько категорий средств синхронизации потоков:
— приостановка выполнения потока (Suspend(), Resume(),Sleep(), Yield(), Join());
— блокирующие конструкции;
— конструкции подачи сигналов;
— незадерживающие средства синхронизации.
В целом, было показано, что инструменты .net для организации многопоточности и синхронизации в Windows достаточно обширны и позволяют эффективно решать возникающие в ходе проектирования задачи.
Актуальность параллельных вычислений обусловила появление множества научных и исследовательских работ в данной области. В этой связи, студенты сталкиваются со сложной задачей ознакомления и систематизации огромного пласта информации, представленного в виде разнообразных книг, брошюр и статей. На наш взгляд, использование преимуществ интерактивных систем обучения могло бы существенно повысить эффективность данного процесса.
Поэтому одной из задач, поставленных перед данным исследованием, стала разработка электронного учебно-методического комплекса (ЭУМК), который сочетал бы в себе подачу теоретического материала, демонстрацию преимуществ отдельных методов распараллеливания при решении конкретных задач и проверку полученных знаний.
Учитывая основное предназначение данного ЭУМК – стать удобным подручным инструментом для изучения основ параллельных вычислений, - мы выбрали для демонстрации задачу элементарного уровня – поиск простых чисел (реализовав два алгоритма: решето Эратосфена и решето Аткина), и задачу среднего уровня – клеточный автомат «Жизнь» Конвея.
Для каждой из этих задач представлены несколько способов решения: «обычные» последовательные вычисления, распараллеливание с помощью инструментов библиотеки TPL и с помощью PLINQ. Производятся замеры времени выполнения в зависимости от максимального числа при поиске простых чисел или от размерности игрового поля в клеточном автомате. Тем самым студент получает возможность провести эмпирические исследования эффективности представленных решений для разных входных данных и разных конфигураций ПК и сделать соответствующие выводы.
Мы считаем, что обобщение полученного практического опыта будет полезно для более глубокого понимания сущности параллельных вычислений, их необходимости и возможностей, а также облегчит переход к решению более сложных задач.
В работе подробно рассмотрены предметная область, функциональное предназначение, требования к техническому и программному обеспечению ЭУМК, проанализирована структура программного продукта, разработана подробная инструкция пользователя. Все задачи, поставленные перед приложением, реализованы.
На наш взгляд, проведенное исследование будет полезно для научных работников, разработчиков, аспирантов и студентов, специализирующихся или интересующихся проблематикой параллельных вычислений. Кроме того, разработанный учебно-методический комплекс может широко применяться как в практике преподавания, так и для организации самостоятельного обучения.