Thread :Thread اجرای یک هسته با یک شاخص(index) داده شده است. هر Thread از شاخص خودش برای دسترسی به عناصر در آرایه استفاده می کند به طوری که همکاری بین Thread ها کل مجموعه داده را پردازش می کند.
Block :Block یک گروه از Thread ها است. در مورد اجرای Thread ها درون یک Block نمیتوان زیاد صحبت کرد - آنها می توانند همزمان و یا به صورت سریال و بدون نظم خاص اجرا شوند. شما می توانید Thread ها را هماهنگ کنید، تا حدی، با استفاده از تابع _syncthreads () که یک Thread را در یک نقطه خاص در هسته متوقف می کند تا زمانی که تمام Thread های دیگر در آن بلوک به همان نقطه برسند.
Grid :Grid یک گروه از Block ها است. هیچ هماهنگی بین Block ها وجود ندارد.
اما کجا Thread ها ، Block ها و Grid ها در واقع اجرا می شود؟ با توجه به تراشه گرافیکی G80 Nvidia ، به نظر می رسد محاسبات به صورت زیر توزیع می شود:
Grid :GPU کل Grid توسط یک تراشه GPU مدیریت می شود.
Block :MP تراشه GPU به عنوان مجموعه ای از چند پردازنده سازماندهی شده است(MPs) ، هر پردازنده مسئول مدیریت یک یا چند Block در یک Grid است. یک Block هرگز در میان چندین پردازنده (MPs) تقسیم نمی شود.
Thread :SP هر MPبیشتر به چند پردازنده جاری تقسیم می شود(SPs)، هر SP یک یا چند Thread در یک بلوک را مدیریت می کند.
ادامه مطلب ...