به کارگیری پردازش موازی در جهت مدیریت فرایندها در یک کامپیوتر

1395/2/9 مهدی احمدی 3507

در زمان های گذشته و در زمانی که کامپیوترهای تک پردازنده ای پا به عرصه وجود گذاشتند امکان پردازش کارها تنها به صورت سری و سریال فراهم می بود.

در آن زمان و با وجود کامپیوترهای خلق شده، تنها می توانستید کارهای مختلف را توسط یک پردازنده پردازش کنید و در وقفه زمانی مشخص یک کار را از ابتدا تا به انتها توسط پردازنده مرکزی موجود پردازش نمایید.

در آن زمان این امکان برای سیستم عامل های موجود و همچنین برای برنامه نویسان فراهم بود تا در کنار سری اجرا نمودن کارها، آن ها را به صورت همروند و تودرتو در سطح سیستم عامل به اجرا در آورند.

به عنوان نمونه می توان به چگونگی اجرا شدن یک سند مبتنی بر نرم افزار Word و گوش فرا دادن به یک موسیقی دلنشین اشاره نمود.

با وجود همروند اجرا شدن کارها توسط یک پردازنده، شما می توانستید چند کار را در میان یکدیگر و تنها توسط یک پردازنده مرکزی در سطح سیستم عامل به اجرا در آورید.

در این زمان سیستم عامل در جهت کنترل و مدیریت اجرای چند کار به صورت همروند نیاز می داشت تا در یک وقفه زمانی مشخص پردازنده مرکزی را از یک کار بگیرد و آن را جهت استفاده در اختیار کار دیگری بگذارد.

در یک نگاه کلی زمان انجام این مهم به قدری کوتاه بود که یک کاربر این گونه تصور می کرد که چند کار به صورت همزمان با هم در سطح سیستم عامل به اجرا در می آیند در حالی که در واقع انجام چند کار به صورت همروند و اصطلاحا به صورت پله ای و تودرتو توسط سیستم عامل مدیریت می گردید.

شایان ذکر است وجود این مهم در کامپیوتر و در سطح سیستم عامل، منجر به خلق هرچه بهتر سیستم عامل های چند کاره در دنیای کامپیوتر گردید.

با خلق هسته های مختلف در یک پردازنده و در ادامه با ابداع کامپیوترهای چند پردازنده ای، این امکان برای برنامه نویسان محترم آماده سازی شد تا بتوانند از هسته های افزوده شده به یک پردازنده و همچنین از پردازنده های دیگر موجود در کامپیوتر استفاده نمایند و با امکاناتی که در زبان های برنامه نویسی موجود می بود فعالیت های مختلف را از حالت سری و همروند به سمت موازی سازی شده سوق دهند.

پردازش موازی این امکان را به برنامه نویسان محترم اهدا می کند تا این افراد بتوانند از تمامی هسته های تعبیه شده در یک پردازنده مرکزی استفاده نمایند و به کمک پیاده سازی فرایند موازی سازی شده، کارهای مختلف را توسط چند هسته به مرحله اجرا برسانند.

در یک نگاه کلی شما می توانید به کمک بهره گیری از پردازش موازی و فرایند موازی سازی اجرای کارها، چندین عنصر پردازشی را در جهت حل هرچه سریع تر یک مساله مشخص توسط کامپیوتر اجرا کنید و به صورت کاملا همزمان سازی شده، یک مساله را به چند بخش مختلف تقسیم نمایید و هر بخش را توسط یک هسته یا یک پردازنده موجود در کامپیوتر چند هسته ای/چند پردازنده ای اجرا کنید.

به عنوان نمونه در دنیای حاضر در جهت انجام محاسبات دینامیک سیالات، پیش بینی وضعیت هوا، پردازش تصویر، نمونه برداری از داده ها، کاربردهای نظامی، پژوهش های فضایی، بصری سازی های علمی، مدلسازی های اقتصادی و کنترل ترافیک های هوایی معمولا از پردازش موازی استفاده می شود.

در یک نگاه کلی با وجود فرایند پردازش موازی و استفاده از آن در جهت حل مسایل مختلفی که امکان موازی سازی شدن دارند مزیت های زیر در دنیای واقع کسب خواهند شد :

  1. افزایش سرعت اجرای کارها
  2. حل شدن سریع تر مسایل موجود
  3. افزایش توان عملیاتی اجرای کارها
  4. افزایش توان محاسباتی اجرای کارها

یکی از نکاتی که همواره در زمان استفاده از امکان پردازش موازی در یک کامپیوتر می بایست مد نظر کارشناسان کامپیوتر قرار گیرد توجه به این مهم است که هر مساله ای امکان موازی سازی شدن ندارد و تنها می توانید فعالیت ها و مسایلی را توسط فرایند موازی سازی شده پردازش کنید که امکان موازی سازی شدن در آن ها فراهم می باشد.

در یک نگاه کلی برخی از مسایل صرفا به صورت سری قابلیت حل شدن دارند اما در مقابل برخی از مسایل می توانند تقسیم بندی شوند و با تقسیم بندی خود، امکان پردازش موازی را فراهم سازی نمایند.

در واقع روش ها و رویکردهای مختلفی در طراحی و پیاده سازی الگوریتم های موازی در دنیای کامپیوتر وجود دارند که عبارتند از :

  1. تغییر دادن یک الگوریتم سری موجود و موازی سازی نمودن بخش هایی از الگوریتم سری که به صورت طبیعی قابلیت موازی سازی شدن دارند.
  2. طراحی کردن یک الگوریتم موازی کاملا جدید و استفاده از آن در جهت حل مساله موجود. شایان ذکر است ممکن است این الگوریتم جدید هیچ گونه شباهتی به الگوریتم سری موجود نداشته باشد.

در یک نگاه کلی طراحی و پیاده سازی کاراترین روش استفاده از پردازش موازی به وجود دو مهم بستگی دارد که عبارتند از :

  1. مساله داده شده
  2. معماری ماشین موازی

در واقع هرچه یک مساله موجود، امکان موازی سازی شدن بیشتری داشته باشد و در مقابل، کامپیوتری که قرار است آن مساله به صورت موازی شده بر روی آن اجرا گردد دارای معماری و ساختمان بهتری باشد می توان انتظار داشت که مساله طراحی شده با کارایی بهتر و افزوده تری در آن کامپیوتر به اجرا در خواهد آمد.

در یک نگاه کلی در جهت ارزیابی الگوریتم های موازی سازی شده در دنیای کامپیوتر آیتم های مشخص زیر توسط کارشناسان مورد بررسی قرار می گیرند :

تعداد پردازنده ها

=

P

مقدار کاری که توسط P پردازنده انجام خواهد شد

=

W(p)

زمان اجرای یک مساله با P پردازنده

=

T(p)

سرعت اجرای یک مساله با P پردازنده

=

S(p)

کارایی اجرای یک مساله با P پردازنده

=

E(p)

 

 

جهت بررسی سرعت اجرای یک الگوریتم سری و موازی سازی شده در یک کامپیوتر چند هسته ای/چند پردازنده ای از یک قانون مشخص به نام قانون امدال استفاده می شود. در این قانون، فرمول مشخص زیر مورد استفاده قرار می گیرد :

پردازش موازی

شایان ذکر است در قانون بالا S(p)، سرعت اجرای یک مساله با وجود P پردازنده، P، تعداد پردازنده موجود در یک کامپیوتر و f، درصدی از مساله که قابلیت موازی سازی شدن ندارد و می بایست به صورت سری انجام گردد می باشند.

به عنوان نمونه فرض نمایید اگر 85 درصد یک مساله قابلیت موازی سازی شدن داشته باشد و فقط 15 درصد آن به صورت سری اجرا گردد و بر روی یک کامپیوتر با 10 پردازنده اجرا شود طبق قانون امدال خواهیم داشت :

پردازش موازی

با توجه به قانون امدال و با توجه به خروجی نمایش داده شده در بالا، اجرای برنامه فوق الذکر به صورت عملی توسط 10 پردازنده 4.26 برابر سریع تر از اجرای آن در یک کامپیوتر با یک پردازنده و به صورت اجرای سری خواهد بود.

یکی از نکاتی که خوانندگان محترم می بایست به آن توجه نمایند توجه به این مهم است که افزایش تعداد پردازنده ها در جهت حل یک مساله اصولا منجر به افزایش هرچه بیشتر سرعت اجرای آن مساله نخواهد شد.

به دیگر سخن با توجه به خروجی ذکر شده در بالا انتظار می رفت با اجرای برنامه توسط 10 پردازنده سرعت اجرای برنامه نیز 10 برابر می شد اما در واقع طبق قانون امدال این مهم به صورت عملی اتفاق نخواهد افتاد و تنها اجرای برنامه توسط 10 پردازنده به صورت موازی سرعت اجرای برنامه را 4.26 برابر خواهد کرد.

با توجه به نکته بالا می توان این طور بیان کرد که فرایند موازی سازی نمودن یک مساله و افزایش سرعت اجرای برنامه ها توسط پردازش موازی نسبت به اجرای سری آن مساله، در ابتدا به نوع مساله و سپس به معماری کامپیوتر چند هسته ای/چند پردازنده ای بستگی دارد.

در نگاه آخر می توان این گونه نتیجه گیری نمود که استفاده از پردازش موازی و به کارگیری یک زبان برنامه نویسی کارا و قدرتمند در جهت پیاده سازی پردازش موازی در سطح سیستم عامل می تواند سرعت اجرای برنامه ها و همچنین سرعت فرایند انجام محاسبات را تا حد بسیار چشم گیری نسبت به اجرای سری کارها ارتقاء دهد.

با توجه به این مهم خوانندگان محترم می بایست با مطالعه چگونگی پیاده سازی فرایند موازی سازی مسایل در زبان های برنامه نویسی قدرتمندی همچون زبان های برنامه نویسی ویژوال بیسیک دات نت و سی شارپ دات نت، که این مهم را به خوبی فراهم سازی نموده اند و پوشش داده اند سعی در افزایش سرعت انجام محاسبات و اجرای برنامه های خود داشته باشند.

کلمات کلیدی