محاسبات موازی - بخش سوم
محاسبات موازی - بخش سوم
طراحی پایه :
حافظه برای ذخیره سازی هم برنامه و هم دستور العمل ها استفاده می شود.
دستور العمل های برنامه ، داده های کد شده ای هستند که به کامپیوتر می گوید چه کاری انجام دهد.
داده بسادگی اطلاعاتی است که توسط برنامه استفاده می شود.
یک واحد مرکزی پردازش ( CPU ) دستور العمل ها و داده ها را از حافظه می گیرد ، دستور العمل ها را رمز گشایی ( decode ) می کند و سپس آنها را پی در پی اجرا می کند.
طبقه بندی کلاسیک Flynn
راه های مختلفی برای دسته بندی کامپیوتر های موازی وجود دارد. یکی از پر استفاده ترین این طبقه بندی ها که از سال 1966 تاکنون استفاده می شود طبقه بندی Flynn نام دارد. (Flynn's Taxonomy )
طبقه بندی Flynn ، معماری کامپیوتر های چند پردازنده ای را بر اساس اینکه تا چه حدی می توانند به دو بعد مجزای دستور العمل ها ( Instruction ) و داده ها ( Data ) دسته بندی شوند ، متمایز می کند. هر یک از این دو بعد ، تنها می توانند یکی از این دو وضعیت ممکن را داشته باشند : یگانه و تک ( Single ) یا چندگانه ( Multiple ).
در زیر 4 طبقه بندی ممکن را بر اساس Flynn می بینید.
تک دستور العمل ، تک داده ( SISD ) :
یک کامپیوتر سریالی ( غیر موازی )
تک دستور العمل : تنها یک مسیر دستور العمل ، توسط CPU در طی یک سیکل کلاک اجرا می شود.
تک داده : تنها یک مسیر داده به عنوان ورودی در طی یک سیکل کلاک استفاده می شود.
اجرای قطعی
این قدیمی ترین و رایج ترین فرم یک کامپیوتر تاکنون است.
مثال : اغلب PC ها ، پایانه های کامپیوتری و مین فریم های تک CPU
تک دستور العمل ، چندین داده ( SIMD ) :
مدلی از یک کامپیوتر موازی
تک دستور العمل : تمام واحد های پردازشی ، یک دستور العمل را در طی هر سیکل کلاک داده شده ؛ اجرا می کنند.
چندین داده : هر واحد پردازشی ، می تواند بر روی یک عنصر داده ای متفاوت عمل کند.
این مدل از ماشین یک دستور العمل توزیع کننده ، شبکه داخلی با پهنای باند بسیار بالا و یک آرایه بسیار بزرگ از واحد های دستور العمل با ظرفیت کم ، را داراست.
این مورد برای مسائل خاص که با سطح بالایی از نظم مشخص می شوند همچون پردازش تصویر عالی می باشد.
اجرای قطعی و همزمان
در دو نوع مختلف : آرایه های پردازنده ( Processor Arrays ) و کانال های برداری ( Vector Pipelines )
مثال :
چندین دستور العمل ، تک داده ( SIMD ) :
یک تک مسیر داده ، چند واحد پردازشی را تغذیه می کند.
هر واحد پردازشی بر روی داده ها ، مستقل و از طریق مسیر های دستور العمل مستقل عمل می کند.
تعداد کمی از نمونه های واقعی این کلاس از کامپیوتر های موازی هنوز وجود دارد. یکی از آن ها کامپیوتر آزمایشی Carnegie-Mellon C.mmp محصول 1971 می باشد.
برخی کاربرد های ممکن :
فیلتر های چند فرکانسی که بر روی تک مسیر سیگنال عمل می کنند.
چندین الگوریتم رمز نویسی که برای شکستن رمز تک پیام کد شده استفاده می شوند.
چندین دستور العمل ، چندین داده ( MIMD ) :
در حال حاضر متداول ترین نوع کامپیوتر های موازی هستند. اکثر کامپیوتر های مدرن در این دسته قرار می گیرند.
چندین دستور العمل : هر پردازنده ممکن است مسیر دستور العمل متفاوتی را اجرا کند.
چندین داده : هر پردازنده ممکن است با مسیر داده ای متفاوتی کار کند.
اجرا می تواند همزمان و یا غیر همزمان باشد ، قطعی یا غیر قطعی.
مثال : اکثر ابر کامپیوتر های امروزی ، کامپیوتر های موازی شبکه ای " Grids " و کامپیوتر های SMP چند پردازنده ای - شامل برخی از انواع PC ها.
برخی اصطلاحات رایج محاسبات موازی
همچون هر چیز دیگر ، محاسبات موازی زبان فنی مخصوص به خود را دارد. برخی از اصطلاحات پر کاربرد مرتبط با محاسبات موازی را در زیر می بینید.
Task
یک بخش گسسته منطقی از عمل محساباتی. یک Task نوعا یک برنامه یا سری دستور العمل های شبیه برنامه است که توسط یک CPU اجرا می شود.
Parallel Task
یک Task که می تواند توسط چندین پردازنده به صورت امن اجرا شود ( منجر به تولید نتایج صحیح ).
Serial Execution
اجرای یک برنامه به صورت ترتیبی و سریالی ، یک دستور در آن واحد. چیزی که بر روی یک ماشین تک پردازنده روی می دهد. هر چند ، واقعا تمام Parallel Task ها بخش هایی از یک برنامه موازی خواهند داشت که باید سریالی اجرا شود.
Paralle Execution
اجرای یک برنامه با بیش از یک Task ، که هر Task می تواند دستور یکسان یا متفاوتی را همزمان انجام دهد.
Shared Memory
از یک دیدگاه شدیدا سخت افزاری ، یک معماری کامپیوتر را توصیف می کند که تمام پردازنده ها دسترسی مستقیم ( معمولا تحت باس یا گذرگاه ) به حافظه فیزیکی دارند. در مفهوم برنامه نویسی ، مدلی را توصیف می کند که تمام Parallel Task تصویری ( Picture ) یکسان از حافظه دارند و می توانند مستقیما مکان های روی حافظه را آدرس دهی کنند و به آن ها بدون توجه به اینکه حافظه فیزیکی واقعا کجا قرار دارد ، دسترسی داشته باشند.
Distributed Memory
در سخت افزار ، به دسترسی به حافظه تحت شبکه برای حافظه فیزیکی اشاره دارد که رایج نیست. به عنوان یک مدل برنامه نویسی ، Task ها می توانند به صورت منطقی حافظه ماشین محلی را ببینند ( See ) و باید از ارتباطاتی برای دسترسی به حافظه بر روی دیگر ماشین ها که دیگر Task ها اجرا می شوند ، استفاده کنند.
Communications
Parallel Task ها نوعا نیاز به تبادل داده ها دارند. راه های زیادی وجود دارد که این عمل روی دهد همچون یک گذرگاه Shared Memory و یا بر روی یک شبکه ، به هر حال عمل واقعی تبادل داده بدون توجه به روش مورد استفاده ، عموما به Comminucations اشاره دارد .
Synchronization
هماهنگی بلادرنگ Parallel Task ها ، اغلب با Communications مرتبط است و معمولا با ایجاد یک نقطه Synchronization ( همزمانی ) درون برنامه تکمیل میشود. این نقطه جایی است که ممکن است یک Task بیش از این جلو نرود تا زمانی که یک Task یا Task های دیگر به نقطه یکسان یا از نظر منطقی برابر با آن Task نرسند.
Granularity
در محاسبات موازی ، Granularity یک میزان کیفی از نسبت محسابات به ارتباطات است ( The Ratio of Computation to Communication ).
Coarse : نسبتا مقادیر زیاد کار محاسباتی که بین رویداد های ارتباطی انجام شده است.
Fine : نسبتا مقادیر کم کار محاسباتی که بین رویداد های ارتباطی انجام شده است.
Observed Speedup
Observed Speedup ( افزایش سرعت مشاهده شده ) برای یک کد که موازی شده است ، به صورت زیر تعریف می شود :
حاصل تقسیم wall-clock time of serial execution بر wall-clock time of parallel execution .
یعنی اگر زمان اجرای سریالی برنامه را بر زمان اجرای موازی آن تقسیم کنیم ؛ حاصل نشان دهنده " افزایش سرعت مشاهده شده " می باشد. روش فوق یکی از پر کاربرد ترین شاخص های کارایی برنامه موازی می باشد.
Parallel Overhead
مقدار زمان مورد نیاز برای هماهنگ سازی Parallel Task ها ، در مقابل انجام کار مفید. Parallel Overhead می تواند فاکتور های زیر را دارا باشد :
زمان راه اندازی Task
همزمان سازی - Synchronizations
ارتباطات داده ها
پردازش نرم افزار اعمال شده توسط کامپیالر های موازی ، کتابخانه ها ، ابزار ها ، سیستم عامل و ...
Massively Parallel
به سخت افزاری اشاره دارد که شامل سیستم موازی داده شده است - پردازندها های زیادی دارد. معنی زیاد در اینجا فزاینده و افزایشی است ، که اکنون BG/L ( ابر کامپیوتر بلوجین که قویترین ابر کامپیوتر حال حاضر دنیاست ) این تعداد را تا 6 رقم به جلو برده است.
Scalability
به توانایی سیستم ( سخت افزار و / یا نرم افزار ) های موازی برای نمایش یک افزایش متناسب در تسریع موازی ( Parallel Speedup ) با افزایش پردازنده های بیشتر اشاره دارد. فاکتور هایی در Scalability ( مقیاس پذیری ) نقش دارند :
سخت افزار - به خصوص پهنای باند حافظه و CPU و ارتباطات شبکه
الگوریتم برنامه
Parallel Overhead مرتبط
ویژگی های خاص برنامه نویسی و برنامه شما
در مقاله بعدی به انواع مدل های حافظه می پردازیم.
مفاهیم و اصطلاحات محاسبات و برنامه نویسی موازی
معماری ون نیومن
برای بیش از 40 سال ، تمام کامپیوتر ها از یک مدل به نام کامپیوتر ون نیومن پیروی کرده اند. که پس از ریاضیدان مجارستانی به نام جان ون نیومن، نامگذاری شده است.
یک کامپیوتر ون نیومن از مفهوم برنامه ذخیره شده استفاده می کند. CPU یک برنامه ذخیره شده را اجرا می کند که یک سری عملیات خواندن و نوشتن روی حافظه را مشخص می کند.

طراحی پایه :
حافظه برای ذخیره سازی هم برنامه و هم دستور العمل ها استفاده می شود.
دستور العمل های برنامه ، داده های کد شده ای هستند که به کامپیوتر می گوید چه کاری انجام دهد.
داده بسادگی اطلاعاتی است که توسط برنامه استفاده می شود.
یک واحد مرکزی پردازش ( CPU ) دستور العمل ها و داده ها را از حافظه می گیرد ، دستور العمل ها را رمز گشایی ( decode ) می کند و سپس آنها را پی در پی اجرا می کند.
طبقه بندی کلاسیک Flynn
راه های مختلفی برای دسته بندی کامپیوتر های موازی وجود دارد. یکی از پر استفاده ترین این طبقه بندی ها که از سال 1966 تاکنون استفاده می شود طبقه بندی Flynn نام دارد. (Flynn's Taxonomy )
طبقه بندی Flynn ، معماری کامپیوتر های چند پردازنده ای را بر اساس اینکه تا چه حدی می توانند به دو بعد مجزای دستور العمل ها ( Instruction ) و داده ها ( Data ) دسته بندی شوند ، متمایز می کند. هر یک از این دو بعد ، تنها می توانند یکی از این دو وضعیت ممکن را داشته باشند : یگانه و تک ( Single ) یا چندگانه ( Multiple ).
در زیر 4 طبقه بندی ممکن را بر اساس Flynn می بینید.
S I S D : Single Instruction, Single Data
S I M D : Single Instruction, Multiple Data
M I S D : Multiple Instruction, Single Data
M I M D : Multiple Instruction, Multiple Data
تک دستور العمل ، تک داده ( SISD ) :
یک کامپیوتر سریالی ( غیر موازی )
تک دستور العمل : تنها یک مسیر دستور العمل ، توسط CPU در طی یک سیکل کلاک اجرا می شود.
تک داده : تنها یک مسیر داده به عنوان ورودی در طی یک سیکل کلاک استفاده می شود.
اجرای قطعی
این قدیمی ترین و رایج ترین فرم یک کامپیوتر تاکنون است.
مثال : اغلب PC ها ، پایانه های کامپیوتری و مین فریم های تک CPU

تک دستور العمل ، چندین داده ( SIMD ) :
مدلی از یک کامپیوتر موازی
تک دستور العمل : تمام واحد های پردازشی ، یک دستور العمل را در طی هر سیکل کلاک داده شده ؛ اجرا می کنند.
چندین داده : هر واحد پردازشی ، می تواند بر روی یک عنصر داده ای متفاوت عمل کند.
این مدل از ماشین یک دستور العمل توزیع کننده ، شبکه داخلی با پهنای باند بسیار بالا و یک آرایه بسیار بزرگ از واحد های دستور العمل با ظرفیت کم ، را داراست.
این مورد برای مسائل خاص که با سطح بالایی از نظم مشخص می شوند همچون پردازش تصویر عالی می باشد.
اجرای قطعی و همزمان
در دو نوع مختلف : آرایه های پردازنده ( Processor Arrays ) و کانال های برداری ( Vector Pipelines )
مثال :
Processor Arrays: Connection Machine CM-2, Maspar MP-1, MP-2
Vector Pipelines: IBM 9000, Cray C90, Fujitsu VP, NEC SX-2, Hitachi S820

چندین دستور العمل ، تک داده ( SIMD ) :
یک تک مسیر داده ، چند واحد پردازشی را تغذیه می کند.
هر واحد پردازشی بر روی داده ها ، مستقل و از طریق مسیر های دستور العمل مستقل عمل می کند.
تعداد کمی از نمونه های واقعی این کلاس از کامپیوتر های موازی هنوز وجود دارد. یکی از آن ها کامپیوتر آزمایشی Carnegie-Mellon C.mmp محصول 1971 می باشد.
برخی کاربرد های ممکن :
فیلتر های چند فرکانسی که بر روی تک مسیر سیگنال عمل می کنند.
چندین الگوریتم رمز نویسی که برای شکستن رمز تک پیام کد شده استفاده می شوند.

چندین دستور العمل ، چندین داده ( MIMD ) :
در حال حاضر متداول ترین نوع کامپیوتر های موازی هستند. اکثر کامپیوتر های مدرن در این دسته قرار می گیرند.
چندین دستور العمل : هر پردازنده ممکن است مسیر دستور العمل متفاوتی را اجرا کند.
چندین داده : هر پردازنده ممکن است با مسیر داده ای متفاوتی کار کند.
اجرا می تواند همزمان و یا غیر همزمان باشد ، قطعی یا غیر قطعی.
مثال : اکثر ابر کامپیوتر های امروزی ، کامپیوتر های موازی شبکه ای " Grids " و کامپیوتر های SMP چند پردازنده ای - شامل برخی از انواع PC ها.

برخی اصطلاحات رایج محاسبات موازی
همچون هر چیز دیگر ، محاسبات موازی زبان فنی مخصوص به خود را دارد. برخی از اصطلاحات پر کاربرد مرتبط با محاسبات موازی را در زیر می بینید.
Task
یک بخش گسسته منطقی از عمل محساباتی. یک Task نوعا یک برنامه یا سری دستور العمل های شبیه برنامه است که توسط یک CPU اجرا می شود.
Parallel Task
یک Task که می تواند توسط چندین پردازنده به صورت امن اجرا شود ( منجر به تولید نتایج صحیح ).
Serial Execution
اجرای یک برنامه به صورت ترتیبی و سریالی ، یک دستور در آن واحد. چیزی که بر روی یک ماشین تک پردازنده روی می دهد. هر چند ، واقعا تمام Parallel Task ها بخش هایی از یک برنامه موازی خواهند داشت که باید سریالی اجرا شود.
Paralle Execution
اجرای یک برنامه با بیش از یک Task ، که هر Task می تواند دستور یکسان یا متفاوتی را همزمان انجام دهد.
Shared Memory
از یک دیدگاه شدیدا سخت افزاری ، یک معماری کامپیوتر را توصیف می کند که تمام پردازنده ها دسترسی مستقیم ( معمولا تحت باس یا گذرگاه ) به حافظه فیزیکی دارند. در مفهوم برنامه نویسی ، مدلی را توصیف می کند که تمام Parallel Task تصویری ( Picture ) یکسان از حافظه دارند و می توانند مستقیما مکان های روی حافظه را آدرس دهی کنند و به آن ها بدون توجه به اینکه حافظه فیزیکی واقعا کجا قرار دارد ، دسترسی داشته باشند.
Distributed Memory
در سخت افزار ، به دسترسی به حافظه تحت شبکه برای حافظه فیزیکی اشاره دارد که رایج نیست. به عنوان یک مدل برنامه نویسی ، Task ها می توانند به صورت منطقی حافظه ماشین محلی را ببینند ( See ) و باید از ارتباطاتی برای دسترسی به حافظه بر روی دیگر ماشین ها که دیگر Task ها اجرا می شوند ، استفاده کنند.
Communications
Parallel Task ها نوعا نیاز به تبادل داده ها دارند. راه های زیادی وجود دارد که این عمل روی دهد همچون یک گذرگاه Shared Memory و یا بر روی یک شبکه ، به هر حال عمل واقعی تبادل داده بدون توجه به روش مورد استفاده ، عموما به Comminucations اشاره دارد .
Synchronization
هماهنگی بلادرنگ Parallel Task ها ، اغلب با Communications مرتبط است و معمولا با ایجاد یک نقطه Synchronization ( همزمانی ) درون برنامه تکمیل میشود. این نقطه جایی است که ممکن است یک Task بیش از این جلو نرود تا زمانی که یک Task یا Task های دیگر به نقطه یکسان یا از نظر منطقی برابر با آن Task نرسند.
Granularity
در محاسبات موازی ، Granularity یک میزان کیفی از نسبت محسابات به ارتباطات است ( The Ratio of Computation to Communication ).
Coarse : نسبتا مقادیر زیاد کار محاسباتی که بین رویداد های ارتباطی انجام شده است.
Fine : نسبتا مقادیر کم کار محاسباتی که بین رویداد های ارتباطی انجام شده است.
Observed Speedup
Observed Speedup ( افزایش سرعت مشاهده شده ) برای یک کد که موازی شده است ، به صورت زیر تعریف می شود :
حاصل تقسیم wall-clock time of serial execution بر wall-clock time of parallel execution .
یعنی اگر زمان اجرای سریالی برنامه را بر زمان اجرای موازی آن تقسیم کنیم ؛ حاصل نشان دهنده " افزایش سرعت مشاهده شده " می باشد. روش فوق یکی از پر کاربرد ترین شاخص های کارایی برنامه موازی می باشد.
Parallel Overhead
مقدار زمان مورد نیاز برای هماهنگ سازی Parallel Task ها ، در مقابل انجام کار مفید. Parallel Overhead می تواند فاکتور های زیر را دارا باشد :
زمان راه اندازی Task
همزمان سازی - Synchronizations
ارتباطات داده ها
پردازش نرم افزار اعمال شده توسط کامپیالر های موازی ، کتابخانه ها ، ابزار ها ، سیستم عامل و ...
Massively Parallel
به سخت افزاری اشاره دارد که شامل سیستم موازی داده شده است - پردازندها های زیادی دارد. معنی زیاد در اینجا فزاینده و افزایشی است ، که اکنون BG/L ( ابر کامپیوتر بلوجین که قویترین ابر کامپیوتر حال حاضر دنیاست ) این تعداد را تا 6 رقم به جلو برده است.
Scalability
به توانایی سیستم ( سخت افزار و / یا نرم افزار ) های موازی برای نمایش یک افزایش متناسب در تسریع موازی ( Parallel Speedup ) با افزایش پردازنده های بیشتر اشاره دارد. فاکتور هایی در Scalability ( مقیاس پذیری ) نقش دارند :
سخت افزار - به خصوص پهنای باند حافظه و CPU و ارتباطات شبکه
الگوریتم برنامه
Parallel Overhead مرتبط
ویژگی های خاص برنامه نویسی و برنامه شما
در مقاله بعدی به انواع مدل های حافظه می پردازیم.
+ نوشته شده در دوشنبه بیست و نهم مرداد ۱۳۸۶ ساعت ۶:۴۶ ب.ظ توسط حامد سلیمی پور
|
Xgrid : اپل همراه Tiger Server نرمافزار 1.0 Xgrid را نيز عرضه ميكند. نرمافزار رايانش توزيعي اپل، كار ساخت ابررايانههاي موردنياز مراكز علمي و تحقيقاتي را بسيار سادهتر و كم هزينهتر از قبل خواهد ساخت. Xgrid 1.0 براي انجام پردازشهاي توزيعي از ده هزار كار در انتظار پردازش، ده هزار وظيفه در هر كار در انتظار پردازش، دو گيگابايت داده در هر كار منتظر پردازش، يك گيگابايت داده در هر وظيفه و مجموعاً ده گيگابايت نتيجه مرجوعي پشتيباني ميكند.