GPU مقابل أداء وحدة المعالجة المركزية المشتركة خوارزميات [مغلقة]

StackOverflow https://stackoverflow.com/questions/1415679

  •  06-07-2019
  •  | 
  •  

سؤال

أنا مهتم لمعرفة ما إذا كان أي خوارزميات المشتركة (الفرز, البحث, الرسوم البيانية, الخ.) وقد استدار إلى OpenCL (أو أي GPU اللغة) ، و كيفية أداء يضاهي نفس الخوارزمية التي تنفذها وحدة المعالجة المركزية.أنا مهتمة بشكل خاص في النتائج (عدد).

وذلك بفضل!

هل كانت مفيدة؟

المحلول

وهناك عدد غير قليل من عينات من هذا النوع من الشيء على موقع نفيديا. نضع في اعتبارنا أن بعض الأشياء مثل الفرز تحتاج خوارزميات خاصة لالتوازي كفاءة وربما لا تكون تماما فعالة مثل خوارزمية غير مترابطة على جوهر واحد.

نصائح أخرى

وحدات معالجة الرسومات هي الأجهزة المتخصصة للغاية تهدف إلى قيام مجموعة صغيرة من المهام بشكل جيد للغاية وبشكل متوازي للغاية. وهذا هو الأساس الحسابية (واحد ولا سيما الدقة العائمة نقطة الرياضيات على الرغم من وحدات معالجة الرسومات الجديدة بشكل جيد جدا مع الدقة المزدوجة). على هذا النحو انهم مناسبة فقط لخوارزميات معينة. أنا لست متأكدا مما اذا كان الفرز يناسب هذه الفئة (في الحالة العامة على الأقل).

وتسعر الأمثلة الأكثر شيوعا من الأدوات المالية، وكميات كبيرة من الرياضيات مصفوفة وحتى <لأ href = "http://securityandthe.net/2008/10/12/russian-researchers-achieve-100-fold-increase- / "يختلط =" noreferrer "في WPA2-سرعة تكسير> هزيمة التشفير (وبالقوة الغاشمة). أن يقال، لم أجد سريع مواز باستخدام خوارزمية الهجين الفرز GPU.

وثمة مثال آخر نقلت شيوعا هو تشغيل SETI @ منزل على GPU نفيديا كنه مقارنة التفاح ل البرتقال. وحدات العمل لوحدات معالجة الرسومات مختلفة (ومحدودة للغاية) بالمقارنة مع ما وحدات المعالجة المركزية تفعل عادة.

إلقاء نظرة على التوجه:

التوجه CUDA مكتبة موازية خوارزميات مع واجهة تشبه C++ القياسية قالب مكتبة (STL).التوجه يوفر مرونة عالية المستوى واجهة GPU البرمجة أن يعزز إلى حد كبير المطور الإنتاجية.

ونكون حذرين، حذرين جدا من أي أرقام الأداء ونقلت عن GPGPU. الكثير من الناس ترغب في إضافة أرقام مثيرة للإعجاب حقا أن لا تأخذ بعين الاعتبار الوقت اللازم لنقل الحصول على البيانات المدخلة من وحدة المعالجة المركزية إلى GPU وإخراج البيانات مرة أخرى، وكلا تخطى عقبة بكيي.

يجب أن يكون

صورة تغيير حجم مشترك على العديد من المواقع التي تقبل تحميل صورة.

وتغيير حجم 2600ish س صورة 2000ish 2MB الحياة السياسية في فرنسا (ل512x512) تولى 23.5 ميلي ثانية في C # مع خيارات لجودة أدنى المطلقة وأقرب أخذ العينات جار. وقد graphics.DrawImage() مستعملة وظيفة واحدة على أساس. كان استخدام وحدة المعالجة المركزية أيضا٪ 21.5.

والحصول على "رغبا بايت مجموعة" استخراج على C # الجانبية وإرساله إلى GPU وتغيير حجم في GPU والحصول على النتائج مرة أخرى إلى صورة أخذت 6.3 ميلي ثانية وكان استخدام وحدة المعالجة المركزية٪ 12.7. وقد تم ذلك مع٪ 55 أرخص الجرافيك مع النوى فقط 320.

وفقط 3.73X مضاعف تسريع.

ووالحد من العوامل هنا كان، وإرسال البيانات RGB 20MB استخراج (الحياة السياسية في فرنسا هو الوحيد 2MB!) إلى GPU. كان ذلك وقتا طويلا جزء ما يقرب من٪ 90 من الوقت الإجمالي، بما في ذلك استخراج C # الجانب صفيف بايت! لذلك أنا تحزر سيكون هناك حوالي 30X تسريع على الأقل إذا كان يمكن القيام به جزء الاستخراج في GPU أيضا.

و30X ليست سيئة.

وثم هل يمكن أن خط أنابيب طبقة استخراج مع طبقة تغيير حجم لإخفاء ذاكرة نسخة الكمون للحصول على المزيد من السرعة! هذا يمكن أن يكون 40X-50X.

وثم زيادة نوعية أخذ العينات (مثل bicubic بدلا من أقرب جار)، لديك المزيد من المزايا في الجانب GPU. إضافة فلتر التمويه 5X5 فقط إضافة 0.77 milliseonds. أن وحدة المعالجة المركزية الحصول على بعض الوقت العالي على أعلى من ذلك، خاصة إذا كانت المعلمات جاوس حاجة تختلف عن C # .NET التنفيذ.


وحتى لو كنت غير راض عن نسبة تسريع، تفريغ لGPU وجود "الأساسية الحر" على وحدة المعالجة المركزية لا يزال مفيدا لدفع المزيد من العمل لذلك الخادم.

والآن إضافة حقيقة مستويات استهلاك الطاقة GPU (30W مقابل 125W في هذا المثال)، فمن أكثر فائدة بكثير.


وحدة المعالجة المركزية لا يمكن ان يفوز في

 C[i]=A[i]+B[i]

والمعايير عند تشغيل كلا الجانبين على رموز الوجه الأمثل، ويمكنك الاستمرار في تفريغ نصف صفائف إلى GPU والانتهاء بشكل أسرع باستخدام CPU + GPU في نفس الوقت.


لا بنيت GPU لأعمال غير موحدة. وحدات معالجة الرسومات لديها خطوط أنابيب عميقة واقفا حتى يصل بعد المماطلة بسبب المتفرعة، يستغرق وقتا طويلا. أيضا نوع SIMD قوات الأجهزة أن تفعل الشيء نفسه على كل workitems على ذلك. عندما يقوم workitem شيء مختلف من المجموعة، فإنه يفقد تتبع ويضيف فقاعات في خط أنابيب SIMD كله أو ببساطة البعض الآخر الانتظار لنقطة متزامنة. لذا يؤثر brancing المنطقتين خط أنابيب عميقة وواسعة وجعلها أكثر أبطأ من وحدة المعالجة المركزية في ظروف فوضوية تماما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top