CUDA Programming Applications

کاربردهای برنامه نویسی کودا

CUDA Programming Applications

کاربردهای برنامه نویسی کودا

معرفی پردازنده های گرافیکی:

معرفی پردازنده های گرافیکی:

پردازنده های گرافیکی ، یک مدار الکترونیکی خاص می باشند که دارای پردازنده های چند هسته ای بسیار موازی هستند GPU ها به کلاس کامپیوترهای موازی SIMD تعلق داشته و توان پردازشی بسیار بالایی نسبت به CPU ها ارائه می دهند ،این موضوع موجب گسترش کاربردهای این پردازنده ها در حوزه هایی فراتر از بازی های کامپیوتری و نگاشت پس زمینه شده است ، کاربردها و قابلیتهایی که نه تنها برای شتاب دادن به فرآیند ایجاد گرافیک هایی با کارآیی بالا موثرند ، بلکه در انجام کارهایی بسیار سنگین نیز خوب عمل کرده و از سرعت و دقت بالایی برخوردارند. و  GPU های مدرن با معماری موازی خود پردازنده های بسیار سریعی بوده و با قیمت و توان مصرفی کمتری عرضه می شوند.استفاده از GPU ها جهت پیاده سازی الگوریتمها و برنامه های بینایی ماشین و پردازش تصویر که بار پردازشی زیادی را جهت رسیدن به Frame Rate  بیشتر طلب می کنند ، یک راهکار اقتصادی و کارآمد به شمار می رود،موازی سازی آینده محاسبات است و معماری GPU ها برای موازی سازی بسیار مناسب است .این در حالی است که می توان گفت GPU پردازشگری است که به دلیل استفاده از معماری موازی و استفاده از تعداد هسته های زیاد ،امکان پردازش کاراتری را نسبت به CPU فراهم می کند در عین حالی که هزینه پایین تری دارد.

 

حافظه در کارتهای گرافیکی

زمانی که شما بر روی آیکن بازی کلیک می نمایید ، در ابتدا اطلاعات آن از هارد دیسک خوانده شده و بر روی RAM بارگذاری و به CPU ارسال می شود ،CPU با دانستن این که این پردازش مربوط به کارت گرافیک هست دستور می دهد تا پردازش های مذکور راهی کارت گرافیک شوند در این بین GPU اقدام به پردازش داده های تازه رسیده می کنند اما این داده های خام بایستی در محلی ذخیره شوند تا با داده های خام دیگر ادغام و به خروجی ارسال شوند ، این مکانی که پردازنده برای بارگذاری داده ها انتخاب مب کند همان حافظه کارت گرافیکی است که دارای مشخصات خاص خود هست .این مشخصات شامل مقدار فیزیکی حافظه ،فرکانس حافظه ،رابط حافظه و نسل حافظه است.GPU نیز همانند CPU به علت انجام عملیات پردازشی ،گرمای زیادی تولید می کند به همین دلیل روی آن یک Fan تعبیه شده است و در نمونه های پیشرفته ان همراه با Head Sink (لوله های روغن در گردش ) جهت خنک کردن GPU است


شکل 2:کارت گرافیک همراه با Head Sink

مقدمه ای بر CPU و GPU

مقدمه ای بر CPU و GPU

یکی  از عوامل اصلی کارآیی CPU ها ، فرکانس رو به افزایش آنها می باشد با دو برابر شدن فرکانس ،کارآیی نیز دو برابر می شود گرایش رو به رشد فرکانس به صورت نمایی همیشه وجود دارد .به هر حال در دهه 2000 این افزایش به دلیل محدودیتهای CPU متوقف شد ،از آنجا که مصرف توان یک CPU به مکعب فرکانس بستگی دارد چگالی توان ،درحال نزدیک شدن به توان مرکز راکتور هسته ای بود.عدم توانایی در سرد کردن این تراشه ها بطور موثر ،گرایش به رشد نمایی فرکانس را درست قبل از رسیدن به 4 گیگا هرتز متوقف ساخت.کارت گرافیک وظیفه پردازش تصویری را در یک سیستم کامپیوتری بر عهده دارد که به اختصار به آن GPU(Graphic Processing Unit) گفته می شود.چیپ پردازشگر کارت که می توان آن را با پردازنده کامپیوتر مقایسه کرد ،مغز متفکر کامپیوتر به شمار می رود .هسته گرافیکی داراری فناوری ساخت خاص خود بوده و متشکل از چندین میلیون تا چند میلیارد ترانزیستور است.مشخصات این هسته پردازشی معمولا شامل کلاک هسته یا همان فرکانس کاری در حالت عادی و توربو ،مدار تامین کننده توان مورد نیاز کارت گرافیکی ،پورتهای تامین توان خازن ها و چیپهای حافظه مورد استفاده در این قطعه به شمار می رود.همزمان با برخورد کردن CPU ها با سقف کارایی سریال ،کارآیی GPU به علت موازی بودن بطور گسترده و نمایی شروع به رشد نمود .از آنجایی که محاسبه رنگ یک پیکسل در صفحه نمایش ،میتواند مستقل از همه پیکسلهای دیگر انجام شود ،موازی سازی یک روش طبیعی در افزایش کارآیی GPU ها است،لذا به نظر می رشد بهترین راه افزایش کارآرایی در محاسبات با حجم بالا به کارگیری کاراتر GPU است که در سال 2006 شرکتnvidia اولین GPU همه منظوره با نام G80  تولید نمود.(شکل 1)

 


 


شکل 1 : اولین مدل کارت گرافیک G80


کلید موفقیت در محاسبات GPU تا حد زیادی به کارآیی کلی ان در مقایسه با CPU بستگی دارد ،امروزه با توجه به حداکثر پهنای بانددر تئوری و کارآیی گیگا فلاپها ، یک فاصله تقریبا 7 برابری بین این دو وجود دارد ، ریشه این فاصله در محدودیتهای فیزیکی هر  هسته و تفاوت معماری های این دو پردازنده است . CPU در واقع یک پردازنده سری بوده و برای اجرای سری عملیاتهای ترتیبی طراحی شده است در صورتیکه پردازنده های گرافیکی GPU پردازنده های چند هسته ای موازی هستند و در گروه کامپیوترهای موازی قرار دارند.، در پردازنده های گرافیکی یک سری عملیات یکسان بطور همزمان روی چند داده اجرا می شود.