Рассмотрение технологии создания программ для параллельных компьютеров с использованием стандарта MPI и определение их эффективности. Изучение проблемы распараллеливания, способов взаимодействия параллельных процессов и этапов работы анализатора.
Аннотация к работе
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Курсовая работа по дисциплине "Параллельные вычисления и многопоточное программирование" на тему: "Сравнительный анализ эффективности инструментария mpi и net для задачи суммирования" Выполнил: Студент 5-го курсаСегодня невозможно представить себе эффективную организацию работы без применения компьютеров в таких областях, как планирование и управление производством, проектирование и разработка сложных технических устройств, издательская деятельность, образование - словом, во всех областях, где возникает необходимость в обработке больших объемов информации. Однако наиболее важным по-прежнему остается использование их в том направлении, для которого они собственно и создавались, а именно, для решения больших задач, требующих выполнения громадных объемов вычислений. Такие задачи возникли в середине прошлого века в связи с развитием атомной энергетики, авиастроения, ракетно-космических технологий и ряда других областей науки и техники. Численное моделирование, заполняя промежуток между физическими экспериментами и аналитическими подходами, позволило изучать явления, которые являются либо слишком сложными для исследования аналитическими методами, либо слишком дорогостоящими или опасными для экспериментального изучения. Стало возможным моделировать в реальном времени процессы интенсивных физико-химических и ядерных реакций, глобальные атмосферные процессы, процессы экономического и промышленного развития регионов и т.д.Исторически сложилось так, что для создания «отзывчивых» клиентских приложений, масштабируемых серверов и для распараллеливания алгоритмов разработчики напрямую манипулировали потоками. Но это же вело к взаимоблокировкам (deadlocks), активным блокировкам (livelocks), очередям на блокировках (lock convoys), «топтанию потоков на месте» (two-step dances), конкуренции за блокировки (race conditions), превышению лимита (oversubscription) и уйме других нежелательных проблем в приложениях. При наличии примерно 50 типов в этом пространстве имен в базовых сборках .NET Framework 3.5 (включая такие типы, как Thread, THREADPOOL, Timer, Monitor, MANUALRESETEVENT, READERWRITERLOCK и Interlocked) никто не должен был бы винить .NET Framework в легковесном отношении к поддержке потоков. С радостью констатирую, что эта проблема устранена в .NET Framework 4 и что в будущих версиях .NET Framework будет внесено много усовершенствований в этой области. В конце концов, параллелизм и параллельная обработка сводятся к вопросам производительности, а разработчики, заинтересованные в максимальном быстродействии, должны искать его в неуправляемых языках, которые обеспечивают полный доступ к «железу» и контроль над каждым битом, позволяют манипулировать кеш-линиями и выполнять interlocked-операции…, правильно?Если система не поддерживает многопоточные приложения, то PAL должен будет реализовать собственный планировщик потоков режима пользователя (и в этом случае окажется, что потоки .NET являются аналогами волокон, а не потоков ядра). К сожалению, в .NET, во-первых, не предусмотрено передачи аргументов в эту процедуру, во-вторых, процедура должна быть статическим методом, и в-третьих, класс Thread является опечатанным. В процессе умножения и суммирования элементов матриц синхронизация не выполняется, поэтому при достаточно большом размере матриц гарантированно будут возникать ошибки (необходимо синхронизировать выполнение некоторых действий в потоках, чтобы избежать возникновения ошибок, - об этом ниже, при рассмотрении средств синхронизации): using System; Работающий поток может быть переведен в состояние ожидания (WAITSLEEPJOIN ) явным или неявным вызовом соответствующих методов (Thread.Sleep, Thread.Join и др.) или приостановлен (Suspended ) с помощью метода Thread.Suspend(). Завершение функции потока нормальным образом переводит поток в состояние "завершен" (Stopped ), а досрочное прекращение работы вызовом метода Thread.Abort переведет его в состояние "прерван" (Aborted ).В системе DVM существуют развитые средства анализа эффективности выполнения параллельной DVM-программы. Эти средства являются более мощными, чем те, которые существуют для MPI-программ, поскольку многие важные характеристики выполнения MPI-программ (например, соотношение параллельных и последовательных вычислений) невозможно определить изза отсутствия необходимой информации. Поэтому важно создать такие средства для получения характеристик эффективности MPI-программ, которые могли бы быть доступны пользователям на любых многопроцессорных ЭВМ.Общее время использования процессоров (Total time) - произведение времени выполнения (Execution time) на число используемых процессоров (Processors). Потенциальные потери изза разброса времен (Time_variation) и все компоненты.
План
Содержание
Введение
1. Проблема распараллеливания в Инструментарии.NET