جمعه 31 فروردین 1397 | Friday 20 th of April 2018 صفحه اصلی گروه الکترونیکی کامپیوتر
3-5-10- سازمان نخ ها

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

نخ های چندگانه در گریدهای یک یا دو بعدی سازمان دهی شده اند. از انجایی که بلاک های نخ می توانند به هر ترتیبی موازی و غیر موازی اجرا شوند، نیاز دارند که بصورت مستقل اجرا شوند. این استقلال کلید نوشتن کد انعطاف پذیر است که اجازه می دهد که بلاک های نخ به هر ترتیبی میان هر تعداد coreبرنامه ریزی شوند. تعداد نخ های هر بلاک بوسیله منابع فیزیکی محدود می شود.(بخش 3-6)تعداد بلاک های نخ در هر گرید معمولا به اندازه داده ای که پردازش می شود بستگی دارد.

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

Kernel < dimGrid , dimBlock> (… list of parameters…)

عبارتی که بوسیله  ≪< ≫> مشخص شده محیط اجرا نامیده می شود.  هر فراخوانی کرنل ناهمگام(غیر همزمان) است که به این معناست که کرنل بلافاصله به CPUبرگردانده می شود و درحالی که همه فراخوانی های قبلی کودا  کامل شده باشند معمولا یکبار توسط GPUاجرا می شود. همچنین این امکان وجود دارد که اجراهای کرنل را روی جریان های مختلف سازمان دهی کنیم بنابراین ایجاد فراخوانی های کرنل از بقیه مستقل است.

کودا متغیرهای داخلی را فراهم می کند که کمک می کند که یک تعدادی اطلاعات مفید مثل اندیس نخ (بلاک نخ) در یک بلاک نخ (گرید) و ابعاد بلاک نخ و گریدها شناسایی شوند. به این شیوه برای مثال، یک نخ نمی تواند مقدار یک المان خاص درون یک ماتریس سه بعدی را محاسبه کند. سلسله مراتب نخ ها بعلاوه چنین کنترل هایی روی نخ ها این امکان را فراهم می کنند که سطح موازی سازی متفاوتی تعریف کنیم. شکل 3-11 مدل اجرایی یک برنامه کودا با سازمان نخ های توصیف شده را نشان می دهد.

شکل3- 11- مدل اجرایی یک برنامه کودا با سازمان نخ

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