Top Banner
24

GPGPU

Jan 25, 2017

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GPGPU

1صفحه

Page 2: GPGPU

2صفحه

GPGPU

محقق :

محمّد امین امجدی

00343888

شگاه شهید باهنر کرماندان

دانشکده فنی

بخش مهندسی کامپیوتر

گرایش سخت افزار

: استاد راهنما

رمهندس پروین صفاپو

09دوم سال نیم سال

Page 3: GPGPU

3صفحه

فهرست مطالب

4.......................................................... چکیده ......................................................................................................................

5.................................................... .............................................................................................................................مقدمه

GPGPU ............................................................. 6................................................................................................ و صنعت

8.... ..............................................................................ویژگی های پردازنده های گرافیکی مدرن .........................................

9...... ................................................................................................... مرکزیگرافیکی با پردازندههای پردازندهمقایسه توانایی

01............................................................................................................... تر استمرکزی سریعگرافیکی از پردازندهپردازنده

GPGPU............................................................................................................ .............................00 نویسیهای برنامهابزار

01......................................................................................................................... گرافیکیهای غیرگرافیکی پردازندهکاربرد

04...................................................................................................................... گرافیکی در پردازش تصویرکاربرد پردازنده

04.......................................... ل .......................................................................................................................مشکالت متداو

GPUCV............................................................................................................................. ..........05 و OpenVIDIA کتابخانه

GPGPU ............................................................................................................................. ......................................01آینده

08............................................................................................. خالصه ..................................................................................

10........................................................منابع و مأخذ ................................................................................................................

11.....................................................................................ضمائم ............................................................................................

Page 4: GPGPU

4صفحه

چکیده

اي العادهشوند توان پردازشي خارققیمت نصب ميهاي گرانگرافیكبر روي کارترافیكي که ـهاي گامروزه پردازنده

هايي ها در حوزههاي اين پردازندهدهند، اين موضوع موجب گسترش کاربردهاي مرکزي ارائه ميت به پردازندهـرا نسب

هاي بسیار ماري موازي خود پردازندههاي گرافیكي مدرن با معدهـردازنـه است، پـري گشتـامپیوتـهاي کازيـراتر از بـف

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

کنند، وير که بار پردازشي زيادي را جهت رسیدن به نرخ فريم بیشتر طلب ميـردازش تصـايي ماشین و پـامه هاي بینـرنـب

هاي برنامه نويسي رود، طوري که برنامه نويس بدون نیاز به فراگیري واسطکار اقتصادي و کارآمد به شمار ميك راهـي

تواند بار پردازشي برنامه خود را به سادگي از پردازنده مرکزي کار ميهاي موجود براي اينگرافیكي به کمك کتابخانه

. به پردازنده گرافیكي منتقل کند

Page 5: GPGPU

5صفحه

مقدمه

وجود آمدن تحوالت متعددي در تر، موجب بههاي زيبا و طبیعيهاي کامپیوتري به بازيرفداران بازيـراوان طـف اقـاشتی

توانند به درمان سرطان هاي مدرن ميگرافیكهاي وابسته به آن شده به طوري که کارتآوريها و فنكـرافیـگکارت

، العادهارقـردازشي خـآوردن توان پ بیني کنند و با فراهما پیشکمك کنند! زمین لرزه برزگي در شهر سانفرانسیسكو ر

ايد که ل کنند. آيا تا کنون به اين موضوع فكر کردهـي حـادگـه سـي را بـاضـي و ريـاتـاسبـیده محـیچـار پـل بسیـائـمس

خورد؟ي ديگري به درد ميهاهاي کامپیوتري در چه کاربرددصد هزار توماني به غیر از بازيـاي چنـهكـگرافیکارت

گیري از توان پردازشي آنها در ها، محققین را به فكر بهرهگرافیكزون عملكرد کارتـزايش روز افـت که افـها اسسال

ايجاد گشته که GPGPU کاربردهاي غیرگرافیكي انداخته است. در همین راستا شاخه جديدي در علوم کامپیوتر به نام

هاي محاسباتي در برنامه ك کمك پردازندهـوان يـك به عنـگرافیري از کارتـگیين عرصه بهرهاالن اـايي فعـدف نهـه

.هاي عمومي استغیرگرافیكي و برنامه

ايالت فلوريدا برگزار شد، محققین دانشگاه کارولینا Tampa که در شهر SuperComputing 2006ايش ـدر هم

(CPU) مرکزيبا پردازنده (GPU)گرافیكيردازندهـايسه عملكرد پـمورد مقرده خود را در ـهاي گستشـج آزمايـايـنت

. (1ا قرار دارد )شكل ـهكـوازي است که بر روي کارت گرافیـم ي پردازندهـكي، نوعـگرافی، پردازنده ر کردندـتشـمن

هاي کامپیوتري طراحي بعدي و بازيسههاي صاصي براي پردازش گرافیكي محیطـورت کامال اختـردازنده به صـن پـاي

هاي کامپیوتري آن چنان تحول يافته که د بیلیون دالري بازيـعت چنـط صنـوسـذشته تـهاي گي سالـده است که طـش

کند. بكار گیري رود رقابت ميردازنده همه منظوره به شمار ميـك پـمرکزي که يردازندهـا پـارايي بـظر کـروزه از نـام

هاي قدرتمند ايجاد کرده است، جايي که گرافیكگرافیكي در محاسبات عمومي جايگاه جديدي براي کارتهپردازند

شود، در عوض در نقش کامپیوتري استفاده نميهايگر براي پردازش محاسبات گرافیكي بازيـكي ديـگرافیاز پردازنده

مرکزي را تقبل کرده و به عملیات پردازش سرعت دهـنردازـاتي پـاسبـار محـمامي بـخشي يا تـردازنده کمكي، بـك پـي

.بخشدمي

گرافیكي نمايي از يك پردازنده -1شكل

مدرن

Page 6: GPGPU

6صفحه

GPGPU و صنعت

NVIDIA و ATI اند و براي ي نوين استقبال کردهگرافیكي، از اين ايدههايوان به دو تولیدکننده بزرگ پردازندهـبه عن

هاي جديدي براي به آوريامپیوتري، فنـهاي کازيـازار بـراتر از بـازارهايي فـدر بود ـصوالت خـروش محـرش فـگست

، شرکت Geforce 8800اند. همزمان با عرضه هاي غیرگرافیكي ارائه کردهاربردـكي در کـگرافیکارگیري پردازنده

Nvidia هاياولین محیط توسعه برنامه GPGPU را مبتني بر کامپايلر Cموسوم به ، CUDA معرفي کرده که به کمك

تر خواهد شد. به گفته مدير ارشد ار آسانـومي بسیـاي عمـهامهـكي در برنـگرافیردازندهـرداري از پـبآوري بهرهن فنـاي

ال جديدي در ـامـاري کـ، معم andy keane ايـكي ، آقـگرافیدهـردازنـات پـاسبـوزه محـدر ح NVIDIA تـرکـش

تفاده از ـه، اسـاشـک رکت به کار گرفته شده که در آن با اضافه کردن حافظهـل هشتم شـسـاي نـكي هـیـرافـگدهـردازنـپ

گرافیكي هم اکنون پردازنده» :كان پذير استـولت امـكي به سهـكي و غیر گرافیـد گرافیـكي در دو مـگرافیدهـردازنـپ

اي را براي دستیابي به کارايي مسیر انعطاف پذير و ساده CUDA مرکزي پیدا کرده است وردازندهـاهت بسیاري به پـشب

.« آوردنويسان به ارمغان ميگرافیكي براي برنامهانگیز نهفته شده در پردازندهشگفت

دانشگاه اِستَنفورد، مهر تايیدي بر کاربردي بودن Folding@Home ار موفق به دست آمده در پروژهـهاي بسیربهـتج

هاي هزاران نفر از سراسر هاست آغاز شده کامپیوترمومي که سالـي عها است ، در اين پروژهد برنامهـيدـك جـاين سب

هاي مرکزي هاي خود، پروتئینگردد تا به کمك توان پردازشي پردازندهيـل مـترنت متصـريق اينـگر از طـدنیا با همدي

هاي درمان آنها سازي کرده و محققین را در يافتن روششبیه هاي غددي راهاي سرطاني و بیماريموثر در ايجاد بیماري

افزاري عرضه شد که در آن از توان پردازش ، نسخه آزمايشي از نرمATI اري شرکتـاه پیش با همكـياري کنند. چند م

رکزي آنها در ماند به جاي استفاده از پردازندهگرافیك کامپیوترهايي که از طريق اينترنت به همديگر متصل شدهکارت

درصدي نرخ رشد پروژه را 49الي 29کند. آخرين نتايج به دست آمده از اين آزمايش جهش ها استفاده ميسازيهـشبی

ي چند ماه به اين پروژه ـکه ط Radeon X1900 گرافیكیيگرافیك با پردازندهکارت 536اي از دهد، آرايهان ميـنش

مرکزي شرکت کننده با پلتفورمپردازنده 18475ش از ـدر ثانیه، سرعت پردازشي بی اسبهـتريلیون مح 35وسته اند با ـپی

linux گرافیكي اند. افزايش عملكرد حاصل از بكارگیري پردازندهاسبه در ثانیه ارائه کردهـتريلیون مح 21داکثر ـا حـب

ه طوري که روز به روز ـرده بـود کـذوب خـوم کامپیوتر را مجـدان علـن و دانشمنـكي، محققیـهاي غیرگرافیامهـرنـدر ب

Page 7: GPGPU

8صفحه

يكي از اساتید تیم تحقیقاتي Denish Manochaشود، زوده ميـاف GPGPU وزهـات حـقـعداد مقاالت و تحقیـبر ت

Gamma گويددر دانشگاه کارولینا، در اين مورد مي:

هاي کامپیوتري انگیزه ، چرا که صنعت بازيکندبرابر رشد مي 2اله ـكي ها هر سـگرافیحداکثر توان پردازشي پردازنده»

.«اقتصادي اين رشد را فراهم کرده است

هاست اقدام به برگزاري ارولینا، مدتـاه کـوتر دانشگـوم کامپیـكده علـود در دانشـكار خـراه همـن ايشان به همـنیـهمچ

دهد که ند. اين امر نويد آن را مياکرده كيـرافیـگدهـردازنـك پـومي به کمـمـاسبات عـژه محـوزشي ويـاي آمـهدوره

.ادمیك تبديل شودـافل آکـي از دروس استاندارد محـومي به يكـات عمـاسبـكي در محـگرافیدهـردازنـري از پـگیبهره

پردازشي کامپیوترها با بهره برداري از توان اورند که قدرت پردازشي بسیار باالي سوپرـن بـر ايـن بـقیـقـي از محـروهـگ

Vijay Pande اند، قابل دستیابي است. به گفتههاي کامپیوتري توسعه يافتهگرافیكیهايي که براي صنعت بازيپردازنده

گرافیكي ها ما شاهد يك انقالب واقعي ردازندهـي پـردازشـوان پـبرداري از تبا بهره» Folding@Home مدير پروژه

.«بودبوديم که هرگز قابل تصور نمي

ها پردازنده گرافیكي به هاي عمومي اشاره شده که در اين کاربرددر برنامه گرافیكهاي کارتاله به کاربردـر اين مقد

اي میان پردازندهبر اين مقايسه الوهـشود، عه ميـتـدمت گرفـه خـدرتمند بـاتي قـاسبـردازنده محـك پـوان يك کمـعن

هاي گرافیكي مشخص گردد سپس به ي پردازندهـهاي نسبريـرتـا بـه تـتـت گرفزي صورـرکـمده ـردازنـي و پـرافیكـگ

هاي روش رده و در انتها برخي از کاربردـكي اشاره کوتاهي کـگرافیدهـومي پردازنـي عمـنويسداول برنامهـهاي متروش

. هاي پردازش تصوير و بینايي ماشین بررسي شده استنويسي مذکور در برنامهبرنامه

Page 8: GPGPU

7صفحه

مدرن گرافیکيهاي پردازندههايويژگي

ترين زمان به طور ها در کوتاهگرافیكي داراي واحدهاي محاسباتي متعددي است که حجم بسیار زيادي از دادهپردازنده

هاي مدرن و گرافیكهاي کامپیوتري از کارتاقان بازيـال مشتـه استقبـال گذشتـس جـي پنـکند. طردازش ميـموازي پ

ها به سرعت یكي در کامپیوترـرافـردازش گـلي پـي اصهـتـوان هسـنـا به عـكي هـگرافی، موجب شده تا پردازنده ندقدتم

ه ـا را بـهـاي آنـهابلیتـود دارد که قـدرن وجـیكیهاي مـگرافدهـردازنـي در رابطه با پـاسـته اسـكـار نـهـوسعه يابند. چـت

.کندوبي ترسیم ميـخ

.هاي بسیار سريعي هستندگرافیكي به لطف معماري موازي خود، پردازندههايپردازندهاول،

.دوم، با توجه به مالك کارايي به قیمت، ارزان هستند

مرکزي ها دارند. شايد تعجب سوم، با توجه به مالك کارايي به وات، آنها توان مصرفي بسیار کمتري نسبت به پردازنده

تر و کم مصرف تر از گرافیكي ها سريعتر، ارزانال در ذهن شما ايجاد شده باشد که اگر پردازندهد و اين سوـکرده باشی

!؟ کندهاي خود را اجرا نميا هستند چرا کامپیوتر به کمك يكي از آنها تمامي برنامهـمرکزيهپردازنده

را به عنوان يك پردازنده اختصاصي گرافیكيهاي پردازندهپاسخ اين سوال در چهارمین نكته نهفته است که محدوديت

.کندبیان مي

کامپیوتري، محاسبات پیچیده هايي هستند که همانند يك بازيي تنها قادر به پردازش سريع برنامهـكـگرافیهايپردازنده

گرافیكي را به کمك يك پردازنده Office مجموعه Word توانید برنامهيـن همزماني دارند. بنابراين شما نمـگیـو سن

هاي ورودي و خروجي ها بیشتر از سوي دستگاهاجرا کرده و از افزايش عملكرد آن لذت ببريد! چرا که اين گونه برنامه

هايي که نرخ محاسبات نسبت به نرخ ورودي و خروجي در آنها اند تا از سوي پردازنده، به طور کلي برنامهمحدود شده

ه خوبي توسط ـد بـنـاشـي بـااليـب (Arithmetic Intensity) يـاتـبـاسـحـي مـالـگـوده و داراي چـزرگ بـار بـیـسـب

مرکزي خواهند بر پايه پردازنده لكرد محسوسي نسبت به پیاده سازيـمـزايش عـده و افـشردازشـرافیكي پـگدهـردازنـپ

. داشت

Page 9: GPGPU

0صفحه

ای است که چند امهـی، برنـادالت خطـگاه معـل دستـوان مثال برنامه حـهای علمی از این دسته هستند، به عنرنامهـر بـاکث

ها زمان ببرد، ت کرده و بعد از اعمال یك سری محاسبات پیچیده که ممکن است ساعتـاده از ورودی دریافـادله سـمع

ی ها که عالوه بر کم بودن نرخ ارتباطات آنها، محاسبات سنگیناین دسته برنامه .کندواب به خروجی ارسال میـد جـچن

.شوندگرافیکی به خوبی پردازش میداشته و اغلب محاسبات آنها جنبه تکراری دارند، توسط پردازنده

مركزيگرافيكي با پردازندههاي پردازندهمقايسه توانايي

های های گرافیکی را با پردازندهوان پردازشی خام پردازندهـاست، تریدهـرا خ ATI رکتـرا شـه اخیـک AMDشرکت

ی ـردازشـوان پـ( ت1ن تحقیق )شکل ـج ایـایـاس نتـر اسـهای اخیر مقایسه کرده است ، بود طی سالـاصر خـزی معرکـم

.های مرکزی طی چندین سال اخیر داشته استرافیکی رشد زیادی نسبت به پردازندهـای گـهدهـردازنـپ

د ـولـدای تـتـاز اب AMD ایـزی هـرکـمدهـردازنـه با پـسـایـدر مق ATI یـکـرافیـای گـهارایی پردازندهـک 1کل ـدر ش

سنجیده شده است، همانطور که مشاهده Gigaflops ان داده شده، توان پردازشی خام با واحدـشـگرافیکیها نردازندهـپ

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

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

زدیك به ـن Boewulf توان پردازشی در سوپرکامپیوتر Gigaflops ردن یكـها پیش، اجاره ککرد در حالی که سال

.هزار دالر هزینه داشت 11

ای دارند، اما در واقعیت عوامل متعددی وجود دارد العادهگرافیکیها توان پردازشی خارقا اینکه بر روی کاغذ پردازندهب

تا حدودی گمراه Gigaflops تنها بر اساس معیاراطر مقایسه، ـن خـ. به همی کندایی آنها را محدود میـنه کردـکه عمل

مرکزی ها هستند؟تر از پردازندهگرافیکی ها چقدر سریع، اما در عمل پردازنده کننده است

گرافیکی توان پردازشی خام پردازنده -1شکل

مرکزیدر مقایسه با پردازنده

Page 10: GPGPU

19صفحه

Geforce 7900 وابسته به دانشگاه کارولینا در یك محیط آزمایشگاهی پردازنده گرافیکی Gamma تیم تحقیقاتی

GTX دـتمندرـا دو پردازنده قـرا ب Xeon 3.6GHz و Opteron 280 م که از ـن تیـای ایـ. اعض دـانردهـایسه کـمق

« ضرب ماتریسی»و «FFT تبدیل فوریه سریع یا»، «مرتب سازی»، در سه برنامه روندار میـبه شم GPGPU ازانـشتـپی

رای ـها بامهـه برنـن سـده ایــه شـینـه بهـنسخه ـدهد کیـان مـشـج نـایـن نتـ، ای نتشر نمودندـات خود را مـایشـه آزمـنتیج

مرکزی برای پردازش محاسبات پیچیده خود های استاندارد آنها که از پردازندهبرابر از نسخه 5الی 1گرافیکی ردازندهـپ

. تر استکنند سریعاستفاده می

تر استمركزي سريعگرافيكي از پردازندهپردازنده

مرکزی هایی که برای پردازندهنویسی برنامهمدل برنامه«. سازیموازی»شود: یـالصه مـکلمه خن سوال در یك ـپاسخ ای

های تشکیل دهنده یك برنامه به ترتیب از باال به ك مدل سریال است به این معنی که شبه کدـشوند در اصل ینوشته می

.شودا استفاده میـهردازش دادهـدر پ« سازیموازی»شده و در آن به ندرت از ایین خوانده شده و پس از ترجمه، اجرا ـپ

های چندانی برای ریزی شده است و قابلیتمرکزی نیز بر مبنای این مدل پایهپردازندهاری در نظر گرفته شده برای ـعمـم

های ی برنامهـویسـنرنامهـه مدل بـالی کـ. در ح داردـزمان نـمـورت هـه صـه را بـابـل مشـمـعـورالـن دستـدیـنـرای چـاج

های ره گیری از تکنیكـهـت بـابلیـت و قـوازی اسـدل مـك مـل یـ، در اص ام داردـن Stream رافیکی کهـگردازندهـپ

، HyperThreading هایی نظیرمرکزیهای جدید با قابلیتدر آن گنجانده شده است، هرچند پردازنده« سازیموازی»

SSE ،3D Now سازی دهند، اما نرخ موازیبیشتر را می« سازیموازی»ای نوید هستهدـای چنـهماریـمع ریـو بکارگی

.واحد پردازشی است 111گرافیکی با آنها بسیار کمتر از یك پردازنده

مرکزیها برای کاربردهایی که نیاز به کی، زیرسیستم حافظه در نظر گرفته شده برای پردازندهـگرافیردازندهـالف پـر خـب

هایی که به پهنای باند حافظه وسیعی نیاز دارند، با ت نه برای برنامهـد بهینه شده اسـاخیر کم دارنـافظه با تـرسی به حـدست

های حافظه را برای به جریان افتادن های یك برنامه باید مرجعمرکزی، بخشتوجه به مدل برنامه نویسی سریال پردازنده

ردانند که الزمه این امر تاخیر کم در دسترسی به حافظه است، به همین دلیل در ـرگـ، به سرعت ب رنامهـعدی بـت بـسمـق

.مرکزی چندین الیه حافظه نهان گنجانده شده تا این تاخیر را به حداقل برساندی پردازندهسلسله مراتب حافظه

Page 11: GPGPU

11صفحه

، شوندیـوشته مـآن ن وبـهارچـدر چکی ـرافیـگهای پردازندهامهـکه برن Streamویسی ـنرنامهـدل بـابل، در مـدر مق

ری نسبت به تاخیر دسترسی به حافظه دارد، چرا که در این مدل، ـت بیشتـر اهمیـتردهـپهنای باند دسترسی به حافظه گست

ل ـدارد. به همین دلیـآنها وجود ن انـدانی میـگی چنـستـده و وابـرا شـگرافیکی به صورت موازی اجهای پردازندهبرنامه

.شونداجرا می مرکزیاز پردازنده سریع گرافیکیزیادی دارند، با پردازنده باند حافظههایی که نیاز به پهنایرنامهـب

توان با آن انجام داد یك پردازنده کامال عمومی است که هر نوع عملیات محاسباتی و پردازشی را می مرکزیردازندهـپ

ده کامال اختصاصی است که ویژه پردازش گرافیکی طراحی شده، به همین دلیل در ك پردازنـکی یـگرافیا پردازندهـام

ها ایجاد شده ابل آن دنیایی دیگری از ترفندـود دارد و در مقـها وجتـحدودیـدنیایی از م Streamمدل برنامه نویسی

ها دهد. این محدودیتافیکی را میگرردازندهـك پـکی به کمـرای یك برنامه غیرگرافیـکان اجـس امـامه نویـکه به برن

های خاصی از علوم کاربرد پیدا کند که بررسی تك تك این عوامل خارج تنها در شاخه GPGPU ب شده اند تاـموج

.از حوصله این مقاله است

نويسيهاي برنامهابزار GPGPU

کند و کلیه فرمایی میحکم GPGPU گرافیکی وهای برنامه نویسی امی ابزارـان بر تمـچنـهم ++C ویسیـنرنامهـزبان ب

رامر و دستورات اصلی آن را با ـوعی گـروند و به نهای آن به شمار مین حوزه از جمله مشتقـنویسی ایرنامهـهای بزارـاب

:نیمکسه روش وجود دارد که به ترتیب به آنها اشاره می GPGPU نویسیخود به همراه دارند. به طور کلی برای برنامه

0- API ها و زبان های برنامه نویسی گرافیکی

ه ـنا کـعـن مـی گرافیکی است، به ایـسـابه برنامه نویـشد، کامال مشاده میـار استفـدا از آن بسیـن روش که در ابتـای

و در نظر گرفتن OpenGL یا DirectX های گرافیکی مانند API نا بودن به یکی ازـرض آشـس با فـویـامه نـبرن

، برنامه غیرگرافیکی را به صورت گرافیکی Stream یـسـویـامه نـرنـدل بـوجود در مـهای متـحدودیـامی مـتم

تواند در صورت آشنا بودن نویس میکند. عالوه بر این برنامهسازی کرده و مراحل پیاده سازی آن را دنبال میشبیه

ت، برنامه غیرگرافیکی خود را در ـده اسـوسعه داده شـت NVIDIA رکتـوسط شـه تـک Cg رنامه نویسیـه زبان بـب

. این محیط توسعه دهد

Page 12: GPGPU

12صفحه

باشد به می GPGPU نویسیهای برنامهگرافیکی و محدودیتنویسیایی کامل با محیط برنامهـن روش آشنـالزمه ای

ها تمرکز داشته باشد تا بر کردن محدودیتسازی و مرتفعاید بر روی نحوه پیادهـیشتر بـویس بـنامهـل برنـن دلیـهمی

. های برنامه خودروی الگوریتم

و کتابخانه ها GPGPUزبان های برنامه نویسی -1

های های بزرگ توسط آن بسیار مشکل است به همین دلیل زباندگی روش اول، پیاده سازی برنامهـبا توجه به پیچی

به Stream نویسیهای مدل برنامهگرفتن محدودیتابداع شده اند که با در نظر GPGPU ی خاصـسـامه نویـبرن

ها ن زبانـن ایـهای برنامه خود داشته باشد، همچنید تا تمرکز بیشتری بر روی الگوریتمـدهنس امکان میـنویامهـبرن

سازی یادهنویس نیازی به آشنایی با آنها جهت پاند و برنامهگرافیکی را از بین بردهAPI نویس باتعامل مستقیم برنامه

.Sh و Brook معرفی شده که این دو زبان عبارتند از GPGPU امه نویسیـبرنامه خود ندارد. تا کنون دو زبان برن

های ترین زبانوسعه یافته، این زبان از جمله کاربردیـم دانشگاه استنفورد تـوسط تیـت Brook ویسیـامه نـزبان برن

رای ـب Folding@Home هـامـرنـده بـه شـینـهـه بـخـسـرود که در نیـمار ـمـه شـب GPGPU یـســویـه نـامـبرن

نیز توسط تیم دانشگاه واترلو توسعه یافته Shنویسی گرافیکیها نیز از آن بهره گرفته شده است. زبان برنامهردازندهـپ

وجود دارند که امکان برنامه های متعددی های زیادی با آن اجرا شده است. عالوه بر این کتابخانها کنون پروژهـو ت

ها، هـانـخـابـترین این کتروفـله معـد از جمـانم کردهـراهـف VC++ 6.0 یا Net. را در پلتفورم GPGPU نویسی

Accelerator نام دارد که توسط مایکروسافت توسعه یافته است.

اند که از مهمترین آنها می توان بهتصویر متعددی نیز در این معقوله عرضه شدههای اختصاصی پردازشکتابخانه

GPUCV و OpenVIDIA های پردازش تصویر و توان الگوریتمها میاشاره کرد. به کمك این کتابخانه

. گرافیکی توسعه دادماشین را جهت پردازش توسط پردازندهبینایی

Page 13: GPGPU

13صفحه

پلتفورم های تجاری -1

های تجاری ماه اخیر پلتفورمدوم است اما طی چند تا کنون همان روش GPGPU نویسیامهـترین روش برنمتداول

های ردازندهـلی برای پـورت کـگرافیکی بلکه به صها برای پردازندهـتر نه تننویسی سادهرنامهـده که نوید بـه شـارائ

PeakStreamلتفورم ـته دو پـدهند. از این دسرا می Cell ردازندهـیر پـظـازی نـسوازیـت مـابلیـت با قـرسرعـپ

، ده استـه شـرضـاری آن عـجـه تـخـسـه نـک PeakStream الفـرخـبرد، ب امـتوان نیـرا م RapidMind و

RapidMind بردهنوز در مراحل آزمایشی به سر می.

گرافيكيهاي غيرگرافيكي پردازندهكاربرد

شوند به صورت مختصر در ابتدای پردازش میگرافیکی های غیرگرافیکی که به خوبی توسط پردازندهساختار برنامه

: ها که تاکنون صورت گرفته عبارتند ازای از این کاربردمقاله توضیح داده شد نمونه

های پیچیده ضرب ماتریسی و برداریبرنامه ·

های حل دستگاه معادالت خطی و دستگاه معادالت دیفرانسلروش ·

اختار پروتئینسازی سهای شبیهبرنامه ·

(Ray Tracing ) های مسیریابی شعاع نوربرنامه ·

سازی فیزیکی مانند شبیه سازی جریان سیال یا تصادمهای شبیهبرنامه ·

های پیمایش و تولید گرافبرنامه ·

های پردازش صوت یا تصویربرنامه ·

های بینایی ماشینبرنامه ·

(FFT) محاسبه تبدیل فوریه سریعهای برنامه ·

Page 14: GPGPU

14صفحه

گرافيكي در پردازش تصويركاربرد پردازنده

یابی به سه های بینایی ماشین و پردازش تصویر جهت دسترافیکی در الگوریتمـگدهـردازنـهای پتـابلیـری از قـگیبهره

کاهش پیچیدگی الگوریتم بدون نیاز به Real-Time رح شده است، هدف اول نائل شدن به عملکردـدف کلی مطـه

های بینایی ماشین و اختصاص آن به دف دوم کاهش بارکاری پردازنده مرکزی از عملیات پردازشی الگوریتمـاست، ه

کار به های پردازش تصویر به کمك یك راهها می باشد و هدف سوم نیز افزایش سرعت محاسبات برنامهامهـرنـایر بـس

.صرفه اقتصادی است

گرافیکی در کنند چرا که پردازندهافزار گرافیکی استفاده میکوس از سختـن به طور معـاشیـی مـایـای بینـهمـوریتـالگ

های عددی و آنالیزهای ریاضی توصیف کننده کاربردهای متداول خود موظف به ترسیم تصویر سه بعدی بر مبنای داده

ماشین، تصویر یا بخشی از یك فریم به پردازنده گرافیکی داده های بینایی الی که در کاربردـباشد در حیـویر مـآن تص

های بینایی ماشین و پردازش تصویر نسبت به اطر الگوریتمـن خـشود تا از آن آنالیزهای عددی استخراج شود. به همیمی

.کنندافزار گرافیکی استفاده میهای گرافیك کامپیوتری ، به طور معکوس از سختالگوریتم

، IEEE 754 اورـز شنـیـمـبیت م 11ش اعداد ـمایـهای گرافیکی جدید از استاندارد نردازندهـانی پـه به پشتیبـوجـبا ت

توان های دقیق پردازش تصویر فراهم گشته است لذا از نظر دقت عملکرد نمیمـسازی الگوریتادهـت پیـهـت الزم جـدق

.مرکزی مشاهده کردهای پردازش تصویر بر روی پردازندهالگوریتمهای متداول سازیتفاوتی میان آن با پیاده

مشكالت متداول

گرافیکی مانع از نیل به اهداف تصویر بر روی پردازندهسازی یك الگوریتم پردازشعددی وجود دارند که هنگام پیادهـوامل متـع

.گرافیك کامپیوتر اشاره کردمیان حافظه اصلی و کارتتوان به پهنای باند محدود شوند از جمله این عوامل میذکر شده می

گرافیکی پردازش شود، از حافظه ك الگوریتم پردازش تصویر ابتدا تصویر یا بخشی از فریمی که قرار است توسط پردازندهـدر ی

بایست یج کار میو پس از اجرای عملیات پردازش، نتا (Download) شودگرافیك منتقل می لی کامپیوتر به حافظه کارتـاص

. (Upload)گرافیك مجددا به حافظه اصلی بازگردد از حافظه کارت

تدبیر نشده است اما Upload در عملیات DMA های مدرن متاسفانه هنوز هیچ راه کاری برای استفاده ازاری کامپیوترـدر معم

.شودکمی تسریع بخشیده می DMA به کمك Download عملیات

رافیك آنقدر زمان ـگارتـافظه کـم و حـان حافظه سیستـات انتقال داده میـن عملیـتوضیحات امکان دارد که در ایبا توجه به این

شود از ر پیشنهاد داده میـاطـازد. به همین خـاه سـی تبـگرافیکها توسط پردازندهریع دادهـردازش سـای پـهود که مزیتـری شـسپ

شوند خود داری شده تا حجم داده مبادله شده ویر به کار گرفته نمیـوریتم پردازش تصـالگ م که درـهایی از فریراخوانی بخشـف

. گرافیك محدود گرددمیان حافظه اصلی و حافظه کارت

Page 15: GPGPU

15صفحه

كتابخانه OpenVIDIA و GPUCV

OpenVIDIAکتابخانه -1

ر بر روی ـویـصـردازش تـهای پوریتمـگـازی الـسادهـیـرای پـورنتو بـگاه تـشـه در دانـت کـازی اسـبنـانه متـتابخـک امـن

توسعه داده شده Cg و زبان OpenGL گرافیکی API رافیکی نگاشته شده است. این کتابخانه با استفاده ازـگردازندهـپ

.باز گشتهای متنرسانهافزار چندبرنده جایزه نرم 1115است و در سال

OpenVIDIA ایی ماشین ارائه میدهد که در آن ـصویر و بینـردازش تـای پـهامهـبرن هـوسعـت تـای را جهادهـواسط س

.باشدهای یافتن لبه ، قابل استفاده میهای متداول پردازش تصویر مانند فیلترالگوریتم

آن توان باشد به این ترتیب میگرافیك میانی از چندین کارتـکی دیگر از امکانات این کتابخانه قابلیت آن در پشتیبـی

.( 1کار اقتصادی مناسبی جهت ایجاد یك ماشین پردازش تصویر قدرتمند بیان کرد )شکل را راه

نویس مخفی سازد، لذا برنامه نویس گرافیکی را از دید برنامه API ن وجود، این کتابخانه کامال نتوانسته است توابعـبا ای

API رفته شده و بافرهای مورد نیاز، خود را اندکی درگیرـارگـکی به کـرافیـی به توابع گـدار دهـاز دارد تا جهت مقـنی

.گرافیکی کند

گرافیكیك کامپیوتر با هفت کارت -1شکل

Page 16: GPGPU

16صفحه

GPUCVکتابخانه -2

گرافیکی در دانشگاه ریمز فرانسه توسعه یافته است، پردازنده-Vision ای به نامابخانه رایگان که در پروژهـن کتـای

گرافیکی ایجاد شده و به عنوان نسخه ماشین بر روی پردازندههای بیناییهای الگوریتمملگرـازی عـسادهـیـت پـهـج

.کندعمل می Intel OpenCV الحاقی کتابخانه معروف

را در اختیار OpenCV نویسی مشابهرنامهـیط بــمح GPUCV اشینـمناییـیـوریتم بـازی یك الگـس ادهـیـجهت پ

های خود الگوریتم را در حداقل زمان ها و عملوندا به سادگی بتوانند با تغییر نام عملگرـدهد تار مینویسان قربرنامه

ابخانه، ـارکردن با این کتـرای کـراین بـابـنـل کنند. بـقـتـکی منـیـگرافردازندهـمرکزی به پردازندهـاز بارپردازشی پ

توانسته GPUCV ارت گرافیك نیست وـهای کزنایهـراجع سـکی و مـگرافی API وراتـراگیری دستـازی به فـنی

.نویسان پهنان سازدگرافیکی را از دید برنامهنویسی پردازندهجزئیات گرافیکی برنامه

برند به فراخوانی شده و از ساختمان داده مشابهی بهره می OpenCV همانند عملگرهای GPUCVوابع عملیاتی ـت

وسعه داد که بسته به انتخاب ـت OpenCVو GPUCV هایرـوریتم ترکیبی را از عملگوان الگـتاطر میـن خـهمی

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

مقایسه شده OpenCV هایبا عملگر GPUCV های صورت گرفته کارایی عملگرهایاس نتایج آزمایشـبر اس

OpenCV هایتر از عملگرر سریعـرابـب 5حدود GPUCV هایرـعملگ Upload است که بدون احتساب زمان

.رسدبرابر می 1به حدود Upload هستند که این نسبت برتری با احتساب زمان

Page 17: GPGPU

18صفحه

آيندهGPGPU

پس زمینه بازار چند بیلیون واهد بود که درـوفقی خـهای میکی دیگر از تکنولوژی GPGPUدان دور ـچنده نهـدر آین

ها ولد شده است. این تکنولوژی هنوز به بلوغ کامل نرسیده و بیشتر در پروژهـهای کامپیوتری متدالری سرگرمی و بازی

.بینی فراگیر شدن آن دور از تصور نیستشود، اما پیشمی و تحقیقات آکادمیك به کار گرفته

های جذاب کردن بازیز به یك کارت گرافیك قدرتمند نباشد نه تنها از بازیده نزدیك اگر کامپیوتر شما مجهـدر آین

ی یك برنامه علمی را اجرا کنید. ـتـم با کیفیت یا حـد یك فیلـن است نتوانیـد شد بلکه ممکـروم خواهیـده محـنسل آین

مرکزی ها نیز متحول خواهد شد، زندهافزارها بلکه معماری پردابی این تکنولوژی، نه تنها ساختار نرمـر شدن نسـبا فراگی

ی و معماری ـکـگرافیدهـمرکزی و پردازنردازندهـام پـی بر ادغـنـددی مبـعـای متـهرـبـخ ATI و AMDامـس از ادغـپ

.منتشر شده است GPGPU جهت استفاده از مزایای Fusion ای به نامپارچهیك

نگرانه است، آن کامال آینده ومـعه علـادمیك جهت توسـی و آکـمـعلافل ـال از این تکنولوژی جدید توسط محـقبـاست

ثر ـان ما در اکـنـوطد و همـانردهـذاری کـایه گـوژی سرمـولـیا بر روی این تکنـدودی در دنـهای معم اکنون دانشگاهـه

مساعدی جهت توسعه علوم توان گفت که زمینه بسیارن فرض میـوزه حضور دارند، با ایـاتی این حـقیقـهای تحروهـگ

.های نسل آینده کامپیوترها برای ما به وجود آمده استکامپیوتر و سهیم دانستن خود در تکنولوژی

Page 18: GPGPU

17صفحه

خالصه

GPGPU چیست ؟

GPGPU وان ــك به عنــگرافیارتـري از کـگیاالن اين عرصه بهرهـي فعـايـدف نهـه ي که علم کامپیوتر

. هاي عمومي استهاي غیرگرافیكي و برنامهدر برنامهمحاسباتي ك کمك پردازندهـي

GPGPU و صنعت

هاي نعت بازيـرا که صـکند، چيـر رشد مـرابـب 2اله ــا هر سـكي هــگرافیي پردازندهـحداکثر توان پردازش

کامپیوتري انگیزه اقتصادي اين رشد را فراهم کرده است

ویژگی های پردازنده های گرافیکی مدرن

.هاي بسیار سريعي هستندگرافیكي به لطف معماري موازي خود، پردازندههايپردازندهاول،

.دوم، با توجه به مالك کارايي به قیمت، ارزان هستند

مرکزي ها دارند.سوم، با توجه به مالك کارايي به وات، آنها توان مصرفي بسیار کمتري نسبت به پردازنده

مرکزیافیکی با پردازندهگرهای پردازندهمقایسه توانایی

ن ــده ایـــه شـینـهـه بــخـنس« ضرب ماتریسی»و «FFT تبدیل فوریه سریع یا»، «مرتب سازی»در سه برنامه

مرکزی برای های استاندارد آنها که از پردازندهبرابر از نسخه 5الی 1گرافیکی ردازندهـرای پـها بامهـه برنـس

. تر استکنند سریعاستفاده میپردازش محاسبات پیچیده خود

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

دل سریال است به ـك مـل یـشوند در اصته میـزی نوشـمرکهایی که برای پردازندهنویسی برنامهمدل برنامه

و در آن به ندرت از شدهایین خوانده شده و پس از ترجمه، اجرا ـاین معنی یك برنامه به ترتیب از باال به پ

های ی برنامهـویسـنامهـرنــدل بـه مـالی کـدر ح ، ودـشیــاده مـفـتـا اســهردازش دادهـدر پ« ازیـسوازیـم»

تـوازی اسـدل مـك مـل یـاصدر رافیکی ـگردازندهـپ

Page 19: GPGPU

10صفحه

نویسیهای برنامهابزار GPGPU

ن ـنویسی ایرنامهـهای بزارـکند و کلیه ابفرمایی میحکم GPGPU های برنامه نویسی گرافیکی وابزار

. روندبه شمار می ++Cزبان های حوزه از جمله مشتق

: سه روش وجود دارد GPGPU نویسیبرای برنامه

0- API ها و زبان های برنامه نویسی گرافیکی

و کتابخانه ها GPGPUزبان های برنامه نویسی -1

پلتفورم های تجاری -1

گرافیکیی غیرگرافیکی پردازندههاکاربرد

شوند به صورت مختصر گرافیکی پردازش میهای غیرگرافیکی که به خوبی توسط پردازندهساختار برنامه

ذکر شده . ها که تاکنون صورت گرفتهای از این کاربردنمونهو توضیح داده شددر ابتدای مقاله

گرافیکی در پردازش تصویرکاربرد پردازنده

ن و پردازش تصویر جهت ـیـهای بینایی ماشوریتمـرافیکی در الگــگدهـردازنــهای پتــابلیـری از قـگیبهره

بدون نیاز Real-Time رح شده است، هدف اول نائل شدن به عملکردـدف کلی مطـه هـیابی به ستـدس

ردازشی ـمرکزی از عملیات پدف دوم کاهش بارکاری پردازنده ـگوریتم است، هـیدگی الـچـاهش پیـبه ک

ها می باشد و هدف سوم نیز افزایش سرعت امهـرنـایر بـاص آن به سـصـاشین و اختـی مـهای بینایگوریتمـال

.کار به صرفه اقتصادی استهای پردازش تصویر به کمك یك راهمحاسبات برنامه

لمشکالت متداو

گرافیکی تصویر بر روی پردازندهالگوریتم پردازش سازی یكعددی وجود دارند که هنگام پیادهـوامل متـع

توان به پهنای باند محدود میان حافظه اصلی شوند از جمله این عوامل میمانع از نیل به اهداف ذکر شده می

.گرافیك کامپیوتر اشاره کردو کارت

Page 20: GPGPU

29صفحه

کتابخانه OpenVIDIA و GPUCV

کتابخانهOpenVIDIA

های وریتمـگـازی الـسادهـیـرای پـورنتو بـگاه تـشـه در دانـت کـاس ازیـبنـانه متـتابخـک امـن

API رافیکی نگاشته شده است. این کتابخانه با استفاده ازـگردازندهـر بر روی پـویـصـردازش تـپ

افزار برنده جایزه نرم 1115توسعه داده شده است و در سال Cg و زبان OpenGL گرافیکی

.گشته بازای متنرسانهچند

کتابخانهGPUCV

گرافیکی در دانشگاه ریمز فرانسه پردازنده-Vision ای به نامابخانه رایگان که در پروژهـن کتـای

ماشین بر روی های بیناییهای الگوریتمملگرـازی عـسادهـیـت پـهـتوسعه یافته است، ج

عمل Intel OpenCV معروفگرافیکی ایجاد شده و به عنوان نسخه الحاقی کتابخانه پردازنده

.کندمی

آیندهGPGPU

واهد بود که در پس ـوفقی خـهای میکی دیگر از تکنولوژی GPGPUدان دور ـچنده نهـدر آین

ولد شده است. این تکنولوژی ـهای کامپیوتری متزمینه بازار چند بیلیون دالری سرگرمی و بازی

شود، اما می ها و تحقیقات آکادمیك به کار گرفتهپروژههنوز به بلوغ کامل نرسیده و بیشتر در

.بینی فراگیر شدن آن دور از تصور نیستپیش

Page 21: GPGPU

21صفحه

منابع و مأخذ

1. www.sarirservice.com

2. www.operating-system.ir

3. forum.ecl4u.com

4. www.daneshju.ir

5. en.wikipedia.org/wiki/GPGPU

6. gpgpu.org

7. blogs.msdn.com

8. en.wikipedia.org/wiki/GPGPU

9. www.linkedin.com

10. www.tidepowerd.com/gpu-net

11. www.gpusystems.com

12. stackoverflow.com

13. blog.joeferfecki.com

14. syrcose.ispras.ru

15. www.sakhtafzar.com

16. www.demo.informatic-laptop.com

17. www.culatools.com

18. vidia-graphic.blogfa.com

19. www.tebyan.net

Page 22: GPGPU

22صفحه

ضمائم :

استفاده می نماید : GPU .Netکد برنامه ای که از

0-

// Wrapper method (runs on the host)

// Create a standard .NET array of integers

const int Count = 0x1000000;

float[] a = new float[Count];

float[] b = new float[Count];

// Create an array to hold the output values

float[] c = new float[Count];

// Set grid/block size for GPU execution

Launcher.SetGridSize(256);

Launcher.SetBlockSize(128);

// Call the kernel method

AddGpu(a, b, c);

// The results are immediately available in 'c'.

// Kernel method (runs on the device)

[Kernel]

private static void AddGpu(float[] a, float[] b, float[] c)

{

// Get the thread id and total number of threads

int ThreadId = BlockDimension.X * BlockIndex.X + ThreadIndex.X;

int TotalThreads = BlockDimension.X * GridDimension.X;

// Loop over the vectors 'a' and 'b', adding them

// pairwise and storing the sums in 'c'

for (int ElementIndex = ThreadId; ElementIndex < a.Length; ElementIndex +=

TotalThreads)

{

c[ElementIndex] = a[ElementIndex] + b[ElementIndex];

}

}

Page 23: GPGPU

23صفحه

1-

using System;

using System.Linq;

using Microsoft.ParallelArrays;

namespace AcceleratorSamples

{

static partial class Convolver2D

{

static FloatParallelArray convolve(this FloatParallelArray a,

Func<int, int[]> shifts, float[]

kernel)

{

return kernel

.Select((k, i) => k * ParallelArrays.Shift(a, shifts(i)))

.Aggregate((a1, a2) => a1 + a2);

}

static FloatParallelArray convolveXY(this FloatParallelArray input,

float[] kernel)

{

return input

.convolve(i => new[] { -i, 0 }, kernel)

.convolve(i => new[] { 0, -i }, kernel);

}

static void Main(string[] args)

{

const int inputSize = 10;

var random = new Random(42);

var inputData = new float[inputSize, inputSize];

for (int row = 0; row < inputSize; row++)

for (int col = 0; col < inputSize; col++)

inputData[row, col] = (float)random.NextDouble() *

random.Next(1, 100);

var testKernel = new[] { 2F, 5, 7, 4, 3 };

var dx9Target = new DX9Target();

var inputArray = new FloatParallelArray(inputData);

var result =

dx9Target.ToArray2D(inputArray.convolveXY(testKernel));

for (int row = 0; row < inputSize; row++)

{

for (int col = 0; col < inputSize; col++)

Console.Write("{0} ", result[row, col]);

Console.WriteLine();

}

}

}

}

Page 24: GPGPU

24صفحه

فهرست اشکال

5..................................................................................................................... گرافیكي مدرننمايي از يك پردازنده -1شكل

9........................................................................... مرکزیگرافیکی در مقایسه با پردازندهزندهتوان پردازشی خام پردا -1شکل

05................. ................................................................................................... گرافیكیك کامپیوتر با هفت کارت -1شکل