Данный учебный курс ориентирован на изучение и практическое применение современных высокоуровневых средств параллельного программирования для многоядерных процессоров - библиотеки Microsoft Parallel FX и языка программирования MC#. Использование таких средств, с промышленной точки зрения, резко повышает производительность и продуктивность работы программистов и позволяет привлечь к регулярному параллельному программированию значительно большее число программистов, а с образовательной точки зрения, дает возможность их успешно изучать и осваивать студентам вузов, начиная со 2-го курса.Основная концепция предлагаемого учебного курса заключается в переходе к изучению высокоуровневых средств программирования в качестве основных инструментов параллельного программирования. Рассматриваются два таких средства, базирующиеся на языке С#: Microsoft Parallel Extensions for .NET (библиотеки TPL и PLINQ); язык программирования MC# (www.mcsharp.net). В качестве практических заданий на параллелизацию будут использоваться хорошо известные задачи, такие как сортировка, задачи линейной алгебры, метод статистических испытаний Монте-Карло, рендеринг изображений на основе трассировки лучей, поиск в Интернет, алгоритм Смита-Уотермена сравнения биологических последовательностей и др.Также, в качестве заданий, студентам будут предлагаться задачи конкурса Intel Threading Challenge.Курс создан при финансовой поддержке компании Microsoft
Содержание
Курс лекций
1 Введение в библиотеку Microsoft Parallel Extensions to the .Net Framework ........................ 31.1 Лучший способ использования Parallel Extensions .......................................................31.
2 Как начать программировать с использованием Parallel Extensions .............................. 41.3 TPL (Task Parallel Library) .................................................................................................. 41.4 PLINQ (Parallel Language-Integrated Query) ...................................................................... 51.
5 Координирующие структуры данных ............................................................................... 52
Конструкция Parallel.For ............................................................................................................ 73 Планирование исполнения процессов .................................................................................... 103.1 Work stealing ....................................................................................................................... 114 Конструкция Parallel.Invoke .................................................................................................... 135 Программирование с использованием Task Parallel Library (TPL) .................................... 166 Класс System.Threading.Tasks.Futureи координирующие структуры данных ............ 206.1 Класс System.Threading.Tasks.Future........................................................................ 206.2 Координирующие структуры данных ............................................................................. 217 Введение в PLINQ .................................................................................................................... 267.1 Использование PLINQ ...................................................................................................... 268 Обработка исключений при использовании PFX .................................................................. 299 Примеры программирования с использованием библиотеки PFX ...................................... 319.1 Реализация конструкций ContinueWhenAll и ContinueWhenAny ................................. 319.2 Асинхронное выполнение последовательности задач ................................................... 329.3 Ожидание завершения множества задач ......................................................................... 339.4 Реализация конструкции ParallelWhileNotEmpty ........................................................... 3410 Оценка производительности памяти с помощью теста Random Access ........................... 3710.1 Определение теста RandomAccess ................................................................................. 3710.2 Реализация с использованием PFX ................................................................................ 3811 Решето Эратосфена для нахождения простых чисел .......................................................... 4211.1 Параллельный алгоритм поиска простых чисел на основе решета Эратосфена ....... 4211.2 Реализация с использованием PFX ................................................................................ 4412 Параллельная алгоритм дискретного преобразования Фурье ........................................... 5013 Высокоуровневый язык параллельного программирования MC# ..................................... 57 Материалы для семинарских занятийСеминарское занятие №1 .................................................................................................................31 Наиболее распространенные причины низкой производительности параллельных программ .......................................................................................................................................32. Как начать программировать с использованием Parallel Extensions ....................................6Семинарское занятие № 2 ................................................................................................................71 Вариант Parallel.For с локальными состояниями ....................................................................7Семинарское занятие № 3 ................................................................................................................91 Пользовательские расширения Parallel.For .............................................................................92 Изучение и анализ примеров ..................................................................................................10Семинарское занятие № 4 ..............................................................................................................111 Рекурсия и параллелизм (часть 1) ..........................................................................................11Семинарское занятие № 5 ..............................................................................................................14Рекурсия и параллелизм (часть 2) .............................................................................................14Семинарское занятие № 6 ..............................................................................................................221 Асинхронная модель программирования и класс Future..............................................22
Семинарское занятие № 7 ......................................291
Параллельные шаблоны агрегирования в PLINQ .............................................29
Семинарское занятие № 8 .........................................341 Модификация concurrent-структур данных во время перечисления их элементов ...........342 Сохранение порядка возвращаемых значений при параллельных вычислениях ..............35
Семинарское занятие № 9 ..38
Рекурсия и параллелизм (часть )....38
Семинарское занятие № 10 .42
Параллельный рендеринг изображений 42
Author(s): Ю. Сердюк, А. Петров
Publisher: ИПС РАН, ИНТУИТ
Year: 2009
Language: Russian
Commentary: 1146140913(add ocr)
Pages: 73