Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2



Pdf көрінісі
бет28/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   24   25   26   27   28   29   30   31   ...   53
ParProg MPI OpenMP

Процессоры 
номер
и тип 
итерации 




Исходные 
данные 
13 55 59 88 
29 43 71 85 
2 18 40 75 
4 14 22 43 
1 нечет (1, 2), 
13 55 59 88 
29 43 71 85 
2 18 40 75 
4 14 22 43 


44 
(3, 4) 
13 29 43 55 
59 71 85 88 
2 4 14 18 
22 40 43 75 
13 29 43 55 
59 71 85 88 
2 4 14 18 
22 40 43 75 
2 чет (2, 3) 
13 29 43 55 
2 4 14 18 
59 71 85 88 
22 40 43 75 
13 29 43 55 
2 4 14 18 
59 71 85 88 
22 40 43 75 
3 нечет (1, 2), 
(3, 4) 
2 4 13 14 
18 29 43 55 
22 40 43 59 
71 75 85 88 
2 4 13 14 
18 29 43 55 
22 40 43 59 
71 75 85 88 
4 чет (2, 3) 
2 4 13 14 
18 22 29 40 
43 43 55 59 
71 75 85 88 


45 
3. ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ С 
ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ OPENMP 
 
3.1 Введение в технологию OpenMP 
 
Технология OpenMP является одним из наиболее популярных 
средств программирования для компьютерных систем с общей памятью, 
базирующихся на традиционных языках программирования. OpenMP 
состоит из набора директив для компиляторов и библиотек специальных 
функций [1,4,5]. 
Разработкой стандарта занимается организация OpenMP ARB 
(ARchitecture Board), в которую вошли представители крупнейших 
компаний - разработчиков SMP-архитектур и программного обеспечения. 
Спецификации для языков Fortran и C/C++ появились соответственно в 
октябре 1997 года и октябре 1998 года. 
До появления OpenMP не было подходящего стандарта для 
эффективного программирования на SMP-системах. Наиболее гибким
переносимым 
и 
общепринятым 
интерфейсом 
параллельного 
программирования является MPI (интерфейс передачи сообщений). 
Однако модель передачи сообщений 1) недостаточно эффективна на SMP-
системах; 2) относительно сложна в освоении, так как требует мышления 
в "невычислительных" терминах.
Проект стандарта X3H5 провалился, так как был предложен во время 
всеобщего интереса к MPP-системам, а также из-за того, что в нем 
поддерживается только параллелизм на уровне циклов. OpenMP развивает 
многие идеи X3H5.
POSIX-интерфейс для организации нитей (Pthreads) поддерживается 
широко (практически на всех UNIX-системах), однако по многим 
причинам 
не 
подходит 
для 
практического 
параллельного 
программирования:
- нет поддержки Fortran-а 
- слишком низкий уровень 
- нет поддержки параллелизма по данным 
- механизм нитей изначально разрабатывался не для целей 
организации параллелизма. 
OpenMP можно рассматривать как высокоуровневую надстройку над 
Pthreads (или аналогичными библиотеками нитей). 
Многие поставщики SMP-архитектур (Sun,HP,SGI) в своих 
компиляторах поддерживают спецдирективы для распараллеливания 
циклов. Однако эти наборы директив, как правило, весьма ограничены и 
несовместимы между собой, в результате чего разработчикам приходится 
распараллеливать приложение отдельно для каждой платформы. OpenMP 


46 
является во многом обобщением и расширением упомянутых наборов 
директив.
В настоящее время OpenMP поддерживается большинством 
разработчиков параллельных вычислительных систем: компаниями Intel
Hewlett-Packard, Silicon Graphics, Sun, IBM, Fujitsu, Hitachi, Siemens, Bull и 
другими. Многие известные компании в области разработки системного 
программного обеспечения такие, как Intel, KAI, PGI, PSR, APR, Absoft, 
также 
уделяют 
значительное 
внимание 
разработке 
системного 
программного обеспечения с OpenMP.
Одним из важных достоинств технологии OpenMP является 
реализация 
идеи 
«инкрементального 
программирования», 
когда 
разработчик постепенно находит участки в программе, содержащие 
ресурс параллелизма, с помощью предоставляемых механизмов делает их 
параллельными и затем переходит к анализу следующих участков. Таким 
образом данный подход упрощает процесс адаптации последовательных 
программ к параллельным ЭВМ. 
OpenMP может использоваться совместно с другими технологиями 
параллельного программирования, например, с MPI. Обычно в этом 
случае MPI используется для распределения работы между несколькими 
вычислительными 
узлами, 
а 
OpenMP 
затем 
используется 
для 
распараллеливания на одном узле.


Достарыңызбен бөлісу:
1   ...   24   25   26   27   28   29   30   31   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет