Опубликован: 15.04.2008 | Доступ: свободный | Студентов: 1558 / 544 | Оценка: 4.36 / 4.02 | Длительность: 06:55:00
ISBN: 978-5-94774-857-4
Специальности: Программист
Лекция 1:

Введение

Лекция 1: 12 || Лекция 2 >

Инструменты создания параллельных программ

В настоящее время при создании параллельных программ, которые предназначены для многопроцессорных вычислительных систем MPP с распределенной памятью, для обмена данными между параллельными процессами, работающими в разных узлах системы, широко применяется интерфейс обмена сообщениями (Message Passing Interface, MPI). При использовании этого интерфейса обмен данными между различными процессами в программе осуществляется с помощью механизма передачи и приемки сообщений. Кроме MPI при создании параллельных программ возможны и другие методы обмена, например, основанные на использовании функций программной системы PVM (Parallel Virtual Machine) или функций библиотеки SHMEM, разработанной компаниями Cray и Silicon Graphics.

При создании параллельных программ, предназначенных для многопроцессорных вычислительных систем с общей памятью, в настоящее время для обмена данными между процессорами обычно используются либо методы многопоточного программирования с помощью нитей ( threads ), либо директивы OpenMP [1.6-1.13]. Директивы OpenMP являются специальными директивами для компиляторов. Они создают и организуют выполнение параллельных процессов (нитей), а также обмен данными между процессами. Отметим также, что обмен данными между процессами в многопроцессорных вычислительных системах с общей памятью может осуществляться и с применением функций MPI и SHMEM.

В конце 2005 года компания Intel объявила о создании приложения Cluster OpenMP для компьютеров с процессорами собственного производства. Cluster OpenMP реализует расширение OpenMP, позволяет объявлять области данных доступными всем узлам кластера и тем самым распространяет методы OpenMP на создание параллельных программ для параллельных вычислительных систем с разделенной памятью. Это средство обладает рядом преимуществ по сравнению с MPI, главным из которых является простота разработки программ для Cluster OpenMP, поскольку передача данных между узлами кластера происходит неявно, по протоколу Lazy Release Consistency. Отметим, что компания Intel не является изобретателем этого подхода - ранее такие попытки предпринимались в Японии (см., например, [1.14]) и некоторых других странах).

Основными алгоритмическими языками параллельного программирования с использованием OpenMP в настоящее время являются Fortran и C/C++. Существуют многочисленные версии компиляторов, разработанные различными производителями программного обеспечения, позволяющие быстро и легко организовать параллельные вычисления с помощью методов OpenMP. Обычно директивы распараллеливания OpenMP применяются для распараллеливания последовательных программ. При этом последовательные программы не теряют своей работоспособности. Вернуться к последовательной версии очень просто: достаточно просто убрать опцию - openmp в вызове компилятора при компиляции программы.

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

В настоящее время на рынке программного обеспечения представлен достаточно широкий спектр коммерческих программных продуктов для автоматического распараллеливания. Как правило, эти системы состоят из графических средств представления параллельных программ, препроцессоров для генерации программ на языках Fortran (77, 90, 95) и C/С++, специализированных трассировщиков и отладчиков, а также средств визуализации.

Компания Intel разрабатывает не только процессоры для параллельных вычислительных систем, но и целый спектр инструментов для отладки, оптимизации и настройки эффективной работы параллельных программ. В настоящее время в компании разработаны компиляторы Fortran и C/C++ с возможностями создания параллельных программ средствами OpenMP на платформах Linux и Windows, а также средства анализа производительности программ VTune Performance Analyzer и Intel Thread Checker, позволяющие находить критические секции в многопоточных программах и существенно ускорять их выполнение. Кроме того, разработаны библиотеки стандартных функций Intel Math Kernel Library, Intel Cluster Math Kernel Library и Intel Integrated Performance Primitives, позволяющие существенно ускорить работу параллельных программ по обработке как числовой, так и графической информации. В конце 2005 года компания анонсировала появление продукта Intel Cluster OpenMP, позволяющего распространить технологии OpenMP на кластерные системы с разделенной памятью.

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

  • idb - символический отладчик, разработанный корпорацией Intel. Поставляется вместе с компиляторами. Поддерживает отладку программ, написанных на алгоритмических языках Fortran и C/C++;
  • gdb - свободно распространяемый отладчик GNU. Поддерживает отладку программ, написанных на алгоритмических языках C/C++ и Modula-2, а также на алгоритмическом языке Fortran 95 при установке дополнительного модуля gdb95;
  • ddd - графический интерфейс к отладчику gdb и некоторым другим отладчикам;
  • TotalView - лицензионный графический отладчик для отладки приложений в средах OpenMP и MPI.
Лекция 1: 12 || Лекция 2 >