CUDA Programming Applications

وبلاگ آموزشی کودا

CUDA Programming Applications

وبلاگ آموزشی کودا

ضرب دو ماتریس با c++

در این مبحث کد ضرب دو ماتریس در c++ و همچنین محاسبه ی زمان آن امده است:

   ادامه مطلب ...

جمع دو ماتریس با cuda

در این مطلب جمع دو ماتریس به کمک کودا به همراه محاسبه ی زمان انجام فرایند امده است:

  ادامه مطلب ...

جمع دو ماتریس با زبان c++ و زمان گیری

در این مطلب جمع دوماتریس همراه با زمان گیری اورده شده است. در این قسمت ما تعداد سطر و ستون ماتریس خود را 1000 در نظر می گیریم.

در ادامه کد برنامه آورده شده است:

 

ادامه مطلب ...

جمع دوبردار با برنامه نویسی cuda و زمان گیری

در این مبحث قصد جمع دو بردار با سایز 10240 و محاسبه ی زمان آن  را  داریم.  در این جا از 10 بلاک به ترد 1024 در هربلاک  استفاده شده است.

در ادامه مطلب کد برنامه اورده شده است:

  ادامه مطلب ...

مفهوم Thread و Block و Grid در برنامه نویسی CUDA

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 در یک بلوک را مدیریت می کند.
 
ادامه مطلب ...