شنبه 24 آذر 1397 | Saturday 15 th of December 2018 صفحه اصلی گروه الکترونیکی کامپیوتر
7ـ3 حافظه اشتراکی و همزمانسازی

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

    CUDA Cمنطقه ای از حافظه را در دسترس قرار میدهد که ما به ان حافظه مشترک (دینامیک)میگوییم.این منطقه از حافظه علاوه بر ان، پسوند دیگری به زبانC را به ارمغان می اورد که مشابه__ device__ و__ global_  میباشد. به عنوان یک برنامه نویس، شما می توانید اعلان های متغیر خود را با کلمه کلیدیCUDA C یعنی مشترک بگونه ای تغییر دهیدکه این متغیر در حافظه مشترک جای بگیرد.اما مکان مورد نظر کجاست؟

 ما خوشحال خواهیم شد اگر که شما این سئوال را از ما بپرسید.کامپایلرCUDA C در قبال متغیرهای موجود در حافظه مشترک رفتاری متفاوت از متغیرهای معمولی را بروز میدهد ویک کپی از متغیر را برای هر بلوک راه اندازی شده در GPUفراهم می اورد. هر رشته در ان بلوک به اشتراک حافظه مشغول میشود اما رشته ها قادر به دیدن یا تغییر کپی این متغیر دیده شده در داخل بلوکهای دیگر نیستند.این فراهم کننده یک ابزار عالی است که توسط ان، رشته های موجود در یک بلوک می توانند با یکدیگر در امر انجام محاسبات ارتباط و همکاری بعمل بیاورند.علاوه بر این، بافرهای حافظه مشترک بجای اقامت در DRAM  اف-تراشه ، بصورت فیزیکی بر رویGPU  مقیم میشوند. به همین دلیل، زمان تاخیر دسترسی به حافظه مشترک به مراتب کمتر از بافرهای معمولی است بطوریکه نقش حافظه مشترک به عنوان یک کش یا دفتر یادداشت تحت مدیریت نرم افزار در هر بلوک را پررنگ تر کرده است.

   چشم انداز ارتباط بین رشته ها باید شما را نیز همانند ما بسیار هیجان زده کند. اما هیچ چیز در زندگی بی بها نیست و ارتباطبین رشته ای نیزاز این قاعده مستثنی نمیباشد.اگر ما انتظار برقراری ارتباط بین رشته ها را داریم مسلما به مکانیزمی جهت هماهنگ سازی رشته ها نیز نیازمندیم.به عنوان مثال، اگر رشتهA  مقداری را برای حافظه مشترک می نویسد و ما از رشتهB می خواهیم که با این مقدار کاری انجام دهد، نمی توانیم تا زمان تکمیل کار نوشتن از روی رشتهA، رشتهB را وادار به شروع کار خود کنیم. ما بدون همزمانسازی باعث ایجاد شرایط مسابقه ای شده ایم که در ان صحت نتایج اجرایی به جزئیاتغیرقطعیسخت افزاری بستگی دارد.بیایید به نمونه ای که از این ویژگیها استفاده می کند، نگاهی بیندازیم

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26