برنامه نویسی موازی با سی شارپ

با سلام. در این پست آموزشی دانلود کتاب آموزشی برنامه نویسی موازی با سی شارپ را به اشتراک گذاشته ایم. این کتاب آموزشی  به زبان فارسی  و شامل ۱۰۶ صفحه می باشد که برنامه نویسی برنامه نویسی موازی با #C را بصورت مفید آموزش داده است. برنامه هایی که تاکنون توسط  DotNet Framework نوشته شده اند بیشتر آن ها فقط توسط یکی از هسته های پردازنده مورد پردازش قرار می گیرند. تاکنون جهت اجرای برنامه ها و وظایف (Tasks) به شکل موازی از ThreadPool و به طور کلی Multi-Thread Programming استفاده می شده است. ولی باید توجه داشت که با استفاده از این روش ها هنوز هم پردازش روی یکی از هسته ها انجام می شود و استفاده از ThreadPool به شکل کاملا درستی برنامه ها را به طور همزمان اجرا نمی کند.تاکنون اگر توسعه گران قصد داشتند اجرای برنامه را با استفاده از هسته های مختلف پردازنده انجام دهند، باید خود را درگیر کدهای سطح پایین و بسیار پیچیده ای می نمودند. اما خوشبختانه با معرفی کتابخانه Task Parallel Library در DotNet Framework 4.0 این عمل به ساده ترین شکل ممکن امکان پذیر شده است.

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

فهرست مطالب:

فهرست شکل ها

فهرست تکه کدها

فهرست لیست ها ( کدها کلی)

چکیده

مقدمه

۱فصل اول

برنامه نویسی TASK-BEASE

مباحثی که در این فصل مطرح می شود:

۱-۱کار با پردازنده های چند هسته ای SHARED-MEMORY

۱-۱-۱اختلاف پردازشگرهای چند هسته ای حافظه- مشترک با سیستم های حافظه- توزیع شده

۱-۱-۲برنامه نویسی موازی و بنرامه نویسی چند هسته ای

۱-۲درک نخ های سخت افزاری و نخ های نرم افزاری

۱-۳-درک قانون AMDAHL

۱-۴-ملاحظه قانون GUSTAFSON

۱-۵کار با همزمانی سبک وزن

۱-۶ایجاد موفق طرح های TASK-BASED

۱-۶-۱طراحی با همزمانی در ذهن

۱-۶-۲درک اختلاف بین همزمانی تکه تکه ای ، همزمانی و موازی سازی

۱-۶-۳-موازی سازی Tosk ها

۱-۶-۴حداقل سازی نواحی بحرانی

۱-۶-۵درک قوانین برنامه نویسی موازی برای چند پردازنده های هسته ای

۱-۷آماده کردن NUMA و مقایسه پذیری بالاتر

۱-۸تصمیم راحت موازی سازی

۱-۹خلاصه

۲ فصل دوم

موازی سازی اجباری داده ها

۲-۱شروع TASK های موازی

۲-۱-۱کلاس System.Threoding-Tasks-Parallel

۲-۱-۲Parallel.lnvoke

۲-۳تبدیل کدهای ترتیبی به کدهای موازی

۲-۲-۱تشخیص Hotspot قابل موازی سازی

۲-۲-۲اندازه گیری موفق Speedup توسط اجرای موازی

۲-۳حلقه های موازی

۲-۳-۱Parallel

۲-۳-۲ Parallel.Foreoch

۲-۴تشخیص درجه موازی سازی مطلوب

۲-۴-۱ ParallelOptions

۲-۴-۲-شمارش نخ های سخت افزاری

۲-۴-۳ هسته های منطقی هسته های فیزیکی نیستند

۲-۵ استفاده از نمودار گانت برای تشخیص نواحی بحرانی

۲-۶ خلاصه

نتیجه گیری و پیشنهادات

مراجع

 

فهرست لیست ها (کدها کلی):

لیست ۱-۱:اطلاعات نمایش داده شده بوسیله COREINFO نشخه ۲برای یک پردازنده INTEL مدل ۷I

لیست ۱-۲: اطلاعاتی بوسیله وسیله COREINFO نسخه ۲ در دو گره NUMA با I7INTEL CORE

لیست ۲-۱: برنامه کنسول ساده ای است که مشکل ترتیب اجرا در همزمانی کد در PARALLFL.INVOKE را نشان می دهد.

لیست ۲-۲: نتایج اجرای کد موازی یکسانی که زمان های مختلفی برای اجرا نیاز دارد و در لیست ۲-۱ نشان داده شده است.

لیست ۲-۳: سری ساده ای از کلیدهای AES و لیست مولدهای MD5

لیست ۲-۵: مثالی از تولید خروجی توسط تولید کننده کلیدها و لیست های MD5 که بصورت موازی اجرا می شوند.

لیست ۲-۵: تابع اصلی AESKEYSGENERATEبا حلقه FORترتیبی و نسخه موازی خودش

لیست ۲-۶ :تابع اصلی GENERATEMD5HASHES با حلقه FOR ترتیبی و نسخه موازی اش.

لیست۲-۷-: نسخه موازی دیگری از حلقه ترتیبی اصلی با استفاده از FOREACH. PARALLEL با یک تقسیم کننده خصوصی

لیست ۲-۸: خروجی خطایابی PARALLELPARTITIONGENERATEAESKEYS با پردازشگر QUAD-CORE

لیست۲-۹: عیب یابی خروجی در نسخه بهینه PARALLELPARTITIONGENERATEAESKEYS با QUAD-CORE

لیست ۲-۱۰: عیب یابی خروجی در نسخه بهینه PARALLELPARTITIONGENERATEAESKEYS

لیست۲-۱۱: نسخه موازی از GENERATEMD5HASHES با استفاده از PARALLEL.FOREACH

لیست ۲-۱۲: نسخه جدیدی از تابع GENERATEMD5HASHESPARALLEL.FOREACHبا احتمال خروج از حلقه

لیست ۲-۱۳: رخ دادن و مدیریت استثناء با تابع GENERATEMD5HASHESPARALLEL.FOREACH

لیست ۲-۱۴: خروجی خطایابی با دو استثناء یافته شده در مجموعه INNEREXCEPTIONS

لیست ۲-۱۵: تخصیص حداکثر درجه مطلوب موازی سازی برای حلقه PARALLELFOR