واحد پردازش گرافیکی (به انگلیسی: Graphics processing unit) یا به اختصار GPU
امروزه پردازندههاي گرافيكي كه بر روي كارتگرافيكهاي گرانقيمت نصب ميشوند توان پردازشي خارقالعادهاي را نسبت به پردازندههاي مركزي ارائه ميدهند، اين موضوع موجب گسترش كاربردهاي اين پردازندهها در حوزههايي فراتر از بازيهاي كامپيوتري گشته است، پردازندههاي گرافيكي مدرن با معماري موازي خود پردازندههاي بسيار سريعي به شمار ميروند، در عين حال با قيمت و توان مصرفي كمتري عرضه ميشوند و جهت پيادهسازي الگوريتمها و برنامه هاي بينايي ماشين و پردازش تصوير كه بار پردازشي زيادي را جهت رسيدن به نرخ فريم بيشتر طلب ميكنند، يك راهكار اقتصادي و كارآمد به شمار ميرود، طوري كه برنامه نويس بدون نياز به فراگيري واسطهاي برنامه نويسي گرافيكي به كمك كتابخانههاي موجود براي اينكار ميتواند بار پردازشي برنامه خود را به سادگي از پردازنده مركزي به پردازنده گرافيكي منتقل كند.
مقدمه
اشتياق فراوان طرفداران بازيهاي كامپيوتري به بازيهاي زيبا و طبيعيتر، موجب بهوجود آمدن تحولات متعددي در كارتگرافيكها و فنآوريهاي وابسته به آن شده به طوري كه كارتگرافيكهاي مدرن ميتوانند به درمان سرطان كمك كنند! زمين لرزه برزگي در شهر سانفرانسيسكو را پيشبيني كنند و با فراهم آوردن توان پردازشي خارقالعاده، مسائل بسيار پيچيده محاسباتي و رياضي را به سادگي حل كنند. آيا تا كنون به اين موضوع فكر كردهايد كه كارتگرافيكهاي چندصد هزار توماني به غير از بازيهاي كامپيوتري در چه كاربردهاي ديگري به درد ميخورد؟
سالها است كه افزايش روز افزون عملكرد كارتگرافيكها، محققين را به فكر بهرهگيري از توان پردازشي آنها در كاربردهاي غيرگرافيكي انداخته است. در همين راستا شاخه جديدي در علوم كامپيوتر به نام GPGPU ايجاد گشته كه هدف نهايي فعالان اين عرصه بهرهگيري از كارتگرافيك به عنوان يك كمك پردازنده محاسباتي در برنامههاي غيرگرافيكي و برنامههاي عمومي است.
در همايش SuperComputing 2006 كه در شهر Tampa ايالت فلوريدا برگزار شد، محققين دانشگاه كارولينا نتايج آزمايشهاي گسترده خود را در مورد مقايسه عملكرد پردازندهگرافيكي(GPU) با پردازندهمركزي (CPU) منتشر كردند، پردازندهگرافيكي، نوعي پردازنده موازي است كه بر روي كارت گرافيكها قرار دارد (شكل 1). اين پردازنده به صورت كاملا اختصاصي براي پردازش گرافيكي محيطهاي سهبعدي و بازيهاي كامپيوتري طراحي شده است كه طي سالهاي گذشته توسط صنعت چند بيليون دلاري بازيهاي كامپيوتري آن چنان تحول يافته كه امروزه از نظر كارايي با پردازندهمركزي كه يك پردازنده همه منظوره به شمار ميرود رقابت ميكند. بكار گيري پردازندهگرافيكي در محاسبات عمومي جايگاه جديدي براي كارتگرافيكهاي قدرتمند ايجاد كرده است، جايي كه از پردازندهگرافيكي ديگر براي پردازش محاسبات گرافيكي بازيهايكامپيوتري استفاده نميشود، در عوض در نقش يك پردازنده كمكي، بخشي يا تمامي بار محاسباتي پردازندهمركزي را تقبل كرده و به عمليات پردازش سرعت ميبخشد.
واحد پردازش گرافیکی (به انگلیسی: Graphics processing unit) یا به اختصار GPU ابزاری اختصاصی برای رندر کردن گرافیکی (به طور طبیعی به نظر رسیدن تصویر) در کامپیوترهای شخصی، ایستگاههای کاری، و یا در کنسولهای بازی است. این واحد گاهی اوقات واحد پردازندهٔ بصری یا VPU نیز نامیده میشود. ویژگیهای واحدهای پردازش مرکزی جدید برای پردازش و ارائه دادن کارهای دیداری (گرافیکی)، آنها را بسیار کارآمدتر از واحدهای پردازندهٔ مرکزی یا CPU در پردازش الگوریتمهای پیجید کرده است.
یک GPU معمولاً بر روی کارتهای گرافیکی قرارمی گیرد، اگرچه کارتهای گرافیکی غیر حرفهای مستقیما بر روی بُرد مادر (OnBorad) قرار میگیرند.
GPU ابزاری است شامل تعدادی عملگر ابتدایی گرافیکی، که باعث میشود نسبت به CPU در خلق تصاویر بر صفحه نمایشگر بسیار سریعتر عمل کنند.
رایج ترین عملگرها برای گرافیک دو بعدی کامپیوترها شامل عملگر BitBLT است که معمولاً در سخت افزارهای مخصوص یک "Biltter" نامیده میشود. این عملگرها برای کشیدن مستطیل، مثلث، دایره و قوس بکار میروند. پردازندههای گرافیکی جدید، پردازش گرافیک سه بعدی را نیز در رایانهها انجام میدهند.
شتاب دهنده ی گرافیکی
* یک واحد پردازش گرافیکی، پردازشگری است که به کارت گرافیکی الحاق شده است تا عملیات ممیز شناورو اعمال مشابه با آن را انجام دهد.
* یک شتاب دهنده گرافیکی از اتصال چندین ریزتراشه جاوی عملگرهای ریاضی ویژه ی رندر کردن گرافیکی را مورد استفاده قرار می دهد.
دهه 1970
تراشه هایANTIC و CTIA امکان کنترل سخت افزاری حالات گرافیکی و متنی و سایر تاثیرات را بر روی آتاری 8-بیتی را فراهم می کردند.تراشه ی ANTIC پرداشگری مخصوص برای نگاشت(در جالت برنامه نویسی) متن و داده ی گرافیکی به خروجی تصویری بود. طراح تراشه ANTIC جی مینر، طراحی تراشه ی گرافیکی را برای کمودور آمیگا نیز بر عهده داشت.[۱]
دهه 1980
کمودور آمیگا اولین وسیلهٔ پرفروش رایانهای بود که شامل یک biltter در قسمت سخت افزار گرافیکی خود بود و نیزIBM ۸۵۱۴ یکی از اولین رایانه های شخصی بود که کارتی گرافیکی از نوع ۲-بعدی را شامل میشد.
آمیگا در زمان خودش بی نظیر بود چرا که یکی از خصوصیات آن، که امروزه به نام سیستم شتاب دهندهٔ گرافیکی شناخته میشود را دارا بود. تقریباً تمام بار تولید توابع گرافیکی بر عهدهٔ سخت افزار بود، به طور مثال کشیدن خط، پرکردن مساحت اشکال. یک پردازندهٔ کمکی گرافیکی نیز همراه با مجموعهٔ دستورات داخلی مخصوص به خود در این محموعه حاضر بود. تا قبل از ارایه (و حتی تا مدتی بعد بر روی اکثر سیستمها)، این CPU بود که بار تمام جنبههای گرافیکی را بر دوش داشت.[۲]
دههٔ ۱۹۹۰
در اوایل دهه ی۹۰ با رشد چشمگیر سیستم عامل مایکروسافت ویندوز، علاقهٔ فراوانی به استفاده از سرعت بیشتر و تفکیک پذیری ۲-بعدی بالاتر (bitmapped graphics) که قبلا توسط ایستگاههای کاری یونیکس و رایانههای مکینتاش شرکت اپل استفاده شده بود، ایجاد گردید. در بازار فروش، تسلط مایکروسافت به معنی تمرکز و تلاش بیشتر برروی فقط یک فاصل گرافیکی قابل برنامه نویسی بود :دستگاه میانجی گرافیکی (Graphics Device Interface).
در سال ۱۹۹۱، S۳ Graphics؛ S۳ ۸۶C۹۱۱ به عنوان اولین شتاب دهنده تک-چیپ ۲-بعدی معرفی شد.
از سال ۲۰۰۰ تا به حال
با ظهور رابط کابری DirectX نسخهٔ ۸ و توابعی مشابه بانام OpenGL، توانایی برنامه نویسی برای سایهزنی، به قابلیتهای GPU اضافه شد. هر پیکسل اکنون میتوانست توسط برنامههای کوچک که شامل اضافه شدن بافت تصویری به عنوان ورودیها، و یک برنامهٔ کوتاه توانایی پردازش هریک از مختصات سه بعدی را پیش از نمایش تصویر دارا بود .ان ویدیا بازار را با ارایهٔ اولین چیپ که توانایی سایهزنی به صورت نرم افزاری را دارا بود، در دست گرفت: جی فورس ۳ (GeForce ۳) که با نام NV۲۰ مشهور شد. در اکتبر ۲۰۰۲، شرکت ATI با معرفی Radoen ۹۷۰۰ ،با نام مستعارR۳۰۰، اولین شتابدهندهٔ دایرکت ۳بعدی نسخهٔ ۹ را معرفی کرد.
توابع مربوط به یک محاسبه
GPUهای جدید از بسیاری از ترانزیستورهایشان برای محاسبهٔ مربوط به گرافیک سه بعدی رایانهها استفاده میکنند. آنها در ابتدا برای شتاب دادن به حافظهٔ اصلی، نقشه برداری بافت ها، رندرکردن چند ظلعی های با اضلاع زیاد و به طور کلی چندگوشهها استفاده میشدند. ولی بعداً برای کارهای سختتر از جمله شتاب دادن به محاسبات هندسی مانند تبدیل رئوس از یک دستگاه مختصات به یک دستگاه مختصات دیگر استفاده شد. اخیراً با گسترش GPUها , آنها سایه زنیهای قابل برنامهریزی و رئوس و بافتهارا اداره میکنند همچنین با بسیاری از عملگرهای پشتیبانی شده توسط CPUها و الحاقی و محاسبهٔ مقادیر واسط بین دو نقطه، با تکنیک reduce aliasing) و Color Space با دقت بسیار بالا انجام میدهد.
|
پردازندهگرافيكي از پردازندهمركزي سريعتر است كه براي پردازندهمركزي نوشته ميشوند در اصل يك مدل سريال است به اين معني كه شبه كدهاي تشكيل دهنده يك برنامه به ترتيب از بالا به پايين خوانده شده و پس از ترجمه، اجرا شده و در آن به ندرت از «موازيسازي» در پردازش دادهها استفاده ميشود. چنداني براي اجراي چندين دستورالعمل مشابه را به صورت همزمان ندارد. در حالي كه مدل برنامهنويسي برنامههاي پردازندهگرافيكي كه Stream نام دارد، در اصل يك مدل موازي است و قابليت بهره گيري از تكنيكهاي «موازيسازي» در آن گنجانده شده است، هرچند پردازندهمركزيهاي جديد با قابليتهايي نظير HyperThreading، SSE ، 3D Now و بكارگيري معماريهاي چندهستهاي نويد «موازيسازي» بيشتر را ميدهند، اما نرخ موازيسازي آنها بسيار كمتر از يك پردازندهگرافيكي با 320 واحد پردازشي است. كه نياز به دسترسي به حافظه با تاخير كم دارند بهينه شده است نه براي برنامههايي كه به پهناي باند حافظه وسيعي نياز دارند، با توجه به مدل برنامه نويسي سريال پردازندهمركزي، بخشهاي يك برنامه بايد مرجعهاي حافظه را براي به جريان افتادن قسمت بعدي برنامه، به سرعت برگردانند كه لازمه اين امر تاخير كم در دسترسي به حافظه است، به همين دليل در سلسله مراتب حافظهي پردازندهمركزي چندين لايه حافظه نهان گنجانده شده تا اين تاخير را به حداقل برساند. ميشوند، پهناي باند دسترسي به حافظه گستردهتر اهميت بيشتري نسبت به تاخير دسترسي به حافظه دارد، چرا كه در اين مدل، برنامههاي پردازندهگرافيكي به صورت موازي اجرا شده و وابستگي چنداني ميان آنها وجود ندارد. به همين دليل برنامههايي كه نياز به پهنايباند حافظه زيادي دارند، با پردازندهگرافيكي سريع از پردازندهمركزي اجرا ميشوند. با آن انجام داد اما پردازندهگرافيكي يك پردازنده كاملا اختصاصي است كه ويژه پردازش گرافيكي طراحي شده، به همين دليل در مدل برنامه نويسي Stream دنيايي از محدوديتها وجود دارد و در مقابل آن دنيايي ديگري از ترفندها ايجاد شده كه به برنامه نويس امكان اجراي يك برنامه غيرگرافيكي به كمك پردازندهگرافيكي را ميدهد. اين محدوديتها موجب شده اند تا GPGPU تنها در شاخههاي خاصي از علوم كاربرد پيدا كند كه بررسي تك تك اين عوامل خارج از حوصله اين مقاله است ابزارهاي برنامهنويسي GPGPU ميكند و كليه ابزارهاي برنامهنويسي اين حوزه از جمله مشتقهاي آن به شمار ميروند و به نوعي گرامر و دستورات اصلي آن را با خود به همراه دارند. به طور كلي براي برنامهنويسي GPGPU سه روش وجود دارد كه به ترتيب به آنها اشاره ميكنيم: معنا كه برنامه نويس با فرض آشنا بودن به يكي از API هاي گرافيكي مانند DirectX يا OpenGL و در نظر گرفتن تمامي محدوديتهاي موجود در مدل برنامه نويسي Stream ، برنامه غيرگرافيكي را به صورت گرافيكي شبيهسازي كرده و مراحل پياده سازي آن را دنبال ميكند. علاوه بر اين برنامهنويس ميتواند در صورت آشنا بودن به زبان برنامه نويسي Cg كه توسط شركت NVIDIA توسعه داده شده است، برنامه غيرگرافيكي خود را در اين محيط توسعه دهد. لازمه اين روش آشنايي كامل با محيط برنامهنويسي گرافيكي و محدوديتهاي برنامهنويسي GPGPU ميباشد به همين دليل برنامهنويس بيشتر بايد بر روي نحوه پيادهسازي و مرتفعكردن محدوديتها تمركز داشته باشد تا بر روي الگوريتمهاي برنامه خود. دليل زبانهاي برنامه نويسي خاص GPGPU ابداع شده اند كه با در نظر گرفتن محدوديتهاي مدل برنامهنويسي Stream به برنامهنويس امكان ميدهند تا تمركز بيشتري بر روي الگوريتمهاي برنامه خود داشته باشد، همچنين اين زبانها تعامل مستقيم برنامهنويس با APIگرافيكي را از بين بردهاند و برنامهنويس نيازي به آشنايي با آنها جهت پيادهسازي برنامه خود ندارد. تا كنون دو زبان برنامه نويسي GPGPU معرفي شده كه اين دو زبان عبارتند از Brook و Sh. زبانهاي برنامه نويسي GPGPU به شمار ميرود كه در نسخه بهينه شده برنامه Folding@Home براي پردازندهگرافيكيها نيز از آن بهره گرفته شده است. زبان برنامهنويسي Sh نيز توسط تيم دانشگاه واترلو توسعه يافته و تا كنون پروژههاي زيادي با آن اجرا شده است. علاوه بر اين كتابخانههاي متعددي وجود دارند كه امكان برنامه نويسي GPGPU را در پلتفورم .Net يا VC++ 6.0 فراهم كردهاند از جمله معروفترين اين كتابخانهها، Accelerator نام دارد كه توسط مايكروسافت توسعه يافته است. آنها مي توان به GPUCV و OpenVIDIA اشاره كرد. به كمك اين كتابخانهها ميتوان الگوريتمهاي پردازش تصوير و بيناييماشين را جهت پردازش توسط پردازندهگرافيكي توسعه داد. پلتفورمهاي تجاري ارائه شده كه نويد برنامهنويسي سادهتر نه تنها براي پردازندهگرافيكي بلكه به صورت كلي براي پردازندههاي پرسرعت با قابليت موازيسازي نظير پردازنده Cell را ميدهند. از اين دسته دو پلتفورم PeakStream و RapidMind را ميتوان نام برد، برخلاف PeakStream كه نسخه تجاري آن عرضه شده است، RapidMind هنوز در مراحل آزمايشي به سر ميبرد. پردازش ميشوند به صورت مختصر در ابتداي مقاله توضيح داده شد نمونهاي از اين كاربردها كه تاكنون صورت گرفته عبارتند از : بهرهگيري از قابليتهاي پردازندهگرافيكي در الگوريتمهاي بينايي ماشين و پردازش تصوير جهت دستيابي به سه هدف كلي مطرح شده است، هدف اول نائل شدن به عملكرد Real-Time بدون نياز به كاهش پيچيدگي الگوريتم است، هدف دوم كاهش باركاري پردازنده مركزي از عمليات پردازشي الگوريتمهاي بينايي ماشين و اختصاص آن به ساير برنامهها مي باشد و هدف سوم نيز افزايش سرعت محاسبات برنامههاي پردازش تصوير به كمك يك راهكار به صرفه اقتصادي است. گرافيكي در كاربردهاي متداول خود موظف به ترسيم تصوير سه بعدي بر مبناي دادههاي عددي و آناليزهاي رياضي توصيف كننده آن تصوير ميباشد در حالي كه در كاربردهاي بينايي ماشين، تصوير يا بخشي از يك فريم به پردازنده گرافيكي داده ميشود تا از آن آناليزهاي عددي استخراج شود. به همين خاطر الگوريتمهاي بينايي ماشين و پردازش تصوير نسبت به الگوريتمهاي گرافيك كامپيوتري ، به طور معكوس از سختافزار گرافيكي استفاده ميكنند. ، دقت لازم جهت پيادهسازي الگوريتمهاي دقيق پردازش تصوير فراهم گشته است لذا از نظر دقت عملكرد نميتوان تفاوتي ميان آن با پيادهسازيهاي متداول الگوريتمهاي پردازش تصوير بر روي پردازندهمركزي مشاهده كرد. از نيل به اهداف ذكر شده ميشوند از جمله اين عوامل ميتوان به پهناي باند محدود ميان حافظه اصلي و كارتگرافيك كامپيوتر اشاره كرد. شود، از حافظه اصلي كامپيوتر به حافظه كارت گرافيك منتقل ميشود (Download) و پس از اجراي عمليات پردازش، نتايج كار ميبايست از حافظه كارتگرافيك مجددا به حافظه اصلي بازگردد (Upload). تدبير نشده است اما عمليات Download به كمك DMA كمي تسريع بخشيده ميشود. كارتگرافيك آنقدر زمان سپري شود كه مزيتهاي پردازش سريع دادهها توسط پردازندهگرافيكي تباه سازد. به همين خاطر پيشنهاد داده ميشود از فراخواني بخشهايي از فريم كه در الگوريتم پردازش تصوير به كار گرفته نميشوند خود داري شده تاحجم داده مبادله شده ميان حافظه اصلي وحافظه كارتگرافيك محدود گردد. کتابخانه OpenVIDIA و GPUCV
تصوير بر روي پردازندهگرافيكي نگاشته شده است. اين كتابخانه با استفاده از API گرافيكي OpenGL و زبان Cg توسعه داده شده است و در سال 2005 برنده جايزه نرمافزار چندرسانهاي متنباز گشته. كه در آن الگوريتمهاي متداول پردازش تصوير مانند فيلترهاي يافتن لبه ، قابل استفاده ميباشد. ميتوان آن را راهكار اقتصادي مناسبي جهت ايجاد يك ماشين پردازش تصوير قدرتمند بيان كرد . لذا برنامه نويس نياز دارد تا جهت مقدار دهي به توابع گرافيكي به كارگرفته شده و بافرهاي مورد نياز، خود را اندكي درگير API گرافيكي كند.
است، جهت پيادهسازي عملگرهاي الگوريتمهاي بيناييماشين بر روي پردازندهگرافيكي ايجاد شده و به عنوان نسخه الحاقي كتابخانه معروف Intel OpenCV عمل ميكند. برنامهنويسان قرار ميدهد تا به سادگي بتوانند با تغيير نام عملگرها و عملوندهاي خود الگوريتم را در حداقل زمان از بارپردازشي پردازندهمركزي به پردازندهگرافيكي منتقل كنند. بنابراين براي كاركردن با اين كتابخانه، نيازي به فراگيري دستورات API گرافيكي و مراجع سايهزنهاي كارت گرافيك نيست و GPUCV توانسته جزئيات گرافيكي برنامهنويسي پردازندهگرافيكي را از ديد برنامهنويسان پهنان سازد. ميبرند به همين خاطر ميتوان الگوريتم تركيبي را از عملگرهاي GPUCV و OpenCV توسعه داد كه بسته به انتخاب برنامهنويس بخشي از عمليات توسط پردازندهمركزي و بخشي توسط پردازندهگرافيكي پردازش ميشود.بر اساس نتايج آزمايشهاي صورت گرفته كارايي عملگرهاي GPUCV با عملگرهاي OpenCV مقايسه شده است كه در جدول شماره 1 نشان داده شده است. همانطور كه مشاهده ميكنيد بدون احتساب زمان Upload عملگرهاي GPUCV حدود 5 برابر سريعتر از عملگرهاي OpenCV هستند كه اين نسبت برتري با احتساب زمان Upload به حدود 2 برابر ميرسد. بيليون دلاري سرگرمي و بازيهاي كامپيوتري متولد شده است. اين تكنولوژي هنوز به بلوغ كامل نرسيده و بيشتر در پروژهها و تحقيقات آكادميك به كار گرفته ميشود، اما پيشبيني فراگير شدن آن دور از تصور نيست. جذاب نسل آينده محروم خواهيد شد بلكه ممكن است نتوانيد يك فيلم با كيفيت يا حتي يك برنامه علمي را اجرا كنيد. با فراگير شدن نسبي اين تكنولوژي، نه تنها ساختار نرمافزارها بلكه معماري پردازندهمركزي ها نيز متحول خواهد شد، پس از ادغامAMD و ATI خبرهاي متعددي مبني بر ادغام پردازندهمركزي و پردازندهگرافيكي و معماري يكپارچهاي به نام Fusion جهت استفاده از مزاياي GPGPU منتشر شده است. است، هم اكنون دانشگاههاي معدودي در دنيا بر روي اين تكنولوژي سرمايه گذاري كردهاند و هموطنان ما در اكثر گروههاي تحقيقاتي اين حوزه حضور دارند، با اين فرض ميتوان گفت كه زمينه بسيار مساعدي جهت توسعه علوم كامپيوتر و سهيم دانستن خود در تكنولوژيهاي نسل آينده كامپيوترها براي ما به وجود آمده است |