سؤال

لقد أضفت إلى x64 التكوين إلى C++ المشروع إلى تجميع 64-بت من بلدي التطبيق.كل شيء يبدو على ما يرام, ولكن المترجم يعطي التحذير التالية:

`cl : Command line warning D9002 : ignoring unknown option '/arch:SSE2'`

هل هناك SSE2 الأمثل حقا لا تتوفر 64 بت المشاريع ؟

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

المحلول

يبدو أن جميع معالجات 64 بت وقد SSE2.منذ الخيار برنامج التحويل البرمجي دائما في وضع التشغيل بشكل افتراضي لا تحتاج إلى تشغيله يدويا.

من ويكيبيديا:

تعليمات SSE:الأصلي AMD64 المعمارية المعتمدة من إنتل SSE و SSE2 الأساسية التعليمات.تعليمات SSE3 أضيفت في نيسان / أبريل 2005.SSE2 يستبدل x87 مجموعة التعليمات IEEE 80-بت الدقة مع خيار إما IEEE 32-بت أو 64-بت العائمة نقطة الرياضيات.وهذا يوفر عمليات النقطة العائمة متوافق مع العديد من وحدات المعالجة المركزية الحديثة.SSE و تعليمات SSE2 كما تم تمديد العمل على ثماني جديدة XMM السجلات.SSE و SSE2 متوفرة في وضع 32 بت في الحديث معالجات x86;ومع ذلك ، إذا كنت تستخدم في برامج 32 بت تلك البرامج سوف تعمل فقط على أنظمة مع المعالجات التي تحتوي على ميزة.هذا ليس مشكلة في برامج 64 بت ، جميع معالجات AMD64 يكون SSE و SSE2, وذلك باستخدام SSE و تعليمات SSE2 بدلا من x87 تعليمات لا يقلل من مجموعة من الآلات التي x64 يمكن تشغيل البرامج. SSE و SSE2 عموما أسرع و مكررة أكثر من الميزات التقليدية x87 تعليمات MMX و 3DNow!.

نصائح أخرى

وأنا أفهم التحذير التي تظهر إذا اخترت SSE2، الرغم ما زال سخيفة. ولكن هل لا يزال الحصول على تحذير إذا قمت بتحديد / قوس: AVX. أنا متأكد من أنها سوف تحصل على ثابت مع SP1. مزعجة لمجرد قليلا والانزعاج.

والمترجم الخيار / القوس: سوف AVX لا تعمل على وحدات المعالجة المركزية القديمة وبالتالي تحتاج إلى ضمان وحدة المعالجة المركزية الخاصة بك تدعم ذلك. جريت إلى هذه القضايا عندما اضطررت إلى إعادة تجميع-حزمة 1.12 tensorflow لبلدي وحدة المعالجة المركزية زيون القديمة التي لا تدعم.

ولقد تحولت على / قوس: SSE2 (كما كيريل) المعلن أعلاه ولكن الحصول على نفس بالضبط القضية. يصدر مترجم مايكروسوفت تحذيرا (INFO) أن هذا الخيار سيتم تجاهل.

Command line warning D9002 : ignoring unknown option '/arch:SSE2'

ومن وثائق Microsoft ما أفهمه هو أن هذا الخيار متاح فقط على x86 و أن لا معنى له بالنسبة لي سواء.

ولكن على MSDN يقول:

/arch:SSE and /arch:SSE2 are only available when you compile for the x86 platform.

ويستخدم SSE على أي حال إلى x64. وبالتالي أنا فقط إزالة الخيار الآن.

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