المشاركة الأصلية كتبت بواسطة الخلف
ركزت ATi في معماريتها على الجانب الرسومي جاعلة الحوسبة شيء ثانوي فمعالجاتها السابقة لم تكن مصممة للحوسبة خصوصاً أنها كانت تنتظر مواصفات مفتوحة وغير محتكرة ولم تظهر تلك إلا في OpenCL و Direct Compute وكلاهما لم يتم الانتهاء منهما إلا بعد صدور سلسلة HD 4000 بفترة... أما HD 5000 فتم تصنيعها بعد الانتهاء من تلك المواصفات كما أنه تم إجراء تغييرات فيها كانت ثانوية سابقاً لأنها كانت تخص الحوسبة ولا تخص الرسوميات...
عند بداية عصر الحوسبة كانت ATi تبحث عن معيار موحّد للحوسبة ولكنها لم تجد، لهذا ابتكرت معياراً مؤقتاً... ولنه كان مؤقتاً فلم يكن العمل عليه بشكل جاد وإنما لكي يكون هناك حل فقط، كان الحل متمثلاً في CTM ولكن هذا المعيار كان صعباً جداً لكونه لايتكلم مع المعالج الرسومي بطريقة يفهمها مطور البرامج وإنما بطريقة يفهمها مطور العتاد ومبرمجي برامج القيادة... ولكنه بقي كحل موجود !! البرمجة كانت تتم باستخدام +Brook وهي نسخة معدّلة من Brook مخصصة للمعالجات الرسوميّة وتعمل عليها جامعة ( أي أنها لم تكن أساساً من ATi )
بعد فترة اتضحت بعض الأمور فالمواصفات القياسية والموحّدة التي تنشدها AMD بعيدة المدى والمطورون يحتاجون لشيء... لهذا قامت بتطوير Stream... وهي منظومة مصغرة للتطوير، تكون مثل الـ Direct3D أي واجهة تستخدمها لغات البرمجة للتواصل مع المعالج الرسوميّ... ولكنها بدائية نسبياً فرغم أنها سهّلت التطوير باعتماد لغات برمجة مثل C وغيرها إلا أن المشكلة لم تكن كامنة في لغة البرمجة وإنما في طريقة البرمجة، فنحن هنا نتعامل مع أسلوب مختلف عما تعودنا عليه في البرمجة المعتادة...
عند تطوير المعالجات الرسوميّة لم يكن عند AMD قاعدة قوية وقياسات موحّدة تستند عليها للتطوير الحوسبيّ لهذا لم تتضمن معالجاتها الرسوميّة آنذاك تغييرات خاصة بالحوسبة... فكل الأمور التي قامت بها AMD في HD 4000 مثلاً يختصّ بتفعيل جوانب بسيطة في الحوسبة ولكن المعالج نفسه كان مصمماً للرسوميّات...
بعد فترة من صدور HD 4000 ظهرت المواصفات النهائية لكلا من OpenCL و Direct Compute وهما ما كانت AMD تنتظره... لهذا قامت بإجراء التغييرات اللازمة لهما في HD 5000 وتم لها ما أراد...
NV من جهة أخرى لم تكن تنتظر... بل قامت بتطوير تقنياتها الخاصة... فطوّرت CUDA وهي شبيهة بـ Stream من ناحية وظيفية إلا أنها أشمل لأنها منظومة برمجية كاملة تتضمن أيضاً لغات برمجة وأهمها C for CUDA... ومن البداية لم تكن NV تنتظر شيئاً حتى تضمّنه في معالجاتها الرسوميّة لأنها قامت بصنع ما ترنو إليه من البداية ولأن الموارد المطلوبة في المعالجات الرسوميّة والخاصة بالحوسبة تكاد تكون مشابهة في الطرق بين OpenCL و CUDA و Direct Compute فإن ما احتاجت إليه NV هو تغييرات بسيطة في المعمارية ( من ناحية حوسبة وليس من ناحية رسوميّة )
هذا يجعل موقف NV أفضل من هذه الناحية لكونها استندت على قاعدة قوية بدلاً من أن تنتظر كما فعلت AMD...
طبعاً هذا لايعني أن معالجات GT200 و G90 و G80 من جيل ما قبل Fermi سيستطيع القيام بكل شيء يستطيع fermi القيام به لمجرد أن NV كانت تعكف على الحوسبة منذ فترة طويلة، وأكبر مثال على عدم التوافق هو مسألة اصدار Direct Compute فهو 5.0 في بطاقات DX11 بينما 4.0 في بطاقات DX 10 و 4.1 في بطاقات DX 10.1 وهذا الأمر ينطبق حتى على بطاقات ATi...
ما ذكره المسؤول هنا هو مثال عن التغييرات الخاصة بالحوسبة...
ما لخّصه المسؤول أنه يمكن الحصول على الأداء ولكن بطريقة مختلفة في البرمجة، بمعنى أنك لكي تستطيع الحصول على أداء أعلى في HD 4000 فإنك ستحتاج لتغيير طريقة برمجتك، أما إن قمت بالتحويل المباشر من CUDA مثلاً إلى OpenCL أو قمت بتطوير بريمج OpenCL اعتماداً على HD 5000 فإنك ستحصل على أداء أقل بشكل ملحوظ...
أعطى مثال حول استخدام الذاكرة المحليّة Local Memory والذاكرة العامّة Global Memory... ففي عتاد HD 4000 لايمكن للمبرمج أن يستخدم الذاكرة المحلية ويجب عليه أن يستخدم الذاكرة العامة لكي يحصل على أداء جيد وهذا ما يتطلب تغييراً في البرمجة قياساً إلى تطبيقات عتاد HD 5000 أو تطبيقات CUDA...
أما لو لم يقم بالتغيير فإن برنامج القيادة و Stream سيقوم بمحاكاة الذاكرة المحليّة للبرنامج وهي أساساً ذاكرة عامّة، وهذا الأمر يحدّ كثيراً من الأداء...
الأمر المكلف برمجياً هو أن يتم تغيير كل برنامج بحيث إذا وجد بطاقة HD 4000 فإنه يستخدم الذاكرة العامة Global Memory بدلاً من الذاكرة المحليّة...
السبب في هذا الأمر في جيل HD 4000 أن مسألة استخدام الذاكرة المحليّة هي مسألة تخص الحوسبة وليس الرسوميّات، وبالتالي لم تعطي لها AMD أهميّة قصوى خصوصاً لأن تمكين الوصول إليها سيحتاج لوقت أطول مما يؤخر من وقت إطلاق المنتج...
مواصفات OpenCL و Direct Compute جعلت إمكانية الوصول المباشر للذاكرة المحليّة أمراً لازماً وبالتالي تم هذا التغيير في HD 5000 ولهذا فالتطوير الحوسبي في HD 5000 أسهل وأفضل من HD 4000 لأن جيل HD 5000 تم تطويره مع أخذ الحوسبة كعامل أساسي مباشر بعد الرسوميات، وليس كما جيل HD 4000 والذي كانت الحوسبة فيه عامل ثانوي...
وكما ذكرت NV كانت تلعب على هذا الحبل منذ زمن فكونها كانت تطوّر منظومة CUDA فهي قامت بكل هذه التغييرات مسبقاً... ولكن لاتزال مواصفات OpenCL و Direct Compute تفرض أموراً لم تكن موجودة في أجيال ما قبل DX11 لمنتجات NV ( أي المنتجات الحالية )، وهذه الأمور تم وضعها في منتجات DX11 من قبل كلا الشركتين
المفضلات