مدل برنامهنویسی موازی
مدل برنامهنویسی موازی (به انگلیسی: Parallel programming model) مفهومی است که عبارتهای برنامههای موازی را قادر میسازد ترجمه و اجرا شوند. ارزش یک مدل برنامهنویسی معمولاً بر اساس فراگیری آن (اینکه چند مسئلۀ متفاوت میتوانند توسط آن بیان شوند و با چند معماری مختلف میتوان آنها را اجرا کرد) تعیین میشود. ایجاد یک مدل برنامهنویسی میتواند چندین حالت بگیرد مانند الهام گرفتن کتابخانهها از زبانهای متوالی قدیمی، ضمیمههای زبان یا مدلهای اجرایی کاملاً جدید.
اجماع بر روی یک مدل برنامهنویسی مهم است چرا که نرمافزار را قادر میسازد تا در آن بیان شده و در معماریهای متفاوت ترابرپذیر باشند. از معماری فون نویمان با معماریهای متوالیاش در این مدل کمک گرفته شدهاست تا پلی کارآمد را بین نرمافزار و سختافزار فراهم کند؛ بدین معنی که زبانهای برنامهنویسی سطح بالا میتوانند در آن به صورت کارآمد ترجمه شده و توسط سختافزار اجرا گردند.
طبقهبندی و الگوهای اصلی
طبقهبندیهای مدلهای برنامهنویسی موازی را میتوان به دو محدودۀ کلی تقسیم کرد: تعامل فرایند و تجزیۀ مسئله.
تعامل فرایند
تعامل فرایند مربوط به مکانیزمی مییاشد که فرایندهای موازی در آن میتوانند با یکدیگر در ارتباط باشند. معمولترین حالتهای تعامل، حافظۀ مشترک و گذر پیام هستند، اما موازیسازی مطلق نیز وجود دارد.
حافظۀ مشترک
در مدل حافظۀ مشترک، وظایف موازی یک فضای آدرس جهانی را به اشتراک میگذارند و به صورت غیرهمزمان آن را خوانده و مینویسند. این مدل به مکانیزمهای محافظتی چون قفلها، نشانبرها و مبصرانی احتیاج دارد تا دسترسی همزمان را کنترل کند. حافظۀ مشترک میتواند در سیستمهای با حافظۀ توزیعشده و حافظه دسترسی غیریکپارچه (نوما) شبیهسازی گردند.
در مدل انتقال پیام، وظایف موازی دادهها را به کمک گذر پیام با یکدیگر عوض میکنند. این ارتباطات میتوانند همزمان یا غیرهمزمان باشند. رسمیسازی انتقال پیام فرایند ارتباطات متوالی (سیاسپی) کانالهای ارتباطی را به خدمت گرفتهاست تا فرایندها را به یکدیگر "مرتبط" سازد؛ و با این کار باعث ایجاد شدن چندین زبان مهم همچون جویس، اوکام و ارلنگ شد.
موازیسازی تلویحی
در مدل موازیسازی مطلق، هیچ یک از فعل و انفعالات فرایند برای برنامهنویس قابل مشاهده نیست و به جای آن مترجم یا رانتایم برای اجرای آن مسئول است. این مدل بین زبانهای با دامنۀ اختصاصی متداولتر میباشد.
تجزیۀ مسئله
هر برنامۀ موازی از فرایندهای در حال اجرا به صورت همزمان تشکیل شدهاست، تجزیۀ مسئله به راهی مربوط است که در آن این فرایندها فرموله شدهاند. این طبقهبندی ممکن است به اسکلتهای الگوریتمی یا موازیسازیهای برنامهنویسی موازی اشاره کند.
موازیسازی وظیفه
یک مدل موازیسازی وظیفه بر روی فرایند یا ریسههای اجرا تمرکز دارد. این فرایندها معمولاً از لحاظ رفتاری مجزا خواهند بود، که بر نیاز به ارتباطات تأکید میکند. موازیسازی وظیفه یک راه طبیعی برای توصیف ارتباطات گذر پیام میباشد. این مدل معمولاً به امآیامدی/امپیامدی و امآیاسدی تقسیم میشود.
موازیسازی داده
یک مدل موازیسازی داده بر روی عملیاتهای روی داده که معمولاً به صورت ساختاری آرایه هستند، تمرکز دارد. مجموعهای از وظایف بر روی این دادهها عملیاتهایی را انجام میدهند اما به صورت مستقل و در بخشی جدا. در یک سیستم با حافظۀ مشترک، داده برای همگی قابل دسترس خواهد بود، اما در سیستم حافظۀ حافظۀ توزیع شده بین حافظهها تقسیم شده و بهطور محلی بر رویشان کار خواهد شد. مدل موازیسازی داده معمولاً به اسآیامدی/اسپیامدی تقسیم میشود.
منابع
- ↑ Leslie G. Valiant, A bridging model for parallel computation, Commun. ACM, volume 33, issue 8, August, 1990, pages 103--111