در اين بخش شما ميتوانيد درباره سخت افزار كامپيوتر به بحث و تبادل نظر بپردازيد
Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

آشنايي با GPGPU و كاربرد آن در پردازش تصوير.

توسط pejman » يکشنبه 15 مهر 1386 19:49

امروزه پردازنده‌‌هاي گرافيكي كه بر روي كارت‌گرافيك‌هاي گران‌قيمت نصب مي‌شوند توان پردازشي خارق‌العاده‌اي را نسبت به پردازنده‌هاي مركزي ارائه مي‌دهند، اين موضوع موجب گسترش كاربرد‌هاي اين پردازنده‌ها در حوزه‌هايي فراتر از بازي‌هاي كامپيوتري گشته است، پردازنده‌هاي گرافيكي مدرن با معماري موازي خود پردازنده‌هاي بسيار سريعي به شمار مي‌روند، در عين حال با قيمت و توان مصرفي كمتري عرضه مي‌شوند و جهت پياده‌سازي الگوريتم‌ها و برنامه هاي بينايي ماشين و پردازش تصوير كه بار پردازشي زيادي را جهت رسيدن به نرخ فريم بيشتر طلب مي‌كنند، يك راه‌كار اقتصادي و كارآمد به شمار مي‌رود، طوري كه برنامه نويس بدون نياز به فراگيري واسط‌هاي برنامه نويسي گرافيكي به كمك كتابخانه‌هاي موجود براي اين‌كار مي‌تواند بار پردازشي برنامه خود را به سادگي از پردازنده مركزي به پردازنده گرافيكي منتقل كند.





[size=x-large]مقدمه

اشتياق فراوان طرفداران بازي‌هاي كامپيوتري به بازي‌هاي زيبا و طبيعي‌‌تر، موجب به‌وجود آمدن تحولات متعددي در كارت‌‌گرافيك‌ها و فن‌آوري‌هاي وابسته به آن شده به طوري كه كارت‌گرافيك‌هاي مدرن مي‌توانند به درمان سرطان كمك كنند! زمين لرزه برزگي در شهر سانفرانسيسكو را پيش‌بيني كنند و با فراهم‌ آوردن توان پردازشي خارق‌العاده، مسائل بسيار پيچيده محاسباتي و رياضي را به سادگي حل كنند. آيا تا كنون به اين موضوع فكر كرده‌ايد كه كارت‌گرافيك‌هاي چندصد هزار توماني به غير از بازي‌هاي كامپيوتري در چه كاربرد‌هاي ديگري به درد مي‌خورد؟

سال‌ها است كه افزايش روز افزون عملكرد كارت‌گرافيك‌ها، محققين را به فكر بهره‌گيري از توان پردازشي آنها در كاربردهاي غيرگرافيكي انداخته است. در همين راستا شاخه جديدي در علوم كامپيوتر به نام GPGPU ايجاد گشته كه هدف نهايي فعالان اين عرصه بهره‌گيري از كارت‌گرافيك به عنوان يك كمك پردازنده‌ محاسباتي در برنامه‌هاي غيرگرافيكي و برنامه‌هاي عمومي است.



در همايش SuperComputing 2006 كه در شهر Tampa ايالت فلوريدا برگزار شد، محققين دانشگاه كارولينا نتايج آزمايش‌هاي گسترده خود را در مورد مقايسه عملكرد پردازنده‌گرافيكي(GPU) با پردازنده‌مركزي (CPU) منتشر كردند، پردازنده‌گرافيكي، نوعي پردازنده‌ موازي است كه بر روي كارت گرافيك‌ها قرار دارد (شكل 1). اين پردازنده به صورت كاملا اختصاصي براي پردازش گرافيكي محيط‌هاي سه‌بعدي و بازي‌هاي كامپيوتري طراحي شده است كه طي سال‌هاي گذشته توسط صنعت چند بيليون دلاري بازي‌هاي كامپيوتري آن چنان تحول يافته كه امروزه از نظر كارايي با

پردازنده‌مركزي كه يك پردازنده همه منظوره به شمار مي‌رود رقابت مي‌كند. بكار گيري پردازنده‌گرافيكي در محاسبات عمومي جايگاه جديدي براي كارت‌گرافيك‌هاي قدرتمند ايجاد كرده است، جايي كه از پردازنده‌گرافيكي ديگر براي پردازش محاسبات گرافيكي بازي‌هاي‌كامپيوتري استفاده نمي‌شود، در عوض در نقش يك پردازنده كمكي، بخشي يا تمامي بار محاسباتي پردازنده‌مركزي را تقبل كرده و به عمليات پردازش سرعت مي‌بخشد


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




 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


ادامه دارد
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 19:51

GPGPU و صنعت

NVIDIA و ATI به عنوان به دو توليدكننده بزرگ پردازنده‌هاي‌گرافيكي، از اين ايده‌ي نوين استقبال كرده‌اند و براي گسترش فروش محصولات خود در بازارهايي فراتر از بازار بازي‌هاي كامپيوتري، فن‌آوري‌هاي جديدي براي به كارگيري پردازنده‌گرافيكي در كاربرد‌هاي غيرگرافيكي ارائه كرده‌اند. همزمان با عرضه Geforce 8800 ، شركت Nvidia‌ اولين محيط توسعه برنامه‌هاي GPGPU را مبتني بر كامپايلر C، موسوم به CUDA معرفي كرده كه به كمك اين فن‌آوري بهره‌برداري از پردازنده‌گرافيكي در برنامه‌هاي عمومي بسيار آسان‌تر خواهد شد. به گفته مدير ارشد شركت NVIDIA در حوزه محاسبات پردازنده‌گرافيكي ، آقاي andy keane ، معماري كاملا جديدي در پردازنده‌گرافيكي هاي نسل هشتم شركت به كار گرفته شده كه در آن با اضافه كردن حافظه‌ كاشه، استفاده از پردازنده‌گرافيكي در دو مد گرافيكي و غير گرافيكي به سهولت امكان پذير است: «هم اكنون پردازنده‌گرافيكي شباهت بسياري به  پردازنده‌مركزي پيدا كرده است و CUDA مسير انعطاف پذير و ساده‌اي را براي دستيابي به كارايي شگفت‌انگيز نهفته شده در پردازنده‌گرافيكي براي برنامه‌نويسان به ارمغان مي‌آورد».



تجربه‌هاي بسيار موفق به دست آمده در پروژه Folding@Home دانشگاه اِستَنفورد، مهر تاييدي بر كاربردي بودن اين سبك جديد برنامه‌ها است ، در اين پروژه‌ي عمومي كه سال‌هاست آغاز شده كامپيوتر‌هاي هزاران نفر از سراسر دنيا با همديگر از طريق اينترنت متصل مي‌گردد تا به كمك توان پردازشي پردازنده‌مركزي هاي خود، پروتئين‌هاي موثر در ايجاد بيماري‌هاي سرطاني و بيماري‌هاي غددي را شبيه‌سازي كرده و محققين را در يافتن روش‌هاي درمان آنها ياري كنند. چند ماه پيش با همكاري شركت ATI، نسخه آزمايشي از نرم‌افزاري عرضه شد كه در آن از توان پردازش كارت‌‌گرافيك كامپيوترهايي كه از طريق اينترنت به همديگر متصل شده‌اند به جاي استفاده از پردازنده‌مركزي آنها در شبيه‌سازي‌ها استفاده مي‌كند. آخرين نتايج به دست آمده از اين آزمايش جهش 20 الي 40 درصدي نرخ رشد پروژه را نشان مي‌دهد، آرايه‌اي از 536 كارت‌گرافيك با پردازنده‌گرافيكيي Radeon X1900 كه طي چند ماه به اين پروژه پيوسته اند با 35 تريليون محاسبه در ثانيه، سرعت پردازشي بيش از 17485 پردازنده‌مركزي شركت كننده با پلتفورم linux با حداكثر 21 تريليون محاسبه در ثانيه ارائه كرده‌اند. افزايش عملكرد حاصل از بكارگيري پردازنده‌گرافيكي در برنامه‌هاي غيرگرافيكي، محققين و دانشمندان علوم كامپيوتر را مجذوب خود كرده به طوري كه روز به روز بر تعداد مقالات و تحقيقات حوزه GPGPU افزوده مي‌شود، Denish Manocha يكي از اساتيد تيم تحقيقاتي Gamma در دانشگاه كارولينا، در اين مورد مي‌گويد:



«حداكثر توان پردازشي پردازنده‌گرافيكي ها هر ساله 2 برابر رشد مي‌كند، چرا كه صنعت بازي‌هاي كامپيوتري انگيزه اقتصادي اين رشد را فراهم كرده است».



همچنين ايشان به همراه همكار خود در دانشكده علوم كامپيوتر دانشگاه كارولينا، مدت‌هاست اقدام به برگزاري دوره‌هاي آموزشي ويژه محاسبات عمومي به كمك پردازنده‌گرافيكي كرده‌ا‌ند. اين امر نويد آن را مي‌دهد كه بهره‌گيري از پردازنده‌گرافيكي در محاسبات عمومي به يكي از دروس استاندارد محافل آكادميك تبديل شود.



گروهي از محققين بر اين باورند كه قدرت پردازشي بسيار بالاي سوپر‌كامپيوترها با بهره برداري از توان پردازشي پردازنده‌گرافيكيهايي كه براي صنعت بازي‌هاي كامپيوتري توسعه يافته‌اند، قابل دستيابي است. به گفته Vijay Pande مدير پروژه Folding@Home «با بهره‌برداري از توان پردازشي پردازنده‌گرافيكي ها ما شاهد يك انقلاب واقعي بوديم كه هرگز قابل تصور نمي‌بود».



در اين مقاله به كاربرد‌هاي كارت‌گرافيك‌ در برنامه‌هاي عمومي اشاره شده كه در اين كاربرد‌ها پردازنده گرافيكي به عنوان يك كمك پردازنده محاسباتي قدرتمند به خدمت گرفته مي‌شود، علاوه‌ بر اين مقايسه‌اي ميان پردازنده‌ گرافيكي و پردازنده ‌مركزي صورت گرفته تا برتري‌هاي نسبي پردازنده‌هاي گرافيكي مشخص گردد سپس به روش‌هاي متداول برنامه‌نويسي عمومي پردازنده‌گرافيكي اشاره كوتاهي كرده و در انتها برخي از كاربرد‌هاي روش برنامه‌نويسي مذكور در برنامه‌هاي پردازش تصوير و بينايي ماشين بررسي شده است.


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

ادامه دارد
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 19:56

ويژگي‌هاي پردازندههاي‌گرافيكي‌ مدرن

پردازنده‌گرافيكي داراي واحدهاي محاسباتي متعددي است كه حجم بسيار زيادي از داده‌ها در كوتاه‌ترين زمان به طور موازي پردازش مي‌كند. طي پنج‌سال گذشته استقبال مشتاقان بازي‌هاي كامپيوتري از كارت‌گرافيك‌هاي مدرن و قدتمند، موجب شده تا پردازنده‌گرافيكي ها به عنوان هسته‌‌ي اصلي پردازش گرافيكي در كامپيوتر‌ها به سرعت توسعه يابند. چهار نكته اساسي در رابطه با پردازنده‌گرافيكيهاي مدرن وجود دارد كه قابليت‌هاي آنها را به خوبي ترسيم مي‌كند.



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

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

سوم، با توجه به ملاك كارايي به وات، آنها توان مصرفي بسيار كمتري نسبت به پردازنده‌مركزي ها دارند. شايد تعجب كرده باشيد و اين سوال در ذهن شما ايجاد شده باشد كه اگر پردازنده‌گرافيكي ها سريعتر، ارزان‌تر و كم مصرف تر از پردازنده‌مركزيها هستند چرا كامپيوتر به كمك يكي از آنها تمامي برنامه‌هاي خود را اجرا نمي‌كند!؟



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

پردازنده‌‌های‌گرافيكي تنها قادر به پردازش سريع برنامه‌هايي هستند كه همانند يك بازي‌ كامپيوتري، محاسبات پيچيده و سنگين همزماني دارند. بنابراين شما نمي‌توانيد برنامه Word مجموعه Office را به كمك يك پردازنده‌گرافيكي اجرا كرده و از افزايش عملكرد آن لذت ببريد! چرا كه اين گونه برنامه‌ها بيشتر از سوي دستگاه‌هاي ورودي و خروجي محدود شده‌اند تا از سوي پردازنده، به طور كلي برنامه‌هايي كه نرخ محاسبات نسبت به نرخ ورودي و خروجي در آنها بسيار بزرگ بوده و داراي چگالي محاسباتي (Arithmetic Intensity) بالايي باشند به خوبي توسط پردازنده‌گرافيكي پردازش‌شده و افزايش عملكرد محسوسي نسبت به پياده سازي‌ بر پايه پردازنده‌مركزي خواهند داشت.



اكثر برنامه‌هاي علمي از اين دسته هستند، به عنوان مثال برنامه حل دستگاه معادلات خطي، برنامه‌اي است كه چند معادله ساده از ورودي دريافت كرده و بعد از اعمال يك سري محاسبات پيچيده كه ممكن است ساعت‌ها زمان ببرد، چند جواب به خروجي ارسال مي‌كند. اين دسته برنامه‌ها كه علاوه بر كم بودن نرخ ارتباطات آنها، محاسبات سنگيني داشته و اغلب محاسبات آنها جنبه تكراري دارند، توسط پردازنده‌گرافيكي به خوبي پردازش مي‌شون
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 20:01

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

شركت AMD‌ كه اخيرا شركت ATI را خريده‌است، توان پردازشي خام پردازنده‌هاي گرافيكي را با پردازنده‌هاي مركزي معاصر خود طي سال‌هاي اخير مقايسه كرده است ، بر اساس نتايج اين تحقيق (شكل 2) توان پردازشي پردازنده‌هاي گرافيكي رشد زيادي نسبت به پردازنده‌هاي مركزي طي چندين سال اخير داشته است



شكل 2- توان پردازشي خام پردازنده‌گرافيكي در مقايسه با پردازنده‌مركزي




در شكل 2 كارايي پردازنده‌هاي گرافيكي ATI‌ در مقايسه با پردازنده‌مركزي هاي AMD از ابتداي تولد پردازنده‌گرافيكيها نشان داده شده، توان پردازشي خام با واحد Gigaflops سنجيده شده است، همانطور كه مشاهده مي‌كنيد توان پردازشي خام پردازنده‌گرافيكي‌ها بسيار بيشتر از سريع‌ترين پردازنده‌مركزي ها بوده و رفته رفته فاصله ميان اين دو بيشتر مي‌شود. با اين فرض مي‌توان توان پردازشي خام فوق‌العاده‌اي را با كمتر از هزار دلار دست و پا كرد در حالي كه سال‌ها پيش، اجاره كردن يك Gigaflops توان پردازشي در سوپركامپيوتر Boewulf نزديك به 30 هزار دلار هزينه داشت.



با اينكه بر روي كاغذ پردازنده‌گرافيكيها توان پردازشي خارق‌العاده‌اي دارند، اما در واقعيت عوامل متعددي وجود دارد كه عملكرد‌ نهايي آنها را محدود مي‌كند. به همين خاطر مقايسه، تنها بر اساس معيار Gigaflops تا حدودي گمراه كننده است، اما در عمل پردازنده‌گرافيكي ها چقدر سريع‌تر از پردازنده‌مركزي ها هستند؟



تيم تحقيقاتي Gamma‌ وابسته به دانشگاه كارولينا در يك محيط آزمايشگاهي پردازنده گرافيكي Geforce 7900 GTX را با دو پردازنده قدرتمند Xeon 3.6GHz و Opteron 280 مقايسه كرده‌اند. اعضاي اين تيم كه از پيشتازان GPGPU‌ به شمار مي‌روند، در سه برنامه «مرتب سازي» ، «تبديل فوريه سريع يا FFT» و «ضرب ماتريسي» نتيجه آزمايشات خود را منتشر نمودند، اين نتايج نشان مي‌دهد كه نسخه بهينه شده اين سه برنامه‌ها براي پردازنده‌گرافيكي 2 الي 5 برابر از نسخه‌هاي استاندارد آنها كه از پردازنده‌مركزي براي پردازش محاسبات پيچيده خود استفاده مي‌كنند سريع‌تر اس


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


ادامه دارد
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 20:08

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

پاسخ اين سوال در يك كلمه خلاصه مي‌شود: «موازي‌سازي». مدل برنامه‌نويسي برنامه‌هايي كه براي پردازنده‌مركزي نوشته مي‌شوند در اصل يك مدل سريال است به اين معني كه شبه كد‌هاي تشكيل دهنده يك برنامه به ترتيب از بالا به پايين خوانده شده و پس از ترجمه، اجرا ‌شده و در آن به ندرت از «موازي‌سازي» در پردازش داده‌ها استفاده مي‌شود.



معماري در نظر گرفته شده براي ‍پردازنده‌مركزي نيز بر مبناي اين مدل پايه‌ريزي شده است و قابليت‌هاي چنداني براي اجراي چندين دستورالعمل مشابه را به صورت همزمان ندارد. در حالي كه مدل برنامه‌نويسي برنامه‌هاي پردازنده‌گرافيكي كه Stream نام دارد، در اصل يك مدل موازي است و قابليت بهره گيري از تكنيك‌هاي «موازي‌سازي» در آن گنجانده شده است، هرچند پردازنده‌مركزيهاي جديد با قابليت‌هايي نظير HyperThreading، SSE ، 3D Now و بكارگيري‌ معماري‌هاي چند‌هسته‌اي نويد «موازي‌سازي» بيشتر را مي‌دهند، اما نرخ موازي‌سازي آنها بسيار كمتر از يك پردازنده‌گرافيكي با 320 واحد پردازشي است.



بر خلاف پردازنده‌گرافيكي، زيرسيستم حافظه در نظر گرفته شده براي پردازنده‌مركزيها براي كاربردهايي كه نياز به دسترسي به حافظه با تاخير كم دارند بهينه شده است نه براي برنامه‌هايي كه به پهناي باند حافظه وسيعي نياز دارند، با توجه به مدل برنامه نويسي سريال پردازنده‌مركزي، بخش‌هاي يك برنامه بايد مرجع‌هاي حافظه را براي به جريان افتادن قسمت بعدي برنامه، به سرعت برگردانند كه لازمه اين امر تاخير كم در دسترسي به حافظه است، به همين دليل در سلسله مراتب حافظه‌ي پردازنده‌مركزي چندين لايه حافظه نهان گنجانده شده تا اين تاخير را به حداقل برساند.



در مقابل، در مدل برنامه‌نويسي Stream‌ كه برنامه‌هاي پردازنده‌گرافيكي در چهارچوب‌ آن نوشته مي‌شوند، پهناي باند دسترسي به حافظه گسترده‌تر اهميت بيشتري نسبت به تاخير دسترسي به حافظه دارد، چرا كه در اين مدل، برنامه‌هاي پردازنده‌گرافيكي به صورت موازي اجرا شده و وابستگي چنداني ميان‌ آنها وجود ندارد. به همين دليل برنامه‌هايي كه نياز به پهناي‌باند حافظه‌ زيادي دارند، با پردازنده‌گرافيكي‌ سريع‌ از پردازنده‌مركزي‌ اجرا مي‌شوند.



پردازنده‌مركزي‌ يك پردازنده كاملا عمومي است كه هر نوع عمليات محاسباتي و پردازشي را مي‌توان با آن انجام داد اما پردازنده‌گرافيكي يك پردازنده كاملا اختصاصي است كه ويژه پردازش گرافيكي طراحي شده، به همين دليل در مدل برنامه نويسي Stream دنيايي از محدوديت‌ها وجود دارد و در مقابل آن دنيايي ديگري از ترفند‌ها ايجاد شده كه به برنامه نويس امكان اجراي يك برنامه غيرگرافيكي به كمك پردازنده‌گرافيكي را مي‌دهد. اين محدوديت‌ها موجب شده اند تا GPGPU تنها در شاخه‌هاي خاصي از علوم كاربرد پيدا كند كه بررسي تك تك اين عوامل خارج از حوصله اين مقاله است.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


ادامه دارد
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 20:15

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

زبان برنامه‌نويسي ++C همچنان بر تمامي ابزار‌هاي برنامه نويسي گرافيكي و GPGPU حكم‌فرمايي مي‌كند و كليه ابزار‌هاي برنامه‌نويسي اين حوزه از جمله مشتق‌هاي آن به شمار مي‌روند و به نوعي گرامر و دستورات اصلي آن را با خود به همراه دارند. به طور كلي براي برنامه‌نويسي GPGPU سه روش وجود دارد كه به ترتيب به آنها اشاره مي‌كنيم:



1-API‌ها و زبان‌هاي برنامه‌نويسي گرافيكي

اين روش كه در ابتدا از آن بسيار استفاده مي‌شد، كاملا مشابه برنامه نويسي گرافيكي است، به اين معنا كه برنامه نويس با فرض آشنا بودن به يكي از API هاي گرافيكي مانند DirectX يا OpenGL و در نظر گرفتن تمامي محدوديت‌هاي موجود در مدل برنامه نويسي Stream ، برنامه غيرگرافيكي را به صورت گرافيكي شبيه‌سازي كرده و مراحل پياده سازي آن را دنبال مي‌كند. علاوه بر اين برنامه‌نويس مي‌تواند در صورت آشنا بودن به زبان برنامه نويسي Cg كه توسط شركت NVIDIA‌ توسعه داده شده است، برنامه غيرگرافيكي خود را در اين محيط توسعه دهد. لازمه اين روش آشنايي كامل با محيط برنامه‌نويسي‌گرافيكي و محدوديت‌هاي برنامه‌نويسي GPGPU‌ مي‌باشد به همين دليل برنامه‌نويس بيشتر بايد بر روي نحوه پياده‌سازي و مرتفع‌كردن محدوديت‌ها تمركز داشته باشد تا بر روي الگوريتم‌هاي برنامه خود.



2-زبان‌هاي برنامه‌نويسي GPGPU و كتابخانه‌ها

با توجه به پيچيدگي روش اول، پياده سازي برنامه‌هاي بزرگ توسط آن بسيار مشكل است به همين دليل زبان‌هاي برنامه نويسي خاص GPGPU ابداع شده اند كه با در نظر گرفتن محدوديت‌هاي مدل برنامه‌نويسي Stream به برنامه‌نويس امكان مي‌دهند تا تمركز بيشتري بر روي الگوريتم‌هاي برنامه خود داشته باشد، همچنين اين زبان‌ها تعامل مستقيم برنامه‌نويس با API‌گرافيكي را از بين برده‌اند و برنامه‌نويس نيازي به آشنايي با آنها جهت پياده‌سازي برنامه خود ندارد. تا كنون دو زبان برنامه نويسي GPGPU معرفي شده كه اين دو زبان عبارتند از Brook و Sh.

زبان برنامه نويسي Brook توسط تيم دانشگاه استنفورد توسعه يافته، اين زبان از جمله كاربردي‌ترين زبان‌هاي برنامه نويسي GPGPU‌ به شمار مي‌رود كه در نسخه بهينه شده برنامه Folding@Home براي پردازنده‌گرافيكيها نيز از آن بهره گرفته شده است. زبان برنامه‌نويسي Sh نيز توسط تيم دانشگاه واترلو توسعه يافته و تا كنون پروژه‌هاي زيادي با آن اجرا شده است. علاوه بر اين كتابخانه‌هاي متعددي وجود دارند كه امكان برنامه نويسي GPGPU‌ را در پلتفورم .Net يا VC++ 6.0 فراهم كرده‌اند از جمله معروف‌ترين اين كتابخانه‌ها، Accelerator نام دارد كه توسط مايكروسافت توسعه يافته است.

كتابخانه‌هاي اختصاصي پردازش‌تصوير متعددي نيز در اين معقوله عرضه شده‌اند كه از مهمترين آنها مي توان به GPUCV و OpenVIDIA اشاره كرد. به كمك اين كتابخانه‌ها مي‌توان الگوريتم‌هاي پردازش تصوير و بينايي‌ماشين را جهت پردازش توسط پردازنده‌گرافيكي توسعه داد.



3-پلتفورم‌هاي تجاري:

متداول‌ترين روش برنامه‌نويسي GPGPU تا كنون همان روش دوم است اما طي چند‌ماه اخير پلتفورم‌هاي تجاري ارائه شده كه نويد برنامه‌نويسي ساده‌تر نه تنها براي پردازنده‌گرافيكي بلكه به صورت كلي براي پردازنده‌هاي پرسرعت با قابليت موازي‌سازي نظير پردازنده Cell را مي‌دهند. از اين دسته دو پلتفورم PeakStream و RapidMind را مي‌توان نام‌ برد، برخلاف PeakStream كه نسخه تجاري آن عرضه شده است، RapidMind هنوز در مراحل آزمايشي به سر مي‌برد.


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

ساختار برنامه‌هاي غيرگرافيكي كه به خوبي توسط پردازنده‌گرافيكي پردازش مي‌شوند به صورت مختصر در ابتداي مقاله توضيح داده شد نمونه‌اي از اين كاربرد‌ها كه تاكنون صورت گرفته عبارتند از   :



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

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

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

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

·     برنامه‌هاي شبيه‌سازي فيزيكي مانند شبيه سازي جريان سيال يا تصادم

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

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

·     برنامه‌هاي بينايي ماشين

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


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

ادامه دارد
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 20:19

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

بهره‌گيري از قابليت‌هاي پردازنده‌گرافيكي در الگوريتم‌هاي بينايي ماشين و پردازش تصوير جهت دست‌يابي به سه هدف كلي مطرح شده است، هدف اول نائل شدن به عملكرد Real-Time بدون نياز به كاهش پيچيدگي الگوريتم است، هدف دوم كاهش باركاري پردازنده مركزي از عمليات پردازشي الگوريتم‌هاي بينايي ماشين و اختصاص آن به ساير برنامه‌ها مي باشد و هدف سوم نيز افزايش سرعت محاسبات برنامه‌هاي پردازش تصوير به كمك يك راه‌كار به صرفه اقتصادي است.

الگوريتم‌هاي بينايي ماشين به طور معكوس از سخت‌افزار گرافيكي استفاده مي‌كنند چرا كه پردازنده‌گرافيكي در كاربردهاي متداول خود موظف به ترسيم تصوير سه بعدي بر مبناي داده‌هاي عددي و آناليزهاي رياضي توصيف كننده آن تصوير مي‌باشد در حالي كه در كاربرد‌هاي بينايي ماشين، تصوير يا بخشي از يك فريم به پردازنده گرافيكي داده مي‌شود تا از آن آناليزهاي عددي استخراج شود. به همين خاطر الگوريتم‌هاي بينايي ماشين و پردازش تصوير نسبت به الگوريتم‌هاي گرافيك كامپيوتري ، به طور معكوس از سخت‌افزار گرافيكي استفاده مي‌كنند.

با توجه به پشتيباني پردازنده‌هاي گرافيكي جديد از استاندارد نمايش اعداد 32 بيت مميز شناور IEEE 754 ، دقت لازم جهت پياده‌سازي الگوريتم‌هاي دقيق پردازش تصوير فراهم گشته است لذا از نظر دقت عملكرد نمي‌توان تفاوتي ميان آن با پياده‌سازي‌هاي متداول الگوريتم‌هاي پردازش تصوير بر روي پردازنده‌مركزي مشاهده كرد.




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



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

در يك الگوريتم پردازش تصوير ابتدا تصوير يا بخشي از فريمي كه قرار است توسط پردازنده‌گرافيكي پردازش شود، از حافظه اصلي كامپيوتر به حافظه كارت‌ گرافيك منتقل مي‌شود (Download) و پس از اجراي عمليات پردازش، نتايج كار مي‌بايست از حافظه كارت‌گرافيك مجددا به حافظه اصلي بازگردد (Upload).

در معماري كامپيوتر‌هاي مدرن متاسفانه هنوز هيچ راه كاري براي استفاده از DMA در عمليات Upload تدبير نشده است اما عمليات Download به كمك DMA كمي تسريع بخشيده مي‌شود.

با توجه به اين توضيحات امكان دارد كه در اين عمليات انتقال داده ميان حافظه سيستم و حافظه كارت‌گرافيك آنقدر زمان سپري شود كه مزيت‌هاي پردازش سريع داده‌ها توسط پردازنده‌گرافيكي تباه سازد. به همين خاطر پيشنهاد داده مي‌شود از فراخواني بخش‌هايي از فريم كه در الگوريتم پردازش تصوير به كار گرفته نمي‌شوند خود داري شده تا حجم داده مبادله شده ميان حافظه اصلي و حافظه كارت‌گرافيك محدود گردد.
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 20:27

کتابخانه‌ OpenVIDIA و GPUCV

1-كتابخانهOpenVIDIA



OpenVIDIA نام‌ كتابخانه متن‌بازي است كه در دانشگاه تورنتو براي پياده‌سازي الگوريتم‌هاي پردازش تصوير بر روي پردازنده‌گرافيكي نگاشته شده است. اين كتابخانه با استفاده از API گرافيكي OpenGL و زبان Cg توسعه داده شده است و در سال 2005 برنده جايزه نرم‌افزار چند‌رسانه‌اي متن‌باز گشته.



OpenVIDIA واسط ساده‌اي را براي جهت توسعه برنامه‌هاي پردازش تصوير و بينايي ماشين ارائه ميدهد كه در آن الگوريتم‌هاي متداول پردازش تصوير مانند ف_ * ل*_ ت ر‌هاي يافتن لبه ، قابل استفاده مي‌باشد.



يكي ديگر از امكانات اين كتابخانه قابليت آن در پشتيباني از چندين كارت‌گرافيك مي‌باشد به اين ترتيب مي‌توان آن را راه‌كار اقتصادي مناسبي جهت ايجاد يك ماشين پردازش تصوير قدرتمند بيان كرد (شكل 3).


شكل 3- يك كامپيوتر با هفت كارت‌گرافيك


با اين وجود، اين كتابخانه كاملا نتوانسته است توابع API گرافيكي را از ديد برنامه‌نويس مخفي سازد، لذا برنامه نويس نياز دارد تا جهت مقدار دهي به توابع گرافيكي به كارگرفته شده و بافرهاي مورد نياز، خود را اندكي درگير API گرافيكي كند.





2-كتابخانه GPUCV



اين كتابخانه رايگان كه در پروژه‌اي به نام Vision-پردازنده‌گرافيكي در دانشگاه ريمز فرانسه توسعه يافته است، جهت پياده‌سازي عملگر‌هاي الگوريتم‌هاي بينايي‌ماشين بر روي پردازنده‌گرافيكي ايجاد شده و به عنوان نسخه الحاقي كتابخانه معروف Intel OpenCV عمل مي‌كند.

جهت پياده‌ سازي يك الگوريتم بينايي‌ماشين GPUCV محيط برنامه‌نويسي مشابه OpenCV را در اختيار برنامه‌نويسان قرار مي‌دهد تا به سادگي بتوانند با تغيير نام عملگر‌ها و عملوند‌هاي خود الگوريتم را در حداقل زمان از بارپردازشي پردازنده‌مركزي به پردازنده‌گرافيكي منتقل كنند. بنابراين براي كاركردن با اين كتابخانه، نيازي به فراگيري دستورات API گرافيكي و مراجع سايه‌زن‌هاي كارت گرافيك نيست و GPUCV‌ توانسته جزئيات گرافيكي برنامه‌نويسي پردازنده‌گرافيكي را از ديد برنامه‌نويسان پهنان سازد.

توابع عملياتي GPUCV همانند عملگرهاي OpenCV فراخواني شده و از ساختمان داده مشابهي بهره مي‌برند به همين خاطر مي‌توان الگوريتم تركيبي را از عملگر‌هاي GPUCV و OpenCV توسعه داد كه بسته به انتخاب برنامه‌نويس بخشي از عمليات توسط پردازنده‌مركزي و بخشي توسط پردازنده‌گرافيكي پردازش مي‌شود.

بر اساس نتايج آزمايش‌هاي صورت گرفته كارايي عملگرهاي GPUCV با عملگر‌هاي OpenCV مقايسه شده است كه در جدول شماره 1 نشان داده شده است. همانطور كه مشاهده مي‌كنيد بدون احتساب زمان Upload عملگر‌هاي GPUCV‌ حدود 5 برابر سريع‌تر از عملگر‌هاي OpenCV هستند كه اين نسبت برتري با احتساب زمان Upload به حدود 2 برابر مي‌رسد

جدول 1- مقايسه عملكرد GPUCV با OpenCV



 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
ادامه دارد
Empty spaces - what are we living for?


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

Captain II

Captain II



نماد کاربر
پست ها

825

تشکر کرده: 0 مرتبه
تشکر شده: 1 مرتبه
تاريخ عضويت

جمعه 20 مرداد 1385 08:45

محل سکونت

pejman.daie@gmail.com

آرشيو سپاس: 19 مرتبه در 15 پست

توسط pejman » يکشنبه 15 مهر 1386 20:32

سخن آخر

در آينده نه‌چندان دور GPGPU‌ يكي ديگر از تكنولوژي‌هاي موفقي خواهد بود كه در پس زمينه بازار چند بيليون دلاري سرگرمي و بازي‌هاي كامپيوتري متولد شده است. اين تكنولوژي هنوز به بلوغ كامل نرسيده و بيشتر در پروژه‌ها و تحقيقات آكادميك به كار گرفته‌ مي‌شود، اما پيش‌بيني فراگير شدن آن دور از تصور نيست.



در آينده نزديك اگر كامپيوتر شما مجهز به يك كارت گرافيك قدرتمند نباشد نه تنها از بازي‌كردن بازي‌هاي جذاب نسل آينده محروم خواهيد شد بلكه ممكن است نتوانيد يك فيلم با كيفيت يا حتي يك برنامه علمي را اجرا كنيد. با فراگير شدن نسبي اين تكنولوژي، نه تنها ساختار نرم‌افزارها بلكه معماري پردازنده‌مركزي ها نيز متحول خواهد شد، پس از ادغامAMD  و ATI خبر‌هاي متعددي مبني بر ادغام پردازنده‌مركزي و پردازنده‌گرافيكي و معماري يك‌پارچه‌اي به نام Fusion جهت استفاده از مزاياي GPGPU منتشر شده است.



استقبال از اين تكنولوژي جديد توسط محافل علمي و آكادميك جهت توسعه علوم‌ آن كاملا آينده‌نگرانه است، هم اكنون دانشگاه‌هاي معدودي در دنيا بر روي اين تكنولوژي سرمايه گذاري كرده‌اند و هم‌وطنان ما در اكثر گروه‌هاي تحقيقاتي اين حوزه حضور دارند، با اين فرض مي‌توان گفت كه زمينه بسيار مساعدي جهت توسعه علوم كامپيوتر و سهيم دانستن خود در تكنولوژي‌هاي نسل آينده كامپيوترها براي ما به وجود آمده است.


منبع سایت :  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
Empty spaces - what are we living for?


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


 


  • موضوعات مشابه
    پاسخ ها
    بازديدها
    آخرين پست

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 5 مهمان