رایانش موازی نوعی رایانش است که در آن بسیاری از محاسبات یا فرایندها بهطور همزمان انجام میشوند.[۱] مشکلات بزرگ را اغلب میتوان به مشکلات کوچکتر تقسیم کرد، سپس میتوان همزمان آنها را حل کرد. چندین فرم مختلف رایانش موازی وجود دارد: سطح بیت، سطح دستورالعمل، دادهها و موازی کاری(task parallelism). موازی سازی مدت هاست که در رایانش دارای عملکرد بالا (ابر رایانه) مورد استفاده قرار میگیرد، اما به دلیل محدودیتهای فیزیکی که مانع از افزایش فرکانس (frequency scaling) بیشتر میشوند، اقبال گستردهتری پیدا کردهاست.[۲] از آنجا که مصرف برق (و در نتیجه تولید گرما) توسط رایانهها در سالهای اخیر به یک نگرانی تبدیل شدهاست،[۳]رایانش موازی به الگوی غالب در معماری رایانه تبدیل شدهاست، که عمدتاً به صورت پردازندههای چند هسته ای است.[۴]
رایانش موازی( parallel processing) ارتباط نزدیکی با رایانش همروند(concurrent) دارد – آنها اغلب با هم مورد استفاده قرار میگیرند و اغلب با هم ادغام میشوند، گرچه این دو متمایز هستند: این امکان وجود دارد تا موازی سازی بدون همروندی (مانند موازی سازی در سطح بیت) و همروندی بدون موازی سازی (مانند چند وظیفه ای با به اشتراک گذاری زمان در یک پردازنده تک هسته ای).[۵][۶] در رایانش موازی، یک وظیفهٔ محاسباتی بهطور مرسوم به چندین، معمولاً تعداد زیادی، زیر وظیفهٔ بسیار مشابه تقسیم میشود که میتوانند بهطور مستقل پردازش شوند و نتایج آنها پس از اتمام، ترکیب شوند. در مقابل، در رایانش همروند، فرایندهای مختلف غالباً وظایف مرتبط را رفع و رجوع نمیکنند؛ اگر هم این کار را بکنند، همانطور که در رایانش توزیع شده معمول است، وظایف جداگانه ممکن است ماهیت متنوعی داشته باشند و اغلب هنگام اجرا به برخی از ارتباطات بین فرآیندی نیاز دارند.
رایانههای موازی را میتوان تقریباً بر اساس سطحی از موازی سازی که سختافزار پشتیبانی میکند، طبقهبندی کرد، در این میان رایانههای چند هسته ای و چند پردازنده دارای چندین عنصر پردازشی در یک ماشین واحد هستند، در حالی که خوشهها(clusters)، رایانش شدیداً موازی (massively paralle computing) و شبکهها(grids) از چندین رایانه برای کار با بر روی یک وظیفه استفاده میکنند. برای تسریع در انجام کارهای خاص، گاهی اوقات از معماریهای کامپیوتری موازی خاص در کنار پردازندههای سنتی استفاده میشود.
در بعضی موارد، موازی سازی برای برنامهنویس شفاف است، مانند موازی سازی در سطح بیت یا در سطح دستورالعمل، اما نوشتن الگوریتمهای صریحاً موازی، به ویژه آنهایی که از همروندی استفاده میکنند، دشوارتر از موارد متوالی است،[۷] زیرا همروندی باعث بوجود آمدن چندین کلاس جدید از اشکالات نرمافزاری بالقوه میشود، که شرایط مسابقه ای شایعترین آنها است. ارتباط و همگام سازی بین زیر-وظایف مختلف معمولاً از بزرگترین موانع دستیابی به عملکرد بهینه در برنامهٔ موازی است.
در قانون آمدال، یک حداکثر مجاز نظری برای افزایش سرعت یک برنامه واحد در نتیجه موازی سازی وجود دارد.
دیدگاهتان را بنویسید