- История Красного Бора Татарстан (Новый Пьяный Бор Елабужского уезда) в статьях
- Программа для поиска драйверов на любое устройство
- Как технология OCR снижает нагрузку на офис
- Как настроить локальную сеть через Wi-Fi
- Как операционная система Windows стала такой популярной
- Продвижение товаров на Wildberries с привлечением внешнего трафика
- Простая программа для управления проектами «Планамайзер»
- Жители Красного Бора (Нового Пьяного Бора) до революции
OpenMP - стандарт для программирования на масштабируемых SMP-системах |
Что такое OpenMP? Кто разрабатывает стандарт? Где найти информацию? Зачем нужен новый стандарт? Наиболее гибким, переносимым и общепринятым интерфейсом параллельного программирования является MPI (интерфейс передачи сообщений). Однако модель передачи сообщений 1) недостаточно эффективна на SMP-системах; 2) относительно сложна в освоении, так как требует мышления в "невычислительных" терминах. Проект стандарта X3H5 провалился, так как был предложен во время всеобщего интереса к MPP-системам, а также из-за того, что в нем поддерживается только параллелизм на уровне циклов. OpenMP развивает многие идеи X3H5. POSIX-интерфейс для организации нитей (Pthreads) поддерживается широко (практически на всех UNIX-системах), однако по многим причинам не подходит для практического параллельного программирования:
OpenMP можно рассматривать как высокоуровневую надстройку над Pthreads (или аналогичными библиотеками нитей). Многие поставщики SMP-архитектур (Sun,HP,SGI) в своих компиляторах поддерживают спецдирективы для распараллеливания циклов. Однако эти наборы директив, как правило, 1) весьма ограничены; 2) несовместимы между собой; в результате чего разработчикам приходится распараллеливать приложение отдельно для каждой платформы. OpenMP является во многом обобщением и расширением упомянутых наборов директив.
Какие преимущества OpenMP дает разработчику? 1. За счет идеи "инкрементального распараллеливания" OpenMP идеально подходит для разработчиков, желающих быстро распараллелить свои вычислительные программы с большими параллельными циклами. Разработчик не создает новую параллельную программу, а просто последовательно добавляет в текст последовательной программы OpenMP-директивы. 2. При этом, OpenMP - достаточно гибкий механизм, предоставляющий разработчику большие возможности контроля над поведением параллельного приложения. 3. Предполагается, что OpenMP-программа на однопроцессорной платформе может быть использована в качестве последовательной программы, т.е. нет необходимости поддерживать последовательную и параллельную версии. Директивы OpenMP просто игнорируются последовательным компилятором, а для вызова процедур OpenMP могут быть подставлены заглушки (stubs), текст которых приведен в спецификациях. 4. Одним из достоинств OpenMP его разработчики считают поддержку так называемых "orphan" (оторванных) директив, то есть директивы синхронизации и распределения работы могут не входить непосредственно в лексический контекст параллельной области. Почитать про OpenMP: http://www.microsoft.com/Rus/Msdn/Magazine/2005/10/OpenMP.mspx http://www.parallel.ru/tech/tech_dev/openmp.html http://ru.wikipedia.org/wiki/OpenMP
Оставьте свой комментарий!
Похожие статьи: |