سؤال

لقد بدأت العمل على GPGPU منذ بضعة أيام ، ونجحت في تنفيذ عوامل Cholesky من خلال أداء جيد وحضرت مؤتمرًا حول الحوسبة عالية الأداء حيث قال بعض الناس أن "GPGPU هو اختراق".

ما زلت في حيرة من أمري ماذا يعني ذلك ولماذا كانوا يقولون ذلك. قال أحدهم إن هذا هو الاختراق لأنك تقوم بتحويل مشكلتك إلى مصفوفة وتفعل العمليات عليها. لكن ما زلت أشعر بالارتباك لأن الناس يعتقدون أنه اختراق أو إذا كانت الإجابة بنعم ، فلماذا؟

هل يمكن لأي شخص مساعدتي ، لماذا أطلقوا عليه اختراق بينما لم أجد شيئًا خاطئًا في ذلك.

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

المحلول

أحد الأسباب المحتملة لمثل هذا الرأي هو أن وحدة معالجة الرسومات لم يكن مخصصًا في الأصل لحساب الأهداف العامة. كما أن برمجة وحدة معالجة الرسومات هي أقل تقليدية وأكثر صلابة ، وبالتالي فمن المرجح أن يُنظر إليها على أنها اختراق.

النقطة التي "تقوم بتحويل المشكلة إلى مصفوفة" ليست معقولة على الإطلاق. مهما كانت المهمة التي تحلها مع كتابة التعليمات البرمجية ، فأنت تختار هياكل بيانات معقولة. في حالة مصفوفات GPU من المحتمل أن تكون هياكل البيانات الأكثر منطقية وهي ليست اختراقًا ولكن مجرد خيار طبيعي لاستخدامها.

ومع ذلك ، أفترض أن الأمر يتعلق بوقت GPGPU على نطاق واسع. الناس فقط يجب أن يعتاد على الفكرة. بعد كل من يهتم أي وحدة من الكمبيوتر يدير البرنامج؟

نصائح أخرى

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

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

من الواضح أن الشخص الذي قال إنه يمكن أن يقول على وجه اليقين سبب قاله ، لكن هذا هو رأيي:

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

أما في التعليق "أنت تقوم بتحويل مشكلتك إلى مصفوفة وتفعل العمليات عليها"، أعتقد أن هذا يدل على الكثير من الجهل. جميع الحوسبة عالية الأداء تقريبًا تناسب هذا الوصف!

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

من الواضح ، هذا هو رأيي على ذلك و ymmv

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

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

لاحظ أن كلمة "اختراق" قد تحتوي على عدة معاني مختلفة:http://www.urbandictionary.com/define.php؟term=hack

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