ما هي الطريقة الصحيحة لاستخدام ARM SIMD على iPhone لعملية Vector/Matrix؟

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

سؤال

أقوم بعمل مكتبة متجه/مصفوفة للعبة تستخدم وحدة SIMD على iPhone (3GS أو لاحقًا). كيف يمكنني أن أفعل هذا؟ لقد بحثت عن هذا ، والآن أعرف عدة خيارات:

  • إطار التسريع (Blas+Lapack+...) من Apple (iPhone OS 4)
  • مكتبة تنفيذ OpenMax من ARM
  • ميزة تلقائيات التلقائي في مجلس التعاون الخليجي

ما هي الطريقة الأنسب لمكتبة المتجهات/المصفوفة للعبة؟

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

المحلول

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

نصائح أخرى

يجب أن تفترض أن GCC لن يقوم بتثبيت الكود الخاص بك ، لأنه يبدو أن هذا من غير المرجح أن يحدث!

كما قال بول ، للحصول على أكبر قدر من الأداء من جهاز iPhone الخاص بك ، يجب عليك كتابة رمز تجميع الذراع الخاص بك باستخدام تعليمات Neon Simd الخاصة به قدر الإمكان. لكن هذا يفترض أنك تفهم لغة تجميع الذراع وكذلك نيون ، وتأخير التوقيت ، وما إلى ذلك ، لذلك إذا كنت لا ترغب في تعلم لغة تجميع الذراع ، فإن إطار التسريع من Apple ومكتبات OpenMax في ARM لها العديد من الوظائف التي تمت كتابتها بالفعل في مجموعة الذراع اللغة مع تعليمات نيون سيم.

لذا ، يجب أن يكون التسريع أو OpenMax جيدًا جدًا إذا كنت تستطيع استخدامها. لم أقارن بين 2 لمعرفة أيهما أسرع بالفعل ، لكنني أفترض أن OpenMax من ARM أسرع قليلاً من تطبيق Apple لأن ARM صمم مواصفات النيون! لكن يجب أن يركض كلاهما بسرعة كبيرة.

مع مرور الوقت تأتي إجابات جديدة:

تم الآن تحسين محرك فيزياء الرصاصة لـ Neon Simd بواسطة Apple. http://bulletphysics.org/bullet/phpb3/viewtopic.php؟t=8490

لقد قمت بإنشاء اثنين من روتين MAT*MAT*MAT*MAT*VEC باستخدام ASM INLINE. إنهم جزء من محرك Oolong ، لكنهم يخضعون لترخيص MIT ، حتى تتمكن من استخدامه كما تريد:

http://code.google.com/p/oolongengine/source/browse/trunk/oolong٪20engine2/math/neonmath/neon_matrix_impl.cpp

أبل لديها الآن <simd/simd.h> وهي مكتبة من روتين الرياضيات المحسّن للناقلات الصغيرة والمصفوفات والرباع كجزء من إطار التسريع الذي ذكرته. يبدو أن هذا ربما يكون أسهل طريقة اليوم.https://developer.apple.com/documentation/accelerate/simd؟language=OBJC

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