CUDA أو FPGA لأغراض خاصة 3D الرسومات الحسابات?

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

  •  11-07-2019
  •  | 
  •  

سؤال

انا تطوير المنتج مع 3D الرسومات الثقيلة للحسابات ، إلى حد كبير أقرب نقطة و مجموعة البحث.بعض الأجهزة الأمثل سيكون مفيدا.بينما أنا أعرف القليل عن هذا رئيسي (الذي لا يوجد لديه تجربة البرنامج) دعاة FPGA (لأنه يمكن أن تكون مصممة) ، في حين جونيور المطور دعاة GPGPU مع CUDA, لأن رخيصة, ساخنة ومفتوحة.حين أشعر عدم الحكم في هذا السؤال, وأعتقد CUDA هو الطريق للذهاب أيضا لأن أنا قلق بشأن المرونة لدينا المنتج لا يزال في إطار التنمية القوية.

لذا إعادة صياغة السؤال, هل هناك أي أسباب الذهاب FPGA ؟ أم أن هناك خيار ثالث ؟

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

المحلول

لقد حققت نفس السؤال حين يعود.بعد التحدث إلى الناس الذين عملوا على التصميم بما أن هذا هو ما تحصل عليه:

  • التصميم بما كبيرة الحقيقي ، حتى 1ms من التأخير قد تكون طويلة جدا.هذا لا ينطبق في حالة الخاصة بك ؛
  • التصميم بما يمكن أن تكون سريعة جدا ، espeically واضحا معالجة الإشارات الرقمية الأعراف (مثلا ، بيانات الرادار) ولكن الجيد منها هي أكثر تكلفة بكثير متخصص من المحترفين حتى GPGPUs;
  • التصميم بما هي مرهقة جدا على البرنامج.لأنه ليس هناك تكوين الأجهزة مكون تجميع ، يمكن أن يستغرق ساعات.يبدو أن يكون أكثر ملاءمة المهندسين الإلكترونية (الذين هم عموما هم الذين يعملون على التصميم بما) من مطوري البرمجيات.

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

وتشمل الخيارات الأخرى تحتمل من ATI ولكن حتى يحدث شيء كبير ، هو ببساطة ليس كذلك كما اعتمدت CUDA.بعد ذلك, لا يزال هناك كل HPC التقليدي الخيارات (مجموعات x86/باور/خلية) ، ولكنها كلها مكلفة جدا.

على أمل أن يساعد.

نصائح أخرى

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

أيضا قوة FPGA يمكن أن يكون أفضل (يعتمد على التطبيق الخاص بك scenarion ، أي.GPU فقط أرخص (من حيث واط/بالتخبط) عندما الحوسبة في كل وقت).

طبعا ال FPGA أيضا بعض السلبيات:IO يمكن أن تكون واحدة (لدينا هنا تطبيق كنا بحاجة 70 GB/s, أي مشكلة GPU, ولكن للحصول على هذا المبلغ من البيانات في FPGA تحتاج التقليدية تصميم أكثر دبابيس المتاحة).عيب آخر هو الوقت والمال.على FPGA هي أكثر تكلفة من أفضل الجرافيك و تطوير مرات مرتفعة جدا.

(1) Simultanously يصل من موضوع الذاكرة يجب أن تكون متتابعة عناوين.هذا هو في بعض الأحيان من الصعب حقا أن تحقيق.

وأود أن تذهب مع CUDA.
أنا أعمل في معالجة الصور و قد تحاول الأجهزة إضافات سنوات.أولا يجب i860 ، ثم تكنولوجيا المعلومات ، ثم DSP ، ثم FPGA المباشر compiliation إلى الأجهزة.
ما innevitably حدث هو أنه بحلول الوقت الذي الأجهزة لوحات حقا تصحيحه وموثوق بها رمز قد استدار لهم العادية وحدات المعالجة المركزية قد المتقدمة للتغلب عليها ، أو استضافة آلة العمارة تغيرت و لم نتمكن من استخدام لوحات قديمة أو صناع المجلس أفلست.

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

التصميم بما

  • ما تحتاج إليه:
    • تعلم VHDL/Verilog (ثق بي لن)
    • شراء الأب اختبار رخص في تركيب أدوات
    • إذا اخترت بعض جيدة إطار (لالسابقين.: RSoC)
      • تطوير تصميم ( ويمكن أن يستغرق سنوات )
    • إذا كنت لا:
      • DMA, hw سائق الترا تكلفة تركيب أدوات
      • طن من المعرفة حول الحافلات خرائط الذاكرة, hw التوليف
      • بناء hw, شراء ip النوى
      • تطوير تصميم
  • على سبيل المثال متوسط FPGA بطاقة pcie مع رقاقة Xilinx virtex-6 يكلف أكثر من 3000$
  • النتيجة:
    • إذا كنت لا تدفع من قبل الحكومة لم يكن لديك ما يكفي من الأموال.

GPGPU (CUDA/OpenCL)

  • لديك بالفعل الأب إلى اختبار.
  • مقارنة FPGA الاشياء:
    • كل شيء موثق توثيقا جيدا .
    • كل شيء رخيص
    • كل شيء يعمل
    • كل شيء على ما يرام المتكاملة لغات البرمجة
  • هناك GPU سحابة كذلك.
  • النتيجة:
    • تحتاج فقط إلى تحميل sdk و يمكنك أن تبدأ.

FPGA المستندة إلى الحل من المرجح أن يكون أكثر تكلفة من CUDA.

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

في تجربتي, أي تنفيذ ذلك في الملخص الأزياء ، أيجمعت لغة عالية المستوى مقابلآلة مستوى التنفيذ ، سيكون حتما على أداء التكاليف ، esp في خوارزمية معقدة التنفيذ.وهذا ينطبق على كل FPGA و المعالجات من أي نوع.وهو FPGA مصممة خصيصا من أجل تنفيذ خوارزمية معقدة أداء أفضل من FPGA الذي تجهيز العناصر العامة ، مما يتيح درجة من البرمجة من تحكم الإدخال سجلات البيانات i/o.... الخ

آخر العامة على سبيل المثال حيث FPGA يمكن أن يكون أعلى بكثير الأداء في تتالي العمليات فيها على مخرجات العملية تصبح مدخلات أخرى وأنها لا يمكن أن يتم في وقت واحد.المتتالية العمليات في FPGA بسيطة, و يمكن أن تقلل بشكل كبير من الذاكرة I/O متطلبات بينما المعالج الذاكرة سيتم استخدامها بشكل فعال تتالي اثنين أو أكثر من العمليات حيث توجد البيانات التبعيات.

نفس الشيء يمكن أن يقال من GPU وحدة المعالجة المركزية.خوارزميات تنفيذها في ج المنفذة على وحدة المعالجة المركزية المتقدمة دون اعتبار الملازمة خصائص الأداء من ذاكرة التخزين المؤقت الذاكرة أو الذاكرة الرئيسية النظام لن تؤدي فضلا عن تنفيذها والتي لا.منح, لا تفكر في أداء هذه الخصائص يبسط التنفيذ.ولكن في أداء التكاليف.

عدم وجود الخبرة المباشرة مع GPU, ولكن معرفة المتأصلة في نظام الذاكرة مشكلات في الأداء ، فإنه أيضا سوف تتعرض إلى مشكلات في الأداء.

هذا هو الموضوع القديم بدأت في عام 2008, ولكن سيكون من الجيد أن يروي ما حدث FPGA البرمجة منذ ذلك الحين:1.ج إلى البوابات في FPGA هو التيار الرئيسي للتنمية في العديد من شركات ضخمة مع توفير الوقت مقابلVerilog/SystemVerilog HDL.في C إلى بوابات تصميم النظام هو الجزء الصعب.2.OpenCL على FPGA هناك 4+ سنوات بما في ذلك النقطة العائمة و "سحابة" نشر بواسطة Microsoft (آشور) و "أمازون" F1 (Ryft API).مع OpenCL تصميم النظام هو سهلة نسبيا بسبب محددة بشكل جيد للغاية نموذج الذاكرة و API بين المضيف و حساب الأجهزة.

البرمجيات الناس بحاجة فقط إلى معرفة بعض الشيء عن FPGA العمارة أن تكون قادرة على أن تفعل الأشياء التي هي غير ممكن حتى مع وحدات معالجة الرسومات و وحدات المعالجة المركزية على الأسباب على حد سواء كونها ثابتة السيليكون وعدم وجود النطاق العريض (100Gb+) واجهات إلى العالم الخارجي.تقليص رقاقة الهندسة لم يعد ممكنا ولا استخراج الحرارة أكثر من واحد رقاقة حزمة دون ذوبان ، لذلك يبدو أن هذا هو نهاية الطريق بالنسبة حزمة واحدة رقائق.رسالتي هنا هي أن المستقبل ينتمي إلى البرمجة المتوازية متعددة رقاقة ونظم التصميم بما لديها فرصة كبيرة أن تكون قبل المباراة.تحقق من http://isfpga.org/ إذا كان لديك مخاوف بشأن الأداء الخ.

CUDA لديها مجموعة كبيرة إلى حد ما رمز قاعدة من الأمثلة ، SDK, ، بما في ذلك a بلاس الخلفية.حاول أن تجد بعض الأمثلة على غرار ما تقوم به ، وربما أيضا النظر في GPU الأحجار الكريمة سلسلة من الكتب ، لقياس مدى CUDA تناسب التطبيقات الخاصة بك.أنا أقول من الناحية اللوجستية وجهة نظر ، CUDA هو أسهل للعمل مع أرخص بكثير من أي محترف التنمية FPGA أدوات.

عند نقطة واحدة لم ننظر إلى CUDA المطالبة الاحتياطي نمذجة المحاكاة.هناك جيدة جدا سلسلة من المحاضرات المرتبطة خارج موقع على شبكة الانترنت من أجل التعلم.على ويندوز, كنت بحاجة للتأكد من CUDA يعمل على البطاقة لا يتم عرض الرسومات الفرعي لديه رقيب الموقت الذي سوف nuke أي عملية قيد التشغيل لأكثر من 5 ثوان.هذا لا يحدث على لينكس.

أي محسن مع اثنين من PCI-e x16 أن تدعم هذا.أنا استخدم HP XW9300 التي يمكنك التقاط قبالة موقع ئي باي بأسعار زهيدة جدا.إذا كنت تفعل, تأكد من أنه فقد اثنين من وحدة المعالجة المركزية (لا أحد ثنائي النواة وحدة المعالجة المركزية) كما PCI-e فتحات العيش منفصلة Hypertransport الحافلات تحتاج اثنين من وحدة المعالجة المركزية في الجهاز أن يكون كل الحافلات نشطة.

أنا CUDA المطور مع الصغيرات تجربة مع FPGA:s, ومع ذلك كنت أحاول العثور على مقارنات بين البلدين.

لقد أبرمت حتى الآن:

GPU لديها حتى الآن أعلى ( يسرا ) ذروة الأداء وقد أكثر ملاءمة بالتخبط/واط نسبة.أنها أرخص فمن النامية أسرع (قريبا جدا سوف يكون حرفيا "الحقيقي" TFLOP المتاحة).فمن السهل أن برنامج ( قراءة المقال على هذا ليس رأي شخصي)

علما أن أقوله حقيقي/الوصول إلى التمييز بين من الأرقام التي سوف ترى في GPGPU التجارية.

ولكن ليس gpu أكثر ملاءمة عندما تحتاج إلى القيام عشوائية بالوصول إلى البيانات.هذا نأمل أن تتغير مع الجديد Nvidia Fermi العمارة التي اختياري l1/l2 ذاكرة التخزين المؤقت.

my 2 cents

FPGA لن يكون تفضيل من قبل أولئك مع برنامج التحيز كما أنهم بحاجة إلى تعلم HDL أو على الأقل فهم systemC.

بالنسبة لأولئك مع الأجهزة التحيز FPGA سوف يكون الخيار الأول يعتبر.

في الواقع فهم راسخ من كل من هو مطلوب ثم موضوعي يمكن اتخاذ قرار.

OpenCL هي مصممة لتعمل على كل FPGA & GPU, حتى CUDA يمكن استدار إلى FPGA.

FPGA & GPU مسرعات يمكن استخدامها معا

حتى انها ليست حالة ما هو أفضل واحدة أو أخرى.هناك أيضا النقاش حول CUDA مقابل OpenCL

مرة أخرى ما لم يكن لديك الأمثل و قياس كل المحددة الخاصة بك التطبيق يمكنك أن لا تعرف مع 100 ٪ اليقين.

الكثير سوف تذهب ببساطة مع CUDA بسبب الطبيعة التجارية والموارد.الآخرين سوف تذهب مع openCL بسبب تنوعها.

ما أنت نشر ؟ من هو العميل الخاص بك ؟ حتى دون أن تعرف الإجابة على هذه الأسئلة لن استخدام FPGA إلا إذا كنت بناء نظام الوقت الحقيقي و الكهربائية/الكمبيوتر المهندسين في فريق العمل الخاص بك أن يكون لديك معرفة الأجهزة وصف لغات مثل VHDL و Verilog.هناك الكثير و يأخذ مختلفة ذهنية من البرمجة التقليدية.

التصميم بما قد انخفضت من صالح في HPC القطاع لانهم horrorterror إلى البرنامج.CUDA هو بسبب انه من أجمل بكثير من البرنامج و سوف لا تزال تعطي لك بعض الأداء الجيد.كنت أذهب مع ما HPC المجتمع قد ذهب مع وتفعل ذلك في CUDA.انه من الاسهل انها أرخص, انها أكثر للصيانة.

آخرين قدموا إجابات جيدة ، فقط أريد أن أضيف وجهة نظر مختلفة.هنا هو بلدي المسح ورقة نشرت في الحوسبة ACM المسوحات 2015 (الرابط الثابت لها هو هنا) ، الذي يقارن GPU مع FPGA وحدة المعالجة المركزية على كفاءة استخدام الطاقة متري.معظم الصحف التقرير:FPGA هي أكثر كفاءة في استخدام الطاقة من GPU ، والذي بدوره هو أكثر كفاءة في استخدام الطاقة من وحدة المعالجة المركزية.منذ الطاقة ميزانيات ثابتة (اعتمادا على قدرة التبريد) ، وكفاءة الطاقة من FPGA يعني واحد يمكن أن تفعل المزيد من العمليات الحسابية داخل السلطة نفسها الميزانية مع FPGA ، وبالتالي الحصول على أفضل أداء مع FPGA من GPU.بالطبع أيضا حساب FPGA القيود ، كما ذكر من قبل الآخرين.

  • التصميم بما هم أكثر موازية من وحدات معالجة الرسومات, ثلاثة أضعاف.في حين الجرافيك جيد ميزات الآلاف من النوى ، FPGA قد يكون الملايين من البوابات القابلة للبرمجة.
  • في حين CUDA النوى يجب أن تفعل مماثل للغاية الحسابية أن تكون منتجة, FPGA الخلايا حقيقية مستقلة عن بعضها البعض.
  • FPGA يمكن أن تكون سريعة جدا مع بعض المجموعات من المهام وغالبا ما تستخدم فيها ميلي ثانية واحدة وينظر بالفعل مدة طويلة.
  • وحدة المعالجة المركزية أكثر قوة من FPGA الخلية و أسهل بكثير من البرنامج.بل هو جوهر ، يمكن تقسيم وضرب أي مشكلة عندما FPGA الخليوي هو الوحيد القادر على بسيطة نوعا ما منطقية.
  • كما GPU core هو الأساسية, هو كفاءة البرنامج في C++.حتى أنه من الممكن أيضا أن البرنامج FPGA في C++ ، فمن غير فعالة (مجرد "مثمرة").المتخصصة لغات مثل VDHL أو Verilog يجب أن تستخدم - فهي صعبة لإتقان.
  • أكثر من صحيح وحاولت الغرائز مهندس برمجيات غير مجدية مع FPGA.تريد حلقة مع هذه البوابات ؟ التي galaxy أنت ؟ كنت بحاجة إلى تغيير في عقلية مهندس إلكترونيات أن نفهم هذا العالم.

في أحدث GTC'13 العديد من HPC الناس اتفقوا على أن CUDA هو البقاء هنا.FGPA هي مرهقة ، CUDA هي أصبحت أكثر نضجا دعم بايثون/C/C++/الذراع..وفي كلتا الحالتين, كان ذلك بتاريخ السؤال

برمجة CUDA GPU في هو بالتأكيد أسهل.وإذا لم يكن لديك أي خبرة في البرمجة التصميم بما في HDL سوف يكاد يكون من المؤكد أن الكثير من التحدي بالنسبة لك, ولكن لا يزال يمكنك البرنامج مع OpenCL الذي هو نوعا ما مشابهة CUDA.ومع ذلك ، فمن الصعب تنفيذ وربما الكثير أكثر تكلفة من برمجة وحدات معالجة الرسومات.

واحد الذي هو أسرع ؟

GPU يعمل بشكل أسرع ، ولكن FPGA يمكن أن تكون أكثر كفاءة.

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

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

انها كيندا مثل تناول الشوربة بالشوكة سريع جدا مقابلتناول الطعام مع ملعقة ببطء أكثر.

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

لقد كرست حياتي كلها رسالة الماجستير في هذا الموضوع.خوارزمية تسارع على FPGA مع OpenCL

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