بروك جي يو
في مجال الحوسبة ، مثّلت لغة البرمجة بروك وتطبيقها بروك جي بي يو محاولات مبكرة ومؤثرة لتمكين الحوسبة للأغراض العامة على وحدات معالجة الرسومات (GPGPU). [ 1 ] [ 2 ] بروك، التي طُوّرت في مجموعة الرسومات بجامعة ستانفورد ، كانت عبارة عن مُصرّف ونظام تشغيل للغة برمجة تدفقية مصممة للاستفادة من التوازي في وحدات معالجة الرسومات مثل تلك التي تُنتجها شركتا ATI أو Nvidia .
قام برنامج BrookGPU بتجميع البرامج المكتوبة بلغة برمجة Brook stream، وهي نسخة معدلة من لغة ANSI C. ويمكنه استهداف OpenGL v1.3+، و DirectX v9+، أو تقنية Close to Metal من AMD للمعالجة الخلفية، ويعمل على كل من نظامي التشغيل Microsoft Windows و Linux . ولأغراض تصحيح الأخطاء، يمكن لبرنامج BrookGPU أيضًا محاكاة بطاقة رسومات افتراضية على وحدة المعالجة المركزية.
حالة
كان آخر إصدار تجريبي رئيسي (الإصدار 0.4) في أكتوبر 2004، ولكن تم استئناف التطوير وتوقف مرة أخرى في نوفمبر 2007 مع إصدار تجريبي 1 من الإصدار 0.5.
تتضمن الميزات الجديدة للإصدار 0.5 واجهة خلفية مُحسّنة وأسرع بكثير لـ OpenGL ، تستخدم كائنات إطار المخزن المؤقت بدلاً من PBuffers، كما تم توحيد الكود حول واجهات OpenGL القياسية بدلاً من استخدام ملحقات خاصة بالموردين. تمت إضافة دعم GLSL، مما يُتيح جميع الوظائف (التفرعات المعقدة والحلقات) التي كانت مدعومة سابقًا فقط بواسطة DirectX 9 لـ OpenGL. وبشكل خاص، هذا يعني أن Brook أصبح الآن بنفس كفاءة نظام التشغيل Windows على Linux .
وتشمل التحسينات الأخرى في سلسلة الإصدار 0.5 استخدام الواجهة الخلفية المتعددة حيث يمكن للخيوط المختلفة تشغيل برامج Brook المختلفة في وقت واحد (وبالتالي زيادة استخدام إعداد وحدة معالجة الرسومات المتعددة) ودعم SSE و OpenMP للواجهة الخلفية لوحدة المعالجة المركزية (وهذا يسمح بالاستخدام الأقصى تقريبًا لوحدات المعالجة المركزية الحديثة).
مقارنة الأداء
تُعدّ المقارنة المباشرة بين وحدات المعالجة المركزية المكتبية ووحدات معالجة الرسومات للأغراض العامة (GPGPUs) إشكالية بسبب الاختلافات الخوارزمية والهيكلية. [ 3 ]
على سبيل المثال، يمكن لمعالج Intel Core 2 Duo بتردد 2.66 جيجاهرتز إجراء عمليات حسابية تصل إلى 25 جيجا فلوب (25 مليار عملية حسابية أحادية الدقة في الثانية) عند استخدام تقنية SSE وتقنية الوصول المتدفق للذاكرة بكفاءة عالية، مما يضمن عمل مُستجلب البيانات المسبق بشكل مثالي. مع ذلك، ونظرًا لقيود طول برامج التظليل، تميل معظم نواة GPGPU إلى تنفيذ كميات صغيرة نسبيًا من العمل على كميات كبيرة من البيانات بالتوازي، لذا تكمن المشكلة الرئيسية في تنفيذ خوارزميات GPGPU مباشرةً على وحدات المعالجة المركزية المكتبية في انخفاض عرض نطاق الذاكرة بشكل كبير، حيث تقضي وحدة المعالجة المركزية معظم وقتها في انتظار الوصول إلى ذاكرة الوصول العشوائي (RAM) . على سبيل المثال، يمكن لذاكرة الوصول العشوائي ثنائية القناة PC2-6400 DDR2 نقل بيانات بسرعة 11 جيجابت/ثانية، أي ما يعادل 1.5 جيجا فلوب كحد أقصى، علمًا بأن إجمالي عرض النطاق الترددي هو 3 جيجا فلوب، ويجب قراءة البيانات وكتابتها. ونتيجة لذلك، في حال وجود قيود على عرض نطاق الذاكرة، لن تتجاوز قدرة وحدة المعالجة المركزية الخلفية في Brook 2 جيجا فلوب. في الواقع، يكون أقل من ذلك بكثير، خاصة بالنسبة لأي شيء آخر غير float4 وهو نوع البيانات الوحيد الذي يمكن تسريعه باستخدام SSE.
على بطاقة رسومات ATI HD 2900 XT (معالج بسرعة 740 ميجاهرتز وذاكرة بسرعة 1000 ميجاهرتز)، يمكن لمعالج Brook تنفيذ عمليات حسابية تصل إلى 410 جيجا فلوب باستخدام واجهة DirectX 9 الخلفية. [ 4 ] ونظرًا لقيود برنامج التشغيل ومُصرّف Cg ، فإن OpenGL حاليًا أقل كفاءة بكثير كواجهة خلفية لـ GPGPU على هذه البطاقة، لذا لا يستطيع Brook سوى إدارة 210 جيجا فلوب عند استخدام OpenGL عليها. نظريًا، يبدو هذا أسرع بحوالي عشرين مرة من وحدة المعالجة المركزية، ولكن كما ذُكر، فالأمر ليس بهذه البساطة. تعاني وحدات معالجة الرسومات حاليًا من تأخيرات كبيرة في عمليات التفرع والقراءة/الكتابة، لذا توقع حدًا أقصى معقولًا يبلغ ثلث الحد الأقصى في التطبيقات العملية - وهذا لا يزال يترك بطاقة ATI عند حوالي 125 جيجا فلوب، أي أسرع بخمس مرات تقريبًا من معالج Intel Core 2 Duo.
مع ذلك، يتجاهل هذا الجانب المهم المتمثل في نقل البيانات المراد معالجتها من وإلى وحدة معالجة الرسومات (GPU). فباستخدام واجهة PCI Express 1.0 x8، يمكن الكتابة إلى ذاكرة بطاقة ATI HD 2900 XT بسرعة 730 ميجابت/ثانية تقريبًا، والقراءة منها بسرعة 311 ميجابت/ثانية تقريبًا، وهي سرعة أبطأ بكثير من ذاكرة الحاسوب الشخصي العادية. بالنسبة لمجموعات البيانات الكبيرة، قد يقلل هذا بشكل كبير من زيادة السرعة الناتجة عن استخدام وحدة معالجة الرسومات مقارنةً بوحدة المعالجة المركزية (CPU) المُحسّنة. بالطبع، مع تطور وحدات معالجة الرسومات لتصبح أسرع بكثير من وحدات المعالجة المركزية، وتحسن واجهة PCI Express، سيصبح من المنطقي أكثر تفويض عمليات المعالجة الكبيرة إلى وحدات معالجة الرسومات.
التطبيقات والألعاب التي تستخدم BrookGPU
انظر أيضاً
مراجع
- ↑ تارديتي، ديفيد؛ بوري، سيد؛ أوغلسبي، خوسيه (2006). "المُسرِّع: استخدام التوازي في البيانات لبرمجة وحدات معالجة الرسومات للاستخدامات العامة" (ملف PDF) . أخبار هندسة الحاسوب من ACM SIGARCH . 34 (5). doi : 10.1145/1168919.1168898 .
- ↑ تشي، شواي؛ بوير، مايكل؛ مينغ، جيايوان؛ تارجان، د.؛ شيفر، جيريمي و.؛ سكادرون، كيفن (2008). "دراسة أداء التطبيقات العامة على معالجات الرسومات باستخدام CUDA". مجلة الحوسبة المتوازية والموزعة . 68 (10): 1370-1380 . doi : 10.1016/j.jpdc.2008.05.014 .
- ↑ مارزيال، لودوفيكو؛ ريتشارد، جولدن (2007)، "المعالجة المتعددة: استخدام وحدات معالجة الرسومات لزيادة أداء أدوات الطب الشرعي الرقمي" ، مجلة التحقيقات الرقمية FSI ، 4 : 73-81 ، doi : 10.1016/j.diin.2007.06.014
- ↑ باك، إيان؛ فولي، تيريزا؛ هورن، دانيال؛ سوغرمان، جيريمي؛ فتاحاليان، كيفون؛ هيوستن، مايك؛ هانراهان، بات (أغسطس 2004)، "بروك لوحدات معالجة الرسومات: الحوسبة المتدفقة على أجهزة الرسومات" ، معاملات ACM للرسومات ، 23 (3): 777-786 ، doi : 10.1145/1015706.1015800
{{citation}}: صيانة CS1: التاريخ والسنة ( رابط )
روابط خارجية
- الموقع الرسمي لجامعة ستانفورد
- GPGPU
- مكتبات GPGPU
