Параллельные вычисления с общей памятью

Материал из ЭНЭ
Перейти к: навигация, поиск

Параллельные вычисления с общей памятью (shared memory): модель (образец) параллельных вычислений, в которой вся рабочая (оперативная) память или её существенная часть доступна всем исполняющим устройствам (процессорам и др.).

С точки зрения классификации Флинна модель определяется как МКОД.

Некоторые образцы оборудования, непосредственно разрешающего работу в этой модели: машины с многоядерными процессорами, SMP, графические адаптеры NVIDIA и ATI, имеющие соответствующие программные инструментальные средства.

Некоторые примеры программных средств, позволяющих работать в этой модели: POSIX threads и вообще любые многонитевые среды исполнения, инструментальные средства, открывающие возможности параллельного счёта на графическом оборудовании NVIDIA и ATI — CUDA, ATI Streams.

В этой типе параллельных вычислений взаимодействие задач (передача данных) обеспечивается неявно, поэтому основное внимание при программировании обращается на осуществление со-исполнения (параллельности) и на синхронизацию, а также на методы снижения связанных с этим затрат.

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

Модели на основе процессов предполагают, что все данные, связанные с процессом, скрыты от прочих процессов, если явно не указано иное (например, использование системных функций UNIX shmget и shmat). Это ограничение важно в многопользовательских системах для обеспечения защиты, но не является обязательным при совместной работе множественных параллельных процессов над одной проблемой. Затраты, связанные с обеспечением защиты, делают процессы менее пригодными для параллельного программирования в этой парадигме.

Напротив, лёгкие процессы (lightweight process) и нити (треды) предполагают, что вся память глобальна. Ослабляя защиту, такие реализации потоков команд разрешают более быструю обработку, и поэтому являются предпочтительной моделью в этой парадигме.

Модели параллельного программирования на основе директив расширяют модель с общей памятью, осуществляемую на основе нитей, средствами помогающими при создании и синхронизации тредов.

Ю.Т.

Источники

  • Введение в параллельное программирование...