با وجود افزایش کارایی و سرعت سیستم های کامپیوتری، ولی هنوز اجرای برنامه های سطح بالا با سرعت پایینی انجام میگردد. نمونه نرم افزارهایی که به پردازش قوی و سریع نیاز دارند، برنامه های نانو فناوری محاسباتی و شبیه سازی در تحقیقات هسته ای و فیلم ساز های کامپیوتری و برنامه های پیش بینی وضعیت هوا و از این قبیل نرم افزار ها میباشند. سوپرکامپیوتر ها در دنیای کنونی بسیاری از این گونه مشکلات را رفع نموده است اما از لحاظ اقتصادی در بیشتر موارد استفاده از آنها مقرون به صرفه نمیباشد، در این میان پردازش موازی مشکلات را برطرف خواهد کرد که در این مقاله سعی بر آن است تا این پردازش را مورد بررسی قرار دهیم.
رایانش موازی (Parallel computing)
مفهوم Parallel computing یا محاسبات موازی به انجام رساندن یک برنامه ای متشکل از قسمت های کوچکتر با استفاده از چندین پردازنده با سرعت عملیاتی بالا میباشد. در مجموع اجرای پروژه و حل مسئله به چندین زیر مجموعه تقسم خواهد شد، که هر کدام را یکی از اجرا کننده ها و یا همان پردازنده ها به عهده خواهند گرفت تا زمان کمتری صرف گردد. رایانه ای که پردازش موازی را عملی میکند دارای چندین پردازنده میباشد، در گذشته پردازنده ها در یک سری دسته بندی قرار میگرفتند ولی در دنیای کامپیوتری امروز با استفاده از یک پردازنده چند هسته ای چندین محاسبه گر در یک بسته قرار دارند، رایانه های موازی در نوع اتصال پردازنده و قرار گرفت حافظه متفاوت خواهند بود.
مزایای استفاده از پردازش موازی و یا مزایای سیستم های ابر رایانه را که عامل اصلی رشد سریع آنها نیز میباشد میتوان به شرح زیر لیست نمود.
1. هزینه پایین در مقابل فعالیت سریع و کارایی بالا به همراه سخت افزار و نرم افزار ساده
2. از لحاظ تعمیر و نگهداری قطعات ساده میباشد
3. امکان ارتقای سرویس های داخلی در کوتاهترین زمان
4. مجموعه موازی سرویس با کارایی بالایی را ارائه مینمایند و در صورت نیاز میتوان مدت زمان زیادی مورد استفاده قرار گیرد.
5. مدت زمان شبیه سازی را کاهش و پاسخ مسائل را بسرعت در اختیار قرار میدهد.
6. محدودیتی در نوع پردازش و یا میزان مسائل و تحقیقات تعریف نشده است، تحلیل تحقیقات بزرگ و پیچیده را به راحتی عملی میکند.
7. در سیستم سخت افزاری و نرم افزاری ماشین آلات خود از استداندارد IO (سیتم های ورودی و خروجی) استفاده میکند.
زبان های برنامه نویسی در پردازش موازی:
در برنامه نویسی موازی از کتابخانه ها، رابطه زبان های برنامه نویسی و مدل های برنامه نویسی موازی استفاده میگردد، از لحاظ حافظه نیز پردازش موازی در چند دسته حافظه مشترک، حافظه توزیع شده و حافظه توزیع شده مشترک رده بندی میگردند. زبان های برنامه نویسی حافظه مشترک از طریق تغییر متغیرهای حافظه مشترک ارتباط میان گره ها را برقرار مینمایند، در حالت حافظه توزیع شده با استفاده از عبور پیام ها ارتباطات عملی میگرد.
در کل زبان های برنامه نویسی که از دسته پردازش موازی محسوب میگردند: لیندا، ارلنگ که در اصل با هدف تحمل پردازش بالا و کاهش خطا در پردازش موازی ایجاد گردید، چارم++ که بر پاییه c++ است و از متغییر هایی به نام chare جهت افزایش پردازش ها به صورت موازی استفاده مینماید و Unified Parallel C که بر مبنای C99 است.
برنامه نویس میتواند با استفاده از برخی ابزارها، متغییر های اشتراکی و یا ورودی/خروجی و ارتباط میان رشته های پردازشی را طراحی نماید. این ابزار ها به دو گروه ابزار های برنامه نویسی برای سیستم حافظه اشتراکی و ابزارهای برنامه نویسی برای سیستم حافظه توزیع شده تقیسیم کرد، Pthreadsها از جمله ابزار های محبوب متخصصان میباشند.
اصول برنامه نویسی موازی را میتوان به چند دسته اصلی نام برد:
1. یافتن موازات کافی در برنامه
2. مجزاکردن اجزای برنامه
3. محلی سازی
4. Load imbalance
5. همگام سازی
6. Race Condition
پردازش موازی با پردازش همروندی و چندکارگی دارای تفاوت های متعددی میباشد، برای مثال در پردازش همرونی چندین عمل بطور همزمان اجرا میشوند و امکان وجود وقفه و غیر فعال شدن عملیات وجود دارد در صورتی که در پردازش موازی چنین اتفاقی وجود نخواهد داشت. پردازش چندکارگی با استفاده از یک پردازش مرکزی همزمان چند وظیفه را بعهده گرفته که ابتدا سیگنال وقفه به پردازنده داده میشود سپس پردازنده کار کنونی را متوقف کرده و تمامی اقدامات گذشته خود را در حافظه ای ذخیره میکند. در این صورت بعد از آنکه عملیات بعدی اجرایی گردید مجدد پردازنده به سراغ اقدمات قبلی خود بازخواهد گشت، در انتها پردازنده برنامه وقفه و دستور مد نظر را فراخوانی و به سراغ عملیات جدید خواهد رفت سپس پردازش دستورات انجام شده و وقفه جهت زمانبندی بعدی فراخوانی میشود. همروندی در پروسه تحقیق و بررسی خود ناحیه وسیعی از رایانش موازی سخت درگیر و کم درگیر سامانه های توزیع شده را در نظر دارد، اما پردازش موازی با تقسیم به اجزاء کوچک عملیات پروژه را به انجام میرساند که در این صورت هر پردازنده مستقل کار خود را عملی مینماید.