راه سبز

شتاب دهي به محاسبات با كمك پردازنده گرافيكي

اگر مطالعاتي در زمينه كارتهاي گرافيكي داشته باشيد حتماً فهميده ايد دو مفهوم محاسبات موازي (Parallel Computing) و محاسبات ناهمگن (Heterogeneous Computing) مورد توجه زيادي قرار گرفته اند؛ اين اصطلاحات چيزي جز قسمتي از انقلاب در حال شكل در صنعت سخت افزار كامپيوتر نيستند. تكنولوژي ساخت قطعات كامپيوتر در حال حركت به سمتي است كه به جاي توليد قطعات با استفاده هاي تك منظوره ، بهره وري از آنها را افزايش داده و آنها را در زمينه هاي مختلفي قابل استفاده مي كند.

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

محاسبات ناهمگن چيست؟

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

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

دسته بندي نرم افزارهاي از نظر نوع محاسبات

نرم افزارهاي بسيار كمي هستند كه در ساختار آن ها به طور محض از محاسبات سري يا محاسبات موازي استفاده شده باشد اكثر نرم افزارها تركيبي از اين دو نوع محاسبات را دربردارند.

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

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

CUDA چيست؟

ايده اي كه انويديا براي انجام محاسبات موازي پردازنده گرافيكي خود معرفي كرده است معماري CUDA (Compute Unfiled Device Architecture) است.  در واقع CUDA يك موتور محاسبات گرافيكي انويديا است كه به طراحان نرم افزارها و برنامه نويس ها اين امكان را مي دهد تا در زبان هاي برنامه نويسي استاندارد و مورد استفاده در صنعت ، از قدرت پردازش موازي اين پردازنده هاي گرافيكي استفاده كنند. پردازنده هاي گرافيكي جديد داراي تعداد زيادي واحدهاي محاسباتي (Core) هستند. CUDA مي تواند پردازش هاي موازي را بين اين واحد ها تقسيم كند تا به طور همزمان و با سرعت بسيار بالاتري پردازش شوند.

CUDA از زبان برنامه نويسي C و همچنين C++ استفاده مي كند. انويديا براي CUDA يك كامپايلر جديد در نظر گرفته تا الگوريتم ها را براي اجرا روي پردازنده گرافيكي و پردازنده مركزي سيستم ، كدگذاري كند. طراحي CUDA به گونه اي است كه از تمام رابط هاي استاندارد جديد و آزاد ديگر همانند OpenGL و DirectX 11 پشتيباني مي كند.

براي استفاده از CUDA در محيط برنامه نويسي C ،‌ تنها بايد الحاقي هاي (Extension) مربوط به آن را نصب كنيد.

كارت هاي گرافيكي سازگار با CUDA

تمام كارت هاي گرافيكي سري 8 و بعد از آن ، با CUDA سازگار هستند اين پردازنده ها شامل محصولات سري جيفورس ،‌Quadro و Tesla خواهند بود. اين بدين معناست كه حتي جيفورس هاي موبايل و تراشه هاي مجتمع مادربرد(مثل MGPU هاي جيفورس 8000 و 9000) نيز چنين قابليتي دارند. در واقع ، CUDA با تمام پردازنده هاي گرافيكي از مهندسي واحدهاي سايه زني يكپارچه بهره مي برند ، كار مي كند. انويديا اعلام كرده نرم افزارهايي كه براي جيفورس سري 8 توسعه بافته اند روي محصولات جديد تر اين شركت نيز بدون هيچ مشكلي كار خواهند كرد . اين به اين معناست كه از اين پس در پردازنده هاي گرافيكي جديد ساخت انويديا شاهد CUDA به عنوان يك قابليت معمولي خواهيم بود.

برخي از نرم افزار ها براي كار با CUDA به حداقل 256 مگابايت حافظه گرافيكي نياز دارند؛ چنانچه حافظه كارت گرافيكي سيستم شما براي كار با چنين نرم افزارهايي كمتر از اين مقدار باشد به احتمال زياد در عملكرد CUDA با مشكلاتي مواجه خواهيد شد. بنابراين بهتر است كارت گرافيكي انتخابي حداقل 256 مگابايت حافظه داشته باشد تا CUDA نيز به راحتي قابل استفاده باشد. البته اين مقدار حافظه گرافيكي براي كارت هاي گرافيكي انويديا به عنوان يك قابليت معمولي به حساب مي آيد و كمتر كارتي از محصولات اين شركت است كه كمتر از اين مقدار حافظه داشته باشد.

جديدترين درايورهاي شركت انويديا (Forceware) ، تمام اجزاي لازم براي CUDA را در اختيار دارند.

CUDA رابط برنامه نويسي (API) را هم در سطح بالا و هم در سطح پايين فراهم مي كند. تا كنون ، رابط هاي برنامه نويسي براي CUDA براي سيستم عامل هاي ويندوز ، لينوكس و MAC عرضه شده است .

تفاوت GPGPU و CUDA

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

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

GPGPU از رابط برنامه نويس گرافيكي مثل DirectX و OpenGL براي محاسبات استفاده مي كند. اين تكنيك نيازمند تسلط روي جزئيات رابط هاي برنامه نويسي گرافيكي و سخت افزار هاي گرافيكي بوده و استفاده از آن به سادگي استفاده از CUDA نيست. در واقع در اين تكنيك بايد الگوريتم ها را به مفاهيم گرافيكي تبديل كرد تا بتوان آنها را روي پردازنده گرافيكي پياده كرد.

همانطور كه قبلاً اشاره شد CUDA از يك زبان برنامه نويسي شبيه C استفاده مي كند و هر كسي كه با اين زبان برنامه نويسي آشنايي داشته باشد مي تواند از آن استفاده كند؛ CUDA نيازي به دانستن رابط هاي برنامه نويسي گرافيكي ندارد. در كنار اين ها CUDA به لحاظ چگونگي استفاده از سخت افزار گرافيكي و شيوه اجراي محاسبات نيز برتري هاي زيادي بر GPGPU دارد.

كاربردهاي CUDA

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

تاكنون كارهاي زيادي در مورد به كارگيري CUDA در كاربردهاي مختلف چه در سطح آكادميك و چه در مقياس عملي صورت گرفته است.

شبيه سازي ديناميك مولكولي (MD) يك از زمينه هايي است كه استفاده از پردازنده گرافيكي و CUDA ، كمك زيادي به انجام سريع تر محاسبات كرده است ؛ برخي شبيه سازها كه در اين زمينه وجود دارند نظير (NAMD) امكان اجراي محاسبات به صورت موازي را دارند. كارهاي انجام شده در اين قسمت نشان مي دهد كه CUDA در برخي شرايط ، سرعت شبيه سازي را تا 100 برابر افزايش داده است ، اين در حالي است كه تاكنون نه تنها در اين زمينه بلكه در اكثر زمينه هاي علمي براي بالا بردن سرعت محاسبات از تعداد زيادي پردازنده استفاده مي شده است. به كارگيري يك كارت گرافيكي جيفورس GTX280 مي تواند در اين گونه پردازش ها جايگزين تعداد بسيار زيادي پردازنده شود.

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

در بخش پرطرفدار رمزگذاري محتواي ويدئويي ، نسخه هاي جديد دو نرم افزار معروف BadeBoom و Xpress TMPGEnc از كارت هاي گرافيكي سازگار با CUDA پشتيباني مي كنند. با فعال كردن CUDA در اين نرم افزار ها سرعت رمزگذاري حتي تا 500 نيز افزايش يافته است.

تاثير پردازنده گرافيكي در دنياي واقعي

ما از بين پردازش هاي انجام شده روي تاثير استفاده از پردازنده گرافيكي در بالا بردن سرعت محاسبات نتايج چند مورد كاربردي تر را در نمودارها آورده ايم. در اين آزمايش ها كارت جيفورس GTX280 به عنوان سريع ترين محصول سازگار با CUDA در زمان عرضه اش با پردازنده ها كارت هاي گرافيكي مختلفي مقايسه شده است.

براي رمزگذاري محتواي ويدئويي يك قطعه ويدئويي به مدت 110 ثانيه انتخاب شده است. اين عمليات با يك چهارهسته Core 2 Quad در فركانس 3 گيگاهرتز ،‌ 231 ثانيه زمان برده است ، در حاليكه با فعال كردن CUDA و استفاده از پردازنده گرافيكي جيفورس GTX280 تنها 21 ثانيه طول كشيده است.

پردازنده هاي جيفورس سري 8 و جديدتر كه با CUDA سازگار هستند محاسبات فيزيك را در داخل خود انجام مي دهند؛ به همين دليل سيستمي كه از كارت ها جيفورس GTX280 بهره برده است اين نوع محاسبات را نسبت به سيستمي كه كارت گرافيكي سازگار با CUDA ندارد و محاسبات فوق را با چهار هسته اي Core 2 Quad Q6600 انجام مي دهد ، با شتاب بيشتري به پايان مي رساند.

به كارگيري موتور پردازشي PhysX روي پردازنده گرافيكي ، سرعت انجام اين محاسبات را به طور متوسط 11 برابر نسبت به چهار هسته اي Q6600 افزايش داده است.

انجام محاسبات فيزيك روي پردازنده چهار هسته اي Q6600 در مقايسه با پردازنده

گرافيكي GTX280 ، واحدها بر حسب فريم در ثانيه ، بيشتر = بهتر

نوع شبيه سازي

Core 2 Quad Q6600

(CPU)

GeForce GTX280

(GPU)

شبيه سازي سيال

3

39

شبيه سازي ذرات

6

76

شبيه سازي اجسام مسطح

8

51

شبيه سازي پاره شدن پارچه

4

57

 

از AMD چه خبر؟

درايو كاتاليست نسخه 12/8 كه در اوايل دسامبر گذشته ميلادي منتشر شد، تكنولوژي مشابه CUDA با نام Stream را در برخي از كارت هاي گرافيكي رادئون فعال كرد. Stream همانند CUDA قابليت انجام محاسبات موازي روي پردازنده هاي گرافيكي را فراهم مي كند. اين تكنولوژي در حال حاضر با درايور مذكور روي كارت هاي رادئون سري HD4600 و HD4800 قابل استفاده است. درون كاتاليست 12/8 يك رمزگذار محتواي ويدئويي به نام ATI Avivo video converter قرار گرفت كه رمزگذاري فايل هاي ويدئويي را به كمك پردازنده گرافيكي تسريع مي بخشد . اين رمزگذار فايل هاي ويدئويي بسيار شبيه به نرم افزار BadeBoom براي كارت هاي گرافيكي جيفورس بوده ولي تفاوت بزرگي با آن دارد آن هم رايگان بودن آن است. در مورد به كارگيري تكنولوژي Stream در ساير كاربردها كارهاي زيادي همانند آنچه در مورد CUDA انجام گرفته صورت نگرفته است و به همين دليل هنوز نمي توان مقايسه درستي ميان CUDA و Stream انجام داد.

 

گزارش تخلف
بعدی