سؤال

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

مع الترميز اليدوي، يكون المرء متأكدًا من أن التعليمات المطلوبة يتم إصدارها، ولكن من المحتمل الآن أن الكود غير قابل للنقل (سواء إلى معماريات أخرى أو مترجمين آخرين).

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

المحلول

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

وأنا استخدم / نهج PRAGMA جوهري ونلقي نظرة على الجمعية. إذا البرمجي كود السيئ (مثل إراقة registes SSE إلى المكدس أو إضافة تحركات زائدة) I استخدام المجمع مضمنة للجسم حلقة كاملة.

وقابلية هو راجع للشغل يست مشكلة. في كثير من الأحيان عليك أن تبدأ مع C / C ++ حلقة وتحسين باستخدام intrinsics. تبقى مجرد حلقة القديمة واستخدامه بمثابة وحدة اختبار / تراجع عن تنفيذ SIMD الخاص بك. كما انها الحكمة دائما أن تكون قادرة على إزالة كافة التعليمات البرمجية SIMD من مشروع طريق الترجمة في الوقت تعريف. تصحيح تطبيق هو كثير أسهل بهذه الطريقة. نفس تعريف يمكن استخدامها لعبر تجميع.

نصائح أخرى

لن أعتمد أبدًا على التوجيه التلقائي من أي مترجم.مع gcc سأكون حذرًا بشكل مضاعف لأن تأثيرات gccتختلف تحسينات Windows دائمًا من إصدار إلى آخر.يتعين على كل شخص أعرفه تقريبًا ويعتمد على التحسينات الخاصة أو ملحقات دول مجلس التعاون الخليجي أن يتعامل مع الكسر عند ظهور تحديثات جديدة gcc تم الافراج عن النسخة.

يمكنك عادةً الوثوق بالبراغماتية والأساسية، ولكن يجب عليك أن تراقب عن كثب ملاحظات الإصدار الخاصة بإصدارات دول مجلس التعاون الخليجي الجديدة، ويجب عليك إخبار مستخدميك بإصدار دول مجلس التعاون الخليجي المطلوب لتجميع التعليمات البرمجية الخاصة بك.

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

وأنا حتى الآن لرؤية vectorizer التلقائي الذي يفعل أكثر من جيدة الضرر.

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