المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : NVIDIA تصدر Driver لل OpenCL خاص بالمطورين



aziz-50
24-04-2009, 05:51
السلام عليكم ورحمة الله وبركاته

أفرجت NVIDIA يوم أمس عن السائق الخاص بال OpenCL مع مكتبة خاصة بالمبرمجين والمطورين (SDK) تحتوي على العديد من الأمثلة والأكواد الخاصة بال OpenCL .

النسخة التي أصدرتها NVIDIA يوم أمس ليست رسمية وإنما للحصول على رده الفعل من قبل المبرمجين وطرح الملاحظات عليها قبل طرح النسخة beta بعد عده أشهر .

هذه المكتبة (SDK) ستتيح للمبرمجين البدء بعمل برامج وتطبيقات GPGPU وبهذا تكون NVIDIA أول شركة GPU تطرح سائق لل OpenCL و أول شركة GPU توفر للمطورين والمبرمجين عمل برامج لل OpenCL وطرح الأمثلة والأكواد الخاصة بتطبيقات OpenCL .

وأضافت NVIDIA أن الإسراع في إطلاق السائق للمبرمجين والمطورين يعزز قياده NVIDIA من ناحية أستخدام ال GPU للحوسبة .

يذكر أن NVIDIA كانت من أوائل الشركات التي قدمت الدعم الكامل لل OpenCL 1.0 , كما أن أول تطبيق حي لل OpenCL للعمل على GPU قامت به NVIDIA .


المصدر :
https://www.nvidia.com/object/io_1240224603372.html

أبو فوفو
24-04-2009, 06:00
مشكور على الخبر عزيز باشا
وليس ذالك مستغرب من شركة عملاقة في هذا المجال .

ZEX
24-04-2009, 06:00
مشكور اخى على الخبر

الخلف
24-04-2009, 07:03
جميل جداً من nVIDIA

رغم أن nV قالت أنها لا تفكر حالياً بنقل الـ PhysX إلى OpenCL إلا أن الأمر قابل للطرح إن كان ذلك سيؤدي إلى نتائج إيجابية

للمعلومية فقط، nV طرحت برامج القيادة هذه بشكل خاص لمجموعة مختارة من المطورين وليس كلهم، وسبق أن AMD أن قامت بذلك بل قامت شركة Havok بعرض أول تطبيق موجه للمستخدم وبشكل حيّ لذلك قبل بضع أسابيع...

بخصوص أول تطبيق حي للـ OpenCL، فجدير بالذكر أن كلا من شركتي AMD و nVIDIA تعاونتا بذلك ووزعت الشركتين المهام على بعضهما حيث قامت الأولى بعرض أداء الـ OpenCL على المعالج العادي وطرحت فكرة زيادة الأداء مع زيادة عدد الأنوية Core Scale، ثم طرحت nVIDIA بعرض الـ OpenCL على المعالجات الرسومية... المثير في الأمر أن كلا الشركتين تشاركا ذات الفترة الزمنية وهي 75 دقيقة في تناغم بينهما، وأتمنى أن يواصلون هذا الأمر بشكل كامل :)

أول عرض حي لتطبيقات الـ OpenCL

عرض ( AMD OpenCL ( x86
https://www.youtube.com/watch?v=sLv_fhQlqis&feature=channel_page

عرض ( nVIDIA OpenCL ( GPU
https://www.youtube.com/watch?v=PJ1jydg8mLg&feature=channel_page



أول تطبيق موجّه للمستخدم النهائي بعرض حي Havok Cloth on AMD GPU
https://www.youtube.com/watch?v=MCaGb40Bz58&feature=channel_page

ولمن يحب أيضاً، أحد المسؤولين في nVIDIA يتحدث عن الـ OpenCL
https://www.youtube.com/watch?v=RsGODM9sGoc&feature=channel_page

aziz-50
24-04-2009, 08:12
بخصوص أول تطبيق حي للـ OpenCL، فجدير بالذكر أن كلا من شركتي AMD و nVIDIA تعاونتا بذلك ووزعت الشركتين المهام على بعضهما حيث قامت الأولى بعرض أداء الـ OpenCL على المعالج العادي وطرحت فكرة زيادة الأداء مع زيادة عدد الأنوية Core Scale، ثم طرحت nVIDIA بعرض الـ OpenCL على المعالجات الرسومية... المثير في الأمر أن كلا الشركتين تشاركا ذات الفترة الزمنية وهي 75 دقيقة في تناغم بينهما، وأتمنى أن يواصلون هذا الأمر بشكل كامل :)


كان ذلك في SIGGRAPH Asia 2008

https://www.geeks3d.com/?cat=1520

https://www.hardwarezone.com/articles/view.php?id=2768&cid=18&pg=5

الخلف
24-04-2009, 10:03
نعم عزيزي عزيز، وتجد مقطعي الفيديو الخاصين بذلك العرض من كلا الشركتين في أول وصلتين وضعتهم في مشاركتي السابقة :)

Radeon
24-04-2009, 13:09
الف شكر اخي عزيز على الخبر و في انتظار انتشار هذه التقنية بشكل اوسع

shaker3
24-04-2009, 15:57
السلام عليكم
مشكور عالخبر بس ياريت حد يقول لنا فائدة ال openCL للمستخدم العادي كالالعاب مثلا
وهل هو يدعم كل الكروت الموجودة في الساحة ام ان الامر سيكون محصورا بكروت محددة ؟؟
ودمتم بود :ah3:

EN.AhMeD
24-04-2009, 20:41
مشكور اخوي عزيز

HD5870X2
25-04-2009, 00:03
هل يعني هذا دعم ال GPU Physics عبر واجهة مفتوحة المصدر تختلف عن ال CUDA PhysX ؟

وهل يعني هذا بالتالي إنتهاء ال Nvidia PhysX ؟!

:)

trt44
25-04-2009, 02:40
هل يعني هذا دعم ال GPU Physics عبر واجهة مفتوحة المصدر تختلف عن ال CUDA PhysX ؟

وهل يعني هذا بالتالي إنتهاء ال Nvidia PhysX ؟!

:)
أخي العزيز مينا إما أنك لا تعبر جيداً عن فكرتك و إما أنت فاهم الأمر بطريقة خاطئة
ال GPU Physics كما تقول أنت عند Nvidia هو "Cuda" الواجهة لتحويل الحسابات إلى GPU و عمله ليس محصوراً بفيزياء الألعاب بل يتعدى ذلك ليشمل عمل برامج تستفيد من إمكانيات ال GPU لتنفيذ الأوامر بشكل أسرع و يمكننا أن نأخذ كمثال برنامج لتحويل الفيديو يمكنك من التحويل بإستعمال ال GPU و إنجاز المهمة في وقت أسرع بكثير من ال CPU لوحده و بناءً على هذا Cuda هو شبيه OpenCl
نأتي إلى Physx، Physx هو محرك فيزيائي شأنه في ذلك شأن باقي المحركات الأخرى مثل Euphoria أو Crytek أو Havoc و لو أن المحركين الاخيرين يشملان أيضاً مكتبات الذكاء الإصطناعي AI و غيرها من الأمور. Physx في الأصل و كما تعرف طور من طرف شركة Ageia ليعمل على كرت من إنتاج نفس الشركة ثم ابتاعته Nvidia و حولته ليعمل على ال GPU عن طريق واجهة Cuda
أما بشأن ما تقوم به Nvidia من دعم ل OpenCl فهذا راجع لكونه المعيار الموحد لل GPGPU بينها و بين AMD و مستقبلاً Intel كذلك على ما يبدو و هو لا يعني نهاية Nvidia Physx لأن Physx محرك فيزيائي و ليس واجهة فالواجهة هي Cuda و في الأخير ما ستقوم به Nvidia إذا أحست بخطر AMD و قرب جهوزية و إصدار Havok المعدل و هو ما لم يتم حتى الآن على الرغم من أخده لوقت أكثر من كافي, هو نقل Physx ليعمل على OpenCl بدلاً عن Cuda

HD5870X2
25-04-2009, 02:55
أخي العزيز مينا إما أنك لا تعبر جيداً عن فكرتك و إما أنت فاهم الأمر بطريقة خاطئة
ال GPU Physics كما تقول أنت عند Nvidia هو "Cuda" الواجهة لتحويل الحسابات إلى GPU و عمله ليس محصوراً بفيزياء الألعاب بل يتعدى ذلك ليشمل عمل برامج تستفيد من إمكانيات ال GPU لتنفيذ الأوامر بشكل أسرع و يمكننا أن نأخذ كمثال برنامج لتحويل الفيديو يمكنك من التحويل بإستعمال ال GPU و إنجاز المهمة في وقت أسرع بكثير من ال CPU لوحده و بناءً على هذا Cuda هو شبيه OpenCl
نأتي إلى Physx، Physx هو محرك فيزيائي شأنه في ذلك شأن باقي المحركات الأخرى مثل Euphoria أو Crytek أو Havoc و لو أن المحركين الاخيرين يشملان أيضاً مكتبات الذكاء الإصطناعي AI و غيرها من الأمور. Physx في الأصل و كما تعرف طور من طرف شركة Ageia ليعمل على كرت من إنتاج نفس الشركة ثم ابتاعته Nvidia و حولته ليعمل على ال GPU عن طريق واجهة Cuda
أما بشأن ما تقوم به Nvidia من دعم ل OpenCl فهذا راجع لكونه المعيار الموحد لل GPGPU بينها و بين AMD و مستقبلاً Intel كذلك على ما يبدو و هو لا يعني نهاية Nvidia Physx لأن Physx محرك فيزيائي و ليس واجهة فالواجهة هي Cuda و في الأخير ما ستقوم به Nvidia إذا أحست بخطر AMD و قرب جهوزية و إصدار Havok المعدل و هو ما لم يتم حتى الآن على الرغم من أخده لوقت أكثر من كافي, هو نقل Physx ليعمل على OpenCl بدلاً عن Cuda

الفكرة كلها كما شرحت أنت "بإستفاضة أشكرك عليها" هي أن ال OpenCL يدعم تطبيقات ال GPGPU "كواجهة" وكل ماذكرته من محركات فيزيائية وبرامج تحويل الفيديو أو أي General Purpose Application يستطيع العمل على ال OpenCL

لاحظ اني ذكرت كلمتي : GPU Physics وليس PhysX فلن تعمل ال PhysX بالتأكيد على ال OpenCL ولكن ال Physics ستعمل عليه :)

trt44
25-04-2009, 03:45
الفكرة كلها كما شرحت أنت "بإستفاضة أشكرك عليها" هي أن ال OpenCL يدعم تطبيقات ال GPGPU "كواجهة" وكل ماذكرته من محركات فيزيائية وبرامج تحويل الفيديو أو أي General Purpose Application يستطيع العمل على ال OpenCL

مسألة مفروغ منها هذا أصلاً هو الغرض من تصميمه


لاحظ اني ذكرت كلمتي : GPU Physics وليس PhysX فلن تعمل ال PhysX بالتأكيد على ال OpenCL ولكن ال Physics ستعمل عليه :)
بل ستعمل. يا أخي Physx ما هو إلا محرك و تحويله ليعمل على واجهة أخرى غير Cuda هي من أسهل الأمور التي يمكن ل Nvidia عمله و هو أصلاً قيد الدراسة و شبه مؤكد في حال صدور Havok المعدل الذي سيعمل على OpenCl أما في حالة تأخر صدوره فالامر باق على حاله و لا ضرورة لتحويله
راجع هذا الرابط:
https://www.bit-tech.net/news/hardware/2009/03/27/nvidia-considers-porting-physx-to-opencl/1


ولكن ال Physics ستعمل عليه :)

ممكن تشرح لي ماذا تعني تحديداً ب Physics :confused:

الخلف
25-04-2009, 07:59
عزيزي مينا

الـ OpenCL هي واجهة برمجية موحّدة وقياسيّة للحوسبة باستخدام عدّة أنواع من المعالجات وتقنيات المعالجات، لنعطي مثال على برنامج عمليات الطيّ Folding، حالياً تقوم جامعة ستانفورد بتطوير ما يسمّى بالنواة، وهي عبارة عن الآلية التي يتم عن طريقها التواصل مع العتاد من أجل القيام بعمليات الحوسبة اللازمة، فهم يحتاجون لنواة Core من أجل معالجات x86 ونواة أخرى لمعالجات PowerPC ونواة أخرى لمعالجات GeForce وأخرى لمعالجات Radeon وأخرى لمعالجات Cell
الـ OpenCL يتيح لك إنتاج نواة واحدة فقط، ولكنها ستعمل على جميع هذه المعالجات وزيادة عليها أيضاً سيمكنها العمل على معالجات الإشارة DSP مثل التي بدأت بعض شركات الصوت مثل Creative باستخدامها هذا إن سمحت/سمحوا لها طبعاً فشركة Creative ليست عضوا في مجموعة OpenCL بينما هناك شركات أخرى مثل Texas Insturnment...
هذه كل الشركات التي تساهم في مشروع OpenCL
https://images.anandtech.com/reviews/video/opencl/khrpartner.png
أي أن الـ OpenCL هو واجهة برمجية، يمكن مقارنتها بواجهة CUDA ولكن طبعاً واجهة CUDA تنقصها العديد من الأمور، فهي أولاً مغلقة وغير مفتوحة، ثانياً محدودة بالمعالجات الرسوميّة، وثالثاُ محدودة بمعالجات nV الرسوميّة كما أنها محدودة بطبيعتها للمطورين فهي ليست بمثل مرونة OpenCL، فهي تعتمد بشكل أساسي تحت ظلال برنامج الـ C وبذلك تكون فيها محدوديات مثلاً لايمكنها أن تتصل مباشرة بالمعالج الرسومي ولا الذاكرة بل ستكون محدودة بالوصول للمعالج والذاكرة فقط عبر ما تمكنه الـ C من ذلك...
الـ OpenCL غير محدودة بمعالج معين، وليست مغلقة، ومفتوحة على مصراعيها للمطورين فلديك وصول مباشر للمعالج وذاكرة المعالج وموارده وغيرها كما أنها تتيح لك استخدام أي مورد من موارد الحوسبة إن لم يكن لديك مورد آخر
مثلاً في الـ CUDA إذا لم يكن لديك معالج GeForce من الفئة الثامنة وأعلى فالأمر ينتهي بكل بساطة، مما يعني أنه يجب أن تمتلك مقدرة الـ CUDA في ظل وجود آلية حوسبة أخرى تعوّض عدم وجودها، فلايمكنك عمل برنامج يستخدم الـ CUDA فقط لأن هناك ناس لايمتلكون CUDA Compatible Hardware وبالتالي لن يمكنهم تشغيل البرنامج
لأعطيك مثال برنامج تحويل الفيديو Boodaboom أو برنامج Nero Move it كلاهما يتضمنان دعم CUDA ولكنهم في نفس الوقت يتضمنان آلية الحوسبة العادية باستخدام معالج النظام، أي أن هناك آليتين منفصلتين للحوسبة أحدهما في حال وجود CUDA والأخرى في حال عدم وجودها
هذا الأمر يحتاج لوقت وجهد ومال من أجل التطوير وهو أمر لا يحبّه المطوّرين، السبب أن الكود البرمجية لاستخدام CUDA مختلف كثيراً عن نظيره الكود الخاص بمعالجات x86
واجهة OpenCL يمكنها تلافي هذا الأمر فهي مفتوحة على عدة أنواع من المعالجات دون الحاجة لتغييرات كثيرة، نعم هناك فروق بين معالجات GPU و x86 و ARM و DSP ولكن مواصفات OpenCL قلصت هذه الاختلافات إلى الحدود الدُنيا لتتوقف فقط عند اختلافات بسيطة ( الـ GPU متوازٍ أكثر من الـ CPU ولكن الـ CPU عميق أكثر من الـ GPU، معالجات Cell خليط من التوازي والعمق ) وغيرها...

الحديث عن PhysX يتطلب توضيح أمر هام
الـ PhysX والـ Physics، فهناك فرق بينهما، ومعضلة وقع فيها الكثيرون بسبب تشابه اللفظ واقتراب الكلمتين
الـ Physics وتعني الفيزياء، فقط فيزياء مجردة دون أي شيء، فقولك Physics يعني قولك فيزياء بدون أي تحديد، فيمكنك قول أنك درست الفيزياء I learned physics أو يمكنك القول أنك طبقت بعض قواعد الفيزياء في مذاكرتك، والفيزياء هنا للمعلومية كلمة إغريقية تعني الطبيعة، نفسرها اليوم على أنها القوانين التي تنطبق على الطبيعة من عمليات تصادم وعمليات ضغط هواء وحرارة وانعكاس ضوء وانكساره وانحناء حديد أو نحاس أو غيرها، أي كلما يتعلق بالقِوى بأنواعها، حركية جاذبية كهربائية كهرومغناطيسية حرارية، فأنت عندما تقذف كرة فإن هناك قوانين فيزيائية طبيعية وضعها الله وأمر جميع المواد والذرات باتباعها، فعندما تقذف الكرة فإن سرعة القذف واتجاه القذف ووزن الكرة وحجمها وحركة اليد وزاوية القذف وقوة الجاذبية في تلك المنطقة كلها ستحدد موقع الكرة عند سقوطها وحركتها، وهناك عناصر أخرى تؤثر على الكرة بعد رميها مثل سرعة الرياح واتجاهها وشكل الكرة والمواد المصنوعة منها ومقدار تساوي سطحها بل حتى الضغط الجوي ودرجة حرارة الكرة + درجة حرارة الهواء يؤثر فيها بشكل بسيط أو شكل كبير
الجاذبية والدوران والقوة النابذة والطاقة الحركية والانفجارات وحركة الرياح والمد والجزر كلها تخضع لقوانين وضعها الله للطبيعة وهي تُطبق بشكل دقيق تماماً، حركة الكواكب وغيرها كلها قوانين فيزيائية طبيعية فكل ذرة تخضع لتلك القوانين بل وحتى كل الكترون وبروتون ونيوترون وبوزترون وكل جسيم من الجسيمات ما دون الذريّة تتأثر بتلك القوانين فتؤثر في النتيجة النهائية...
مع تقدّم الوقت وظهور الحاسوب ظهرت احاجة لوجود ما يسمى بمحاكيات الفيزياء، لتسهيل القيام بمهام صعبة التنفيذ على الواقع، فمثلاً تقوم شركات السيارات باختبارات اصطدام كثيرة تكلفها الكثير من السيارات وعمليات الدراسة ما بعد الاصطدام وغيرها، فظهرت محاكيات الاصطدام وهي أجهزة تعطيها شكل السيارة الفيزيائي ومكوناتها كاملة بشكل ثلاثي الأبعاد وكل مكوّن ونوعه وممَ يتركب كل شيء مميز ومحدد ومضبط مسبقاً ذلك المجسم لا يتضمن فقط هيكل السيارة وإنما حتى محركها وكراسيها وشمعات الاشتعال والكرسي والحزام، وكل شيء محدد، الحزام مصنوع من كذا وكذا والمحرك من كذا وكذا وشمعات الاشتعال تتكون من الأجزاء التالية وكل جزء كذا وكذا فكل تلك العناصر تؤثر، ثم يقولون لبرنامج المحاكاة، يا صاحبي خذ هذه السيارة وقم بتحريكها بشكل مستقيم وبسرعة 60 كم/سا لتصطدم بجدار اسمنتي من النوع الفلاني، على أن تكون سرعة السيارة لحظة الاصطدام 60 كم/سا وهي مواجهة تماماً للجدار بزاوية 0 درجة...
ثم يتولى برنامج المحاكاة كامل العمليات ليعطيك شكل السيارة بعد الاصطدام كيف ستكون تماماً مع كل قطعة أين ستكون هل ستظل في السيارة أم ستنفصل عنها أم ستنبعج، حتى سائل مبرد السيارة سيقول لك أين سيكون فربما أحد الأجزاء قام بثقب الراديتر أو أنابيب المياه مما جعل سائل التبريد يتسرب
مثال آخر مع وضع قانون حظر التجارب النووية صارت جميع التجارب النووية تجري في محاكيات الانفجار، يضعون قنبلة نووية بقوة 50 ميجاطن مثلاً ( قنبلة Tsar الروسية أقوى قنبلة ذرية فُجّرت حتى الآن ) ويقولون لها انفجري على ارتفاع 500 متر من سطح الأرض على المدينة الفلانية ووضع الجو كان كذا وسرعة الرياح كذا وكان هناك منخفض جوي، في ختام الحسابات التي تستغرق عدة أيام عادة كان سيقول لك لو فجّرت تلك القنبلة في أمريكا فماذا سيحصل لدينا هنا فوق بيتك ؟ هل ستصلك الإشعاعات المباشرة ؟ لا لأن استدارة الأرض تمنع ذلك ولكن ستصلك رياح محمّلة بالإشعاع ولكن قوة الإشعاع ستكون ضعيفة جداً وغير مؤثرة، ستصاب المدينة الفلانية وهي على بعد 1400 كم بأمطار إشعاعية رغم وجود مدينة أقرب على بعد 350 كم والسبب أن الرياح والضغط الجوي سيؤدي لذلك !!
كل هذه الأمور يقوم بحسابها ما يسمى بالمحرّك الفيزيائي Physics Engine وهو عبارة عن برنامج حاسوبي يتضمن كل ما نعرفه من قوانين فيزيائية، البرنامج ضخم وهائل لضخامة القوانين الفيزيائية ومقدار تعقيدها، فكما ذكرت كل شيء يؤثر في كل شيء
طبعاً المحركات الفيزيائية يتم برمجتها للقيام بمهام عينة، فلايمكنهم برمجة محرك فيزيائي للقيام بكل صغيرة وكبيرة فحتى المحكرات الحالية تتجنب العديد والكثير من المتغيّرات لأن أخذ كل صغيرة وكبيرة سيستغرق عدّة أسابيع وأشهر وربما سنين للقيام بكل تلك الحسابات
إذاً هناك محركات فيزيائية متخصصة، محرك فيزيائي للتجارب النووية، وآخر لتجارب الانفجارات الصغيرة وآخر لتجارب الطقس وآخر لتجارب السقوط، وآخر لصواريخ الفضاء والأقمار الاصطناعية وآخر لحسابات الكواكب والنجوم وآخر لعمليات التصنيع المختلفة، وهناك محركات فيزيائية للألعاب مثل Havok و PhysX و Bullet وغيرها...
هذه المحركات مهمتها حساب العمليات والحركات الفيزيائية التي تجري في الألعاب...
الحسابات الفيزيائية قد تكون بسيطة جداً يمكن لطالب ثانوية إجراء حساب فيزيائي بسيط في ثوانٍ مثل إطلاق قذيفة بوزن 10 كيلو وبسرعة 100 كم/سا وبزاوية 45 درجة وقل له أين ستقع مجرد قانون بسيط سيعطيك ماهو أقصى ارتفاع تصل إليه وعلى بعد كم من مسافة ستقع القذيفة !!
وقد تكون معقدة وغاية في التعقيد، فرمي تلك القذيفة أمر بسيط جداً قياساً لما يحتاجه انفجار ضمن كومة أخشاب مثلاً من عمليات حسابية...
محركات الألعاب الفيزيائية تختلف عن المحركات العادية التي تستخدم في نماذج السيارات والطقس، فنماذج السيارات والطقس تعطيها العوامل كلها ثم تضعها عدة ساعات وأيام لتعطيك النتائج بسبب الدقة الهائلة
ولكن محركات الألعاب يجب أن تعطيها المعطيات والعوامل ويجب أن تعطيك النتيجة في نفس الوقت تماماً حتى يتم رسمها في اللعبة، أي أن محركات الألعاب يجب أن تكون في الزمن الحقيقي Real-Time فهناك وقت نهائي ليتم فيه إعطاء النتيجة وهو بسيط جداً أجزاء بسيطة من الثانية
إذاً هناك مستويات من الحسابات الفيزيائية، بعضها بسيط جداً كرمي قنبلة يدوية على خصمك ومتابعة كيفية سقوطها وميلانها وأين ستسقط وهذا يمكن لمعالج الجهاز العادي أن يقوم به بكل سهولة وسرعة لهذا تجده في كل لعبة، وهناك أنواع معقدة وتحتاج لقوة هائلة مثلاً عندما تسقط تلك القنبلة اليدوية في كومة أخشاب أو صناديق خشبية ماذا سيحدث لهذه الصناديق ؟
سابقاً حدد مطوروا الألعاب تلك التفاصيل لأن أجهزة الكمبيوتر لا تستطيع تلبية الحاجة الحوسبية الكاملة بشكل سريع حسبما تتطلبه اللعبة، كما أنها ربما تحتاج مقدار هائل من قوة الحوسبة بشكل يجعل الجهاز غير قادر على القيام بمهام أخرى هو بحاجة لها مما يجعل اللعب يكون بطيئاً جداً
ظهرت شركة Ageia بالحل، معالج فيزيائي منفصل مع محرك فيزيائي يستخدم ذلك المعالج الفيزيائي حتى يتسنى لمطوري الألعاب زيادة تفاصيل العمليات الفيزيائية لتصبح أكثر واقعية بكثير، ظهر محرك PhysX الفيزيائي
محرّك PhysX ولأسباب تسويقية وتجارية بحتة تم تطويره بحيث يعمل بوضعين وضع التشغيل على المعالج العادي حيث تجري العمليات الحسابية في معالج النظام وهناك سيكون بطيئاً بسبب محدودية معالج النظام، ووضع آخر تجري في العمليات على المعالج الفيزيائي المنفصل PPU... حيث يمكن إعطاء تفاصيل أكثر
يتم برمجة الألعاب بحيث يمكنها تشغيل الوضعين بمعنى تأتي اللعبة بمحرك PhysX بشكل عادي مثل لعبة Unreal Tournament 3 ولكن 90% من المستخدمين لايمتلكون مسرّع Ageia الفيزيائي Ageia PhysX Card والذي يتضمن قوة فيزيائية هائلة...
فكانت لعبة UT3 تستخدم تفاصيل منخفضة للفيزياء بما يمكنها من تشغيل اللعبة بسلاسة على معالجات النظام العادية، ومكّن محرك PhysX الفيزيائي للمطورين من إمكانية تطوير خرائط معيّنة في اللعبة خاصة بمالكي معالجات Ageia PhysX Card فبسبب ذلك المعالج يمكن زيادة تفاصيل الفيزياء بشكل كبير دون إبطاء لأن العمليات الفيزيائية تجري في معالج منفصل وسريع جداً
فظهرت خرائط خاصة مثل Tornado في لعبة UT3، هذه الخريطة تتضمن إعصار في اللعبة يدور في ساحة الأحداث وهو يدور بشكل عشوائي وكلما اقترب من مكان سحب كل شيء خفيف للإعصار ويمكن أن يرميه ويمكن أن يدور فترة ثم يرمى...
اللعبة توفّر خيار استخدام التسريع العتادي Hardware PhysX وذلك لإخبار المحرك الفيزيائي بأنه يمكنك استخدام التسريع العتادي بدلاً من معالج النظام، وعند تفعيل هذا الخيار ووجود بطاقة عتادية لتسريع اللعبة فإن الإعصار واللعبة ستبدوان رائعين بشكل هائل...
ولكن لو قمت بتشغيل تلك الخارطة دون تفعيل خيار Hardware PhysX أو في حال عدم وجود بطاقة Ageia PhysX Card فإن المحرك الفيزيائي سيضطر لاستخدام معالج النظام للقيام بعمليات الحسابات الفيزيائية، هذا سيهلك حتى أقوى المعالجات اليوم حتى لو كان رباعي النُوى وبتردد 4 جيجا وأكثر... الحسابات الفيزيائية لوحدها أكبر من قدرة استيعاب المعالج فتصبح اللعبة بطيئة لسببين
1- الحسابات الفيزيائية صارت بطيئة لأنها معقدة والمعالج لايستطيع الانتهاء منها كاملة في الزمن الحقيقي المطلوب
2- المعالج صار مهلكا لدرجة عدم قدرته على تلبية باقي احتياجات اللعبة
النتيجة انخفاض سرعة اللعب من عشرات الإطارات في الثانية إلى أقل من 15 و 10 إطارات في الثانية وربما تصل إلى أقل من 5 إطارات في بعض الأجهزة...
جميع الألعاب لهذا السبب صارت توفر خيارين، خيار مع تفعيل التسريع العتادي للمحرك الفيزيائي حيث يتم زيادة التفاصيل الفيزيائية وخيار مع التسريع العادي البرمجي للمحرك الفيزيائي حيث يتم استخدام تفاصيل فيزيائية عادية...
مثلاً لعبة Mirror Edge تتضمن الخيارين فعند تفعيل التسريع العتادي تقوم اللعبة بإبراز تفاصيل فيزيائية أكثر، قماش وزجاج يتكسر وغير ذلك، ولكن عند عدم وجود تسريع فيزيائي فإن هذه التفاصيل سيتم إخفائها حتى تعمل اللعبة بشكل عادي...
ماذا يحدث لو شغلت اللعبة على الجهاز ؟؟
هناك حالتين، الحالة الأولى هي في حالة عدم تفعيل التفاصيل الفيزيائية، عند ذلك ستعمل اللعبة بشكل عادي في أي جهاز سواء يتضمن تسريع PhysX عتادي أم لا
الحالة الثانية هي عند تفعيل التفاصيل الفيزيائية، عند ذلك، يقوم محرك الفيزياء بالبحث عن مسرّع عتادي فإن وجده فيقوم باستخدامه، وإن لم يجده فيقوم باستخدام معالج النظام
فإن وجده فإن اللعبة ستعمل بشكل عادي، ولكن إن لم يجده فإن تحويل العمليات الفيزيائية لمعالج النظام سيجعل اللعبة غير قابلة للعب ( بطيئة جداً )
ويجب الملاحظة هنا لنقطة هامة
عند تفعيل التسريع العتادي، فإن محرك اللعب لن يبحث عن معالج رسومي معين أو بطاقة معينة، بل سيبحث عن متغيّرات معينة فغن وجدها عمل بها وإن لم يجدها لن يعمل بها ماذا يعني هذا ؟
هذا يعني أنه حتى لو كان لديك تسريع عتادي، ولكن قمت بتعطيله فإن اللعبة ستصبح بطيئة جداً، فمثلاً لو قمت بتفعيل التسريع العتادي في اللعبة، ولكن خيار تسريع الفيزياء في برنامج القيادة معطّل فإن اللعبة ستصبح بطيئة جداً...
بعد فترة قامت شركة nVIDIA بشراء شركة Ageia فصار محرك PhysX الفيزيائي من ملكها...
وقامت بإلغاء بطاقات Ageia PhysX Card...
وقامت بتغيير محرك PhysX الفيزيائي بحيث بدلاً من أن يستخدم واجهة خاصة ببطاقات Ageia PhysX Card صار يستخدم واجهة CUDA البرمجية التي تتيح للبرامج استخدام المعالج الرسومي من أجل القيام بمهام أخرى...
فقامت بتحويل PhysX Engine ليستخدم واجهة CUDA، فعمل الأمر بشكل عادي وصار يمكن لكل مستخدمي مسرعات nVIDIA الرسومية أن يستخدموا معالجاتهم الرسوميّة من أجل القيام بتسريع الفيزياء بشكل عتادي...
ساهم هذا في جعل عدد أكبر من مطوري الألعاب يضع خيار التسريع العتادي لأن عدد مالكي بطاقات GeForce الداعمة لواجهة CUDA أكبر بكثير من عدد مالكي بطاقات Ageia PhysX Card، كما أن المستخدمين يفكرون بشكل جدي أكثر لاستثمار مبالغهم في مسرع رسومي أقوى يفيدهم في كل الألعاب بدلاً من شراء بطاقة Ageia PhysX تفيدهم في ألعاب أقل...
فتم الأمر بشكل عادي...
ظهرت واجهة OpenCL التي شرحناها سابقاً والتي تعتبر منافسة لواجهة CUDA بل وأفضل منها سواء من ناحية المستخدم أم من ناحية المطورين...
ماذا قالت nVIDIA ؟
قالت أنها ستدعم OpenCL أسوة بالتوجه العام نحو المواصفات الموحدة ودعماً لهذه المواصفات، أسوة بباقي الشركات أيضاً... وحتى تفيد المستخدم النهائي أيضاً
فسؤلت الشركة عن CUDA و PhysX ؟
فقالت أنه CUDA سيواصل عمله دعماً لزبائنه الحاليين، طبعاً أكّدت على نقطة أن CUDA أفضل ( كعادة كل شركة تروّج لمنتجها ) لكونه أكثر نضوجاً...
فسؤلت الشركة عن PhysX ؟
فقالت يمكن إن وجدنا الأمر مجدياً ان نقوم بتحويل محرك PhysX الفيزيائي بحيث يمكنه العمل على واجهة OpenCL أيضاً، وبالتالي يعمل على أنظمة أخرى...
إذاً ماذا سيحدث ؟
لايزال الأمر غير معروف، ولكن PhysX لن تموت لأنها واجهة برمجية لا يجبرها أن تعمل على CUDA فكما نعلم يمكنها العمل على واجهة أخرى مثلما كانت تعمل على واجهة Ageia API حيث كانت تستخدم بطاقات Ageia PhysX Card... فالمسألة مجرد تحويل لواجهة العمل API من CUDA لأي شيء آخر
يمكن لـ PhysX أن تعمل حتى على معالجات Radeon إن استخدمت واجهة Stream API ولكن nVIDIA ربطت PhysX فقط بواجهة CUDA ولم تسمح لأي بديل آخر...
فالسؤال هو
1- هل ستفعل nVIDIA مثلما فعلت أول شرائها للـ Ageia ؟ قامت بدعم كلا من واجهتي Ageia API و CUDA API لدعم مستخدمي Ageia السابقين ؟ فتقوم بنفس العملي حيث ستضيف دعم OpenCL مما يعني أن محرّك PhysX سيبحث عن أي من هذه الواجهات OpenCL و CUDA و Ageia API ليستخدم أي واحدة منهم وبالتالي سيمكن تشغيل واجهة PhysX على أي جهاز ولكنها ستعمل على CUDA في حال وجودها...
2- هل ستلغي دعم CUDA من PhysX لتستخدم فقط OpenCL دون الـ CUDA وبالتالي ستنخفض مسألة التطوير والوقت...
3- لن تغيّر شيئاً وستجعل PhysX يعمل فقط على CUDA...
في الحالة الأولى : الغلبة للـ PhysX + CUDA هنا - ستشجع nVIDIA على استخدام CUDA وفي نفس الوقت سيمكنها منافسة باقي المحركات الفيزيائية مثل Havok التي تعتمد OpenCL، المنافسة هنا في كون المحرك الفيزيائي غير محدود فقط بمعالجات GeForce الرسومية من الفئة الثامنة وأعلى
في الحالة الثانية : الغلبة للـ PhysX هنا دون CUDA بل قد يضر CUDA - ستوقف nVIDIA دعم الـ CUDA إيماناً منها لبقاء PhysX ومنافسته لباقي المحركات الفيزيائية
في الحالة الثالثة : موقف عنيد وهذا قد يضطر بالـ PhysX رغم أنه سيواصل CUDA بشكل عادي - لن تحرّك ساكناً وتقول لكل مطوري PhysX إما CUDA وإما لا، هذا قد يقتل PhysX كمحرك فيزيائي لأن الشركات المطوّرة ستبحث عن المحرك الفيزيائي الأكثر مرونة والذي يمكن من زيادة التفاصيل الفيزيائية على جميع المنتجات وهنا سيلعب Havok لعبته...
حالياً، nVIDIA تستغل الوقت، فبما أن Havok لم يتم تحويله كاملاً لكي يستخدم OpenCL إضافة لكون برامج القيادة الخاصة بالـ OpenCL لاتزال تحت التطوير، هذا يعني أنها تملك بعض الوقت...
ولكن عندما يأتي دعم OpenCL، وعندما تنتهي عمليات التطوير في Havok فإن nVIDIA ستظل تراقب السوق
- هل سيتجه شركاء nVIDIA المطورون من PhysX إلى Havok لكونه يدعم جميع المنتجات وليس فقط nVIDIA، متحملين تكلفة الانتقال من أجل الانفتاح على كل المنتجات ؟
- هل سيضغط شركاء nVIDIA حتى تقوم بتحويل PhysX إلى CUDA وبذلك يوفرون على أنفسهم تكلفة الانتقال من PhysX إلى Havok ؟
- هل ستبدأ شركات جديدة كانت تستخدم محركها الفيزيائي الخاص أو محرك آخر غير Havok و PhysX إلى محرك Havok لكونه يوفر تسريعاً إضافياً دون أن يكون محدوداً بمعالجات معينة مثل PhysX ؟
- هل لن يتغير السوق تماماً ؟ طبعاً هذا أمر مستبعد جداً !!
شخصياً أميل للخيار الثالث والثاني، أما الخيار الأول فربما لايكون إلا إذا تأخرت nVIDIA في تلبية الضغط أو أعطت جدولاً زمنياً بعيداً جداً...
معذرة على الرد الطويل ولكن حتى تصبح الأمور أكثر وضوحاً فالكثيرين لا يعرفون ماهو PhysX وما هو Physics وماهو المحرك الفيزيائي وماهي الفيزيائية !!

Salem AL Fituri
25-04-2009, 11:42
إذاً هناك مستويات من الحسابات الفيزيائية، بعضها بسيط جداً كرمي قنبلة يدوية على خصمك ومتابعة كيفية سقوطها وميلانها وأين ستسقط وهذا يمكن لمعالج الجهاز العادي أن يقوم به بكل سهولة وسرعة لهذا تجده في كل لعبة، وهناك أنواع معقدة وتحتاج لقوة هائلة مثلاً عندما تسقط تلك القنبلة اليدوية في كومة أخشاب أو صناديق خشبية ماذا سيحدث لهذه الصناديق ؟
سابقاً حدد مطوروا الألعاب تلك التفاصيل لأن أجهزة الكمبيوتر لا تستطيع تلبية الحاجة الحوسبية الكاملة بشكل سريع حسبما تتطلبه اللعبة، كما أنها ربما تحتاج مقدار هائل من قوة الحوسبة بشكل يجعل الجهاز غير قادر على القيام بمهام أخرى هو بحاجة لها مما يجعل اللعب يكون بطيئاً جداً...
هل معنى كلامك ان الفيزيائة سابقاً كانت تقوم على تعليمات جاهزة ومحددة في أحداث معينة فقط ..
ألا ينطبق نفس الكلام على GPU Physics ..ام انها الآن تعني Real Time Physics


ولكن لو قمت بتشغيل تلك الخارطة دون تفعيل خيار Hardware PhysX أو في حال عدم وجود بطاقة Ageia PhysX Card فإن المحرك الفيزيائي سيضطر لاستخدام معالج النظام للقيام بعمليات الحسابات الفيزيائية، هذا سيهلك حتى أقوى المعالجات اليوم حتى لو كان رباعي النُوى وبتردد 4 جيجا وأكثر... الحسابات الفيزيائية لوحدها أكبر من قدرة استيعاب المعالج فتصبح اللعبة بطيئة لسببين
1- الحسابات الفيزيائية صارت بطيئة لأنها معقدة والمعالج لايستطيع الانتهاء منها كاملة في الزمن الحقيقي المطلوب
2- المعالج صار مهلكا لدرجة عدم قدرته على تلبية باقي احتياجات اللعبة
النتيجة انخفاض سرعة اللعب من عشرات الإطارات في الثانية إلى أقل من 15 و 10 إطارات في الثانية وربما تصل إلى أقل من 5 إطارات في بعض الأجهزة..

أعتقد ان سبب انخفاض الأداء في اللعب بسبب ان الـ PhysX غير داعم للـPhysics عبر ال CPU ..والي يحدث داخل اللعبة عند وجود تعليمات خاصة بالـ PhysX أن محرك اللعبة يقوم بمحاكاتها عبر ال CPU وليس تحويلها لتعمل عليها ...
هذا الشي يمكن ملاحظته عند تفعيل الPhysX في Mirror Edge حيث انخفاض الإطارات يكون كبيراً جداً حتى في حال حدوث عمليات فيزيائية بسيطة في اللعبة ...قد تكون موجودة في المحركات الفيزيائية المعتمدة على ال CPU فقط مثل محرك Havoc لعبة StranglHold (https://www.arabhardware.net/forum/showthread.php?t=116266) ..

HD5870X2
25-04-2009, 12:12
أخي الخلف

أولاً : بارك الله فيك على علمك الواسع وعلى ترتيبك النقاط بشكل رائع

ثانياً : أحب أن أخبرك أن كل ما ذكرته أعرفه جيداً وأن الذي أظهر انني ربما أكون لم أفهم الأمر جيداً هو استخدامي لفظي Phyisics و PhysX

دائماً أحب أن أفرق بين كلاهما

فبالنسبة لي :

Physics (وأعني بها هنا GPU Physics أي التسريع الفيزيائي الرسومي للألعاب وليست الفيزياء في المطلق) : هي التكنولوجيا نفسها أي الحركات الفيزيائية في الألعاب من انفجارات وغيره وهي التي تعتمد على واجهات مفتوحة المصدر أو حتى تأتي ضمن برمجة اللعبة مثل Farcry 2 أو Crysis

PhysX : وأعني بها ما حولت Nvidia ال Physics اليه وهي عمليات التسريع الفيزيائية التي تعمل على كروتها فقط ببرنامج CUDA فقط

من وجهة نظري ال PhysX شيء مغلق على إنفيديا فقط بال CUDA وإذا تحول الى ال OpenCL فلن يكون اسمه وقتها PhysX (بالنسبة لي) بل سيكون GPU Physics

الخلف
25-04-2009, 12:24
هل معنى كلامك ان الفيزيائة سابقاً كانت تقوم على تعليمات جاهزة ومحددة في أحداث معينة فقط ..
ألا ينطبق نفس الكلام على GPU Physics ..ام انها الآن تعني Real Time Physics

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

حتى مع الـ GPU Physics ما فعلوه هو زيادة التأثيرات ونطاق الفيزياء وليس فتح كامل تقنيات الفيزيائية لأن فتحها ستحتاج إلى ساعات عديدة حتى مع أسرع الـ GPU's، فما تم فعله هو زيادة عدد التأثيرات خصوصاً التي يمكن للشخص رؤيتها...


أعتقد ان سبب انخفاض الأداء في اللعب بسبب ان الـ PhysX غير داعم للـPhysics عبر ال CPU ..والي يحدث داخل اللعبة عند وجود تعليمات خاصة بالـ PhysX أن محرك اللعبة يقوم بمحاكاتها عبر ال CPU وليس تحويلها لتعمل عليها ...
هذا الشي يمكن ملاحظته عند تفعيل الPhysX في Mirror Edge حيث انخفاض الإطارات يكون كبيراً جداً حتى في حال حدوث عمليات فيزيائية بسيطة في اللعبة ...قد تكون موجودة في المحركات الفيزيائية المعتمدة على ال CPU فقط مثل محرك Havoc لعبة StranglHold (https://www.arabhardware.net/forum/showthread.php?t=116266) ..

خطأ كبير يقع فيه الكثيرون هنا بالقول أن الـ PhysX لايدعم التسريع عبر الـ CPU، بل هو يدعم وإلا لما عملت الألعاب تماماً، فخارطة Tornado يمكن للجميع تشغيلها ولكنها تصبح بطيئة جداً في حال عدم وجود تسريع عتادي، السبب كما ذكرت أن معالجة الحسابات الفيزيائية ستستهلك طاقة المعالج مما يجعله غير قادر على تلبية حاجة اللعبة نفسها، سيشبه الأمر حينها تركيب معالج Pentium 4 بتردد 1.5 جيجا للعبة متطلبة مثل Crysis ، بسبب أن معالجة الفيزيائية ستستهلك أغلب طاقة المعالج نفسه تاركة النزر اليسير لباقي متطلبات اللعبة...

شركات التطوير تتجه لواجهات برمجية مثل PhysX لتخفيف العبء على تطوير محركها الفيزيائي الخاص، فمن الأفضل لها الحصول على ترخيص محرك فيزيائي آخر بدلاً من تطوير المحرك الخاص بها...
ومن شروط تلك الشركات أن يكون المحرك الفيزيائي مرناً بشكل يجعل بالإمكان اختيار مستوى التعقيد في الدقة الفيزيائية...
محرك PhysX يتيح ذلك شأنه شأن كل المحركات الفيزيائية، ولكن ما جعله منتشر هو أنه بالإمكان زيادة التفاصيل الفيزيائية بشكل أكبر عند استخدام تسريع عتادي للفيزيائية أي في GPU Accelerated Physics...

ضمن خيارات ألعاب الـ PhysX هناك خيار مثل Enable Hardware Phyics، هذا الخيار يقوم بزيادة التفاصيل الفيزيائية، يستخدم هذا الخيار من يمتلك تسريع فيزيائي عتادي سواء كان بـ Ageia Card أو بالـ GeForce Card
... عدم تفعيل ذلك الخيار سيخفض التفاصيل الفيزيائية بشكل معالج النظام قادر على إجراء حسابات الفيزياء وإعطاء اللعبة حقها بشكل عادي، أي مثل حالة تركيب اللعبة على جهاز لا يتضمن بطاقة GeForce مثلاً

وهناك نقطة أخرى، المعالجة الفيزيائية تستهلك من قدرة المسرع الرسومي أيضاً، فإن كان لديك مسرع رسومي من الفئة الدّنيا لنقل GeForce 8400GS مع 256 ميجا من الذاكرة وهو الحد الأدنى لتشغيل الـ CUDA ( وبالتالي الـ GPU Accelerated PhysX ) فإنه على الرغم من أنك ستستطيع تشغيل لعبة مثل UT3 أو ME مع التفاصيل الفيزيائية، إلا أن قوة المعالج الرسومي نفسها بالكاد تكفي لتشغيل اللعبة بتفاصيلها الرسومية، وتأتي الحسابات الفيزيائية لتزيد الأمر سوءاً أيضاً...
فتتكرر حالة ضغط الفيزياء على المعالج العادي ولكن مع المعالج الرسومي، فبدلاً من أن تحصل على أداء أعلى ستجد نفسك تحصل على أداء أقل...

من يملكون بطاقات GeForce يعرفون ذلك، فتفعيل أو تعطيل الـ PhysX من لوحة التحكم يؤدي إلى تخصيص جزء من طاقة المعالج الرسومي لمعالجة الفيزياء حتى لو لم تكن تشغّل الفيزياء أساساً ( كعدم وجود لعبة ) ويلاحظ مستخدمي بطاقات GeForce ذلك في مختلف أنواع الألعاب وحتى تطبيقات CUDA مثل تحويل الفيديو والـ Folding، فبمجرد تفعيل الـ PhysX فإن أداء المسرع الرسومي يقلّ، وسرعة الـ Folding مثلاً تقل إذا كان الـ PhysX مفعلاً رغم أنك لا تُشغّل أي شيء... وإن شغلت لعبة لا تستخدم محرك PhysX ( مثل NFS التي تستخدم محركها الخاص أو Half-Life التي تستخدم محرك Havok ) فإن مجرد تفعيل PhysX من لوحة تحكم nVIDIA يؤدي إلى تخفيض الأداء... فتعطيل الـ PhysX يمكن اللعبة من استخدام كامل قوة المعالج الرسوميّة...

الخلف
25-04-2009, 12:35
أخي الخلف

أولاً : بارك الله فيك على علمك الواسع وعلى ترتيبك النقاط بشكل رائع

ثانياً : أحب أن أخبرك أن كل ما ذكرته أعرفه جيداً وأن الذي أظهر انني ربما أكون لم أفهم الأمر جيداً هو استخدامي لفظي Phyisics و PhysX

دائماً أحب أن أفرق بين كلاهما

فبالنسبة لي :

Physics (وأعني بها هنا GPU Physics أي التسريع الفيزيائي الرسومي للألعاب وليست الفيزياء في المطلق) : هي التكنولوجيا نفسها أي الحركات الفيزيائية في الألعاب من انفجارات وغيره وهي التي تعتمد على واجهات مفتوحة المصدر أو حتى تأتي ضمن برمجة اللعبة مثل Farcry 2 أو Crysis

PhysX : وأعني بها ما حولت Nvidia ال Physics اليه وهي عمليات التسريع الفيزيائية التي تعمل على كروتها فقط ببرنامج CUDA فقط

من وجهة نظري ال PhysX شيء مغلق على إنفيديا فقط بال CUDA وإذا تحول الى ال OpenCL فلن يكون اسمه وقتها PhysX (بالنسبة لي) بل سيكون GPU Physics
الـ PhysX هو الاسم التجاري لمحرك الفيزيائي الذي تستخدمه nVIDIA ( وطورته Ageia )، وسواء كان على الـ CUDA أو OpenCL فهو يحمل اسم PhysX، مثله مثل Havok لايضر كونه يعمل على OpenCL أو غيره فهو مجرد اسم تجاري

المطورين يستخدمون نفس الواجهات البرمجية API دون تغيير سواء لدى CUDA أو OpenCL فهذا ما يميز الواجهة البرمجية أنها تعمل بغض النظر عن طريقة حديثها مع العتاد

مثل الـ Direct 3D حيث يستخدم المطورين نفس التعليمات والأوامر ثم يتصرف الـ Direct 3D لوحده فهو بعد ذلك يهتم ببرامج القيادة ونوع المسرع الرسومي، وإلا فأمر رسم مكعب أو إلصاق مواد هو ذاته ذاته لا يتغيّر...
نعم بعض الأمور تختلف نتيجة اختلاف المسرعات ( مثل الـ AA ) ولكن في واجهة مثل PhysX الأمر لا يتغير لأن المحرك الفيزيائي يسعى لضمان التوافق قدر المستطاع

مثلاً عندما طُوّرت لعبة UT3 كانت تستخدم محرك Ageia وواجهة Ageia API، ولكن عندما قامت nVIDIA بشراء الشركة وحوّلت الـ PhysX ليستخدم CUDA لم يتغير شيء في اللعبة، كل ما تحتاجه هو تنزيل برامج قيادة الـ PhysX الأحدث وربما تحديث الـ UT3 لأنها كانت تبحث عن برنامج قيادة Ageia والذي لم يعد لازماً الآن...
أما داخل اللعبة وكل فيزيائياتها فهي ذات الأوامر وذات التأثيرات... فلعبة UT3 وجميع خرائط الـ PhysX الأولى لها تم تطويرها قبل شراء nVIDIA لـ Ageia ولكن كلها تعمل الآن بشكل عادي...


بخصوص تسميتك، فالأفضل حتى لايتيه المستخدمين الآخرين والقراء تسميتها باسم صحيح وهو المحرك الفيزيائي أو Physics Engine
فالأمر سبب ربكة كبيرة حتى قال الكثيرون في المنتدى أن الـ ATi لا تدعم الفيزيائية لأنهم لم يكونوا يعلمون ما هي الفيزيائية أساساً واختلط عليهم الـ PhysX بالـ Physics...

Extreme2
25-04-2009, 14:07
تسلم عزيز ..

وشكرا ( لموسوعة المنتدى ) الأخ الخلف على المعلومات والإضافات القيمة .

trt44
25-04-2009, 17:17
ثانياً : أحب أن أخبرك أن كل ما ذكرته أعرفه جيداً وأن الذي أظهر انني ربما أكون لم أفهم الأمر جيداً هو استخدامي لفظي Phyisics و PhysX


أخي مينا إن كنت تعرف كل ما قام الأخ الخلف بشرحه فقد تأكد لي أنك لا تعبر عن الامر جيداً كما قلت في أول رد لي في هذا الموضوع و ياريت جميع الأعضاء يبدؤن بتسمية الأمور بمسمياتها أو بأسماء دلالية و توضيحية أكثر لتجنب إيقاع غيرهم من الأعضاء ممن لا فكرة لديهم في الخطأ



Physics (وأعني بها هنا GPU Physics أي التسريع الفيزيائي الرسومي للألعاب وليست الفيزياء في المطلق) : هي التكنولوجيا نفسها أي الحركات الفيزيائية في الألعاب من انفجارات وغيره وهي التي تعتمد على واجهات مفتوحة المصدر أو حتى تأتي ضمن برمجة اللعبة مثل Farcry 2 أو Crysis


حاول أن تناديها GPGPU فهو المصطلح الاكثر وضوح و الأقل تسبباً للتشويش أما إذا ناديتها Physics فقط فأنت تعطي إيحاء بأنك فاهم الأمر خطأ بل و تتسبب بإعطاء أفكار خاطئة لبقية الأعضاء



PhysX : وأعني بها ما حولت Nvidia ال Physics اليه وهي عمليات التسريع الفيزيائية التي تعمل على كروتها فقط ببرنامج CUDA فقط


هل لديك إعتراض على هذا :confused: شركة قامت بشراء تقنية لإستخدامها في منتجاتها فماذا كنت تتوقع



من وجهة نظري ال PhysX شيء مغلق على إنفيديا فقط بال CUDA وإذا تحول الى ال OpenCL فلن يكون اسمه وقتها PhysX (بالنسبة لي) بل سيكون GPU Physics

مسمار جحا, أبيع لك الدار و لا أبيع لك المسمار :rolleyes:


شكراً جزيلاً أخي الخلف على المداخلة الممتازة جداً

abdallah937
26-04-2009, 00:33
شكرا اخي عزيز على الخبر الرائع وارجو ان يضيف الافضل الى عالم البرمجيات والفيجا

fastquickfox
26-04-2009, 01:19
اووف
واووو
waww
:ah4:
اخى الخلف
اسهرتنى الليل بدلا من النوم قارئا لهذا التوضيح الرائع
اخى مينا
ليست المصطلحات بما تهواه النفس :)

اخى عزيز
شكرا على الخبر

اقوم انام بقى واريح المعالج الفيزيائى بتاعى :D

aziz-50
27-04-2009, 06:13
نعم عزيزي عزيز، وتجد مقطعي الفيديو الخاصين بذلك العرض من كلا الشركتين في أول وصلتين وضعتهم في مشاركتي السابقة :)

هدفي من وضع الروابط هو قراءة تفاصيل التجربة فقط حتى نكون فكره كاملة


هل يعني هذا دعم ال GPU Physics عبر واجهة مفتوحة المصدر تختلف عن ال CUDA PhysX ؟

وهل يعني هذا بالتالي إنتهاء ال Nvidia PhysX ؟!

:)

للأسف نفس الأخطاء تتكرر بالرغم من التنبيه أكثر من مره ولاكن يبدوا أننا نستخدم المصطلحات حسب رغبتنا وليس حسب صحتها :).


أخي الخلف

أولاً : بارك الله فيك على علمك الواسع وعلى ترتيبك النقاط بشكل رائع

ثانياً : أحب أن أخبرك أن كل ما ذكرته أعرفه جيداً وأن الذي أظهر انني ربما أكون لم أفهم الأمر جيداً هو استخدامي لفظي Phyisics و PhysX

دائماً أحب أن أفرق بين كلاهما

فبالنسبة لي :

Physics (وأعني بها هنا GPU Physics أي التسريع الفيزيائي الرسومي للألعاب وليست الفيزياء في المطلق) : هي التكنولوجيا نفسها أي الحركات الفيزيائية في الألعاب من انفجارات وغيره وهي التي تعتمد على واجهات مفتوحة المصدر أو حتى تأتي ضمن برمجة اللعبة مثل Farcry 2 أو Crysis

PhysX : وأعني بها ما حولت Nvidia ال Physics اليه وهي عمليات التسريع الفيزيائية التي تعمل على كروتها فقط ببرنامج CUDA فقط

من وجهة نظري ال PhysX شيء مغلق على إنفيديا فقط بال CUDA وإذا تحول الى ال OpenCL فلن يكون اسمه وقتها PhysX (بالنسبة لي) بل سيكون GPU Physics

ربما سأقول لك مفاجئه لا تعلم بها وهي أن التجربة التي قامت بها Nvidia على ال OpenCL كأول تجربة على GPU أستخدمت واجهه CUDA لضم ال OpenCL : هل زادت حيرتك ياأخ مينا :).

Nvidia أستخدمت مايسمى ب CUDA architecture وهي تقنية جديده قامت بتطويرها عندما كانت تساهم في تطوير ال OpenCL مع شركة أبل , CUDA architecture هي قاعده أو واجهه للتعامل مع ال GPU يمكنها ضم تطبيقات ال OpenCL و C++ و DX11 وغيرها من التطبيقات وبالتالي يمكن دمع عده تقنيات داخلها , بحيث يحوي التطبيق تقنية CUDA في جزئيه تتفوق فيها تقنية CUDA مثلا , وأستخدام ال OpenCL في جزئية أخرى مما يعطي التطبيق قوة أكبر , وبالتالي فإن Nvidia حولت ال OpenCL إلى مكمل ل CUDA وليس منافس :) .


https://techreport.com/r.x/2008q4/cuda_arch.jpg

الخلف
27-04-2009, 08:14
ربما سأقول لك مفاجئه لا تعلم بها وهي أن التجربة التي قامت بها Nvidia على ال OpenCL كأول تجربة على GPU أستخدمت واجهه CUDA لضم ال OpenCL : هل زادت حيرتك ياأخ مينا :).

Nvidia أستخدمت مايسمى ب CUDA architecture وهي تقنية جديده قامت بتطويرها عندما كانت تساهم في تطوير ال OpenCL مع شركة أبل , CUDA architecture هي قاعده أو واجهه للتعامل مع ال GPU يمكنها ضم تطبيقات ال OpenCL و C++ و DX11 وغيرها من التطبيقات وبالتالي يمكن دمع عده تقنيات داخلها , بحيث يحوي التطبيق تقنية CUDA في جزئيه تتفوق فيها تقنية CUDA مثلا , وأستخدام ال OpenCL في جزئية أخرى مما يعطي التطبيق قوة أكبر , وبالتالي فإن Nvidia حولت ال OpenCL إلى مكمل ل CUDA وليس منافس :) .



https://techreport.com/r.x/2008q4/cuda_arch.jpg


يبدو أنك عزيزي عزيز لم تفهم القضية كما ينبغي...

الـ CUDA هو أساساً واجهة تقع بين المعالج الرسوميّ وبين لغة البرمجة، بمعنى أنها امتدادات للغة الأصلية وذلك لكي تتواصل مع معالجات CUDA، فمثلاً عندما تريد البرمجة بلغة الـ C فإنك ستحتاج لنسخة خاصة تسمى C for CUDA وهي مجرد لغة C العادية ولكن مع امتدادات CUDA، فعندما تبدأ بالعمل مع البرنامج فإنك تقوم بطلب بعض الوظائف الخاصة بالـ CUDA ثم تقوم بتشغيل البرنامج...

الـ OpenCL ليس مكمّل للـ CUDA هنا وإنما وسيلة أخرى للبرمجة... ما فعلته nV هو أنها جعلت الـ OpenCL يعمل من خلال الـ CUDA وذلك حفاظاً على الـ CUDA نفسه، فعندما تريد في الـ OpenCL أن تطلب وظيفة معينة فإنك ستطلب ذلك من الـ CUDA وليس من من المعالج الرسومي مباشرة عن طريق برامج القيادة

الأمر فيه حسنة هنا، فالـ CUDA لو أردنا تشبيهها بما يقابلها في AMD ستكون هي الـ Stream، فالـ Stream ستكون الواجهة بين برنامج القيادة وبين الـ OpenCL...

لماذا إذاً لايكون هناك شيء مباشر وحقيقي أي Native لجعل الـ OpenCL يتواصل مباشرة مع برنامج القيادة وبالتالي مع العتاد نفسه ؟
الحقيقة هذا له مساوئه مثلما له حسناته، فرغم أن حسناته تعني أنه سيمكن للشركات المالكة للـ GPU وهنا AMD و nVIDIA أن يعدّلان ويطوّران ويحسنان من الـ CUDA والـ Stream أكثر وأكثر خصوصاً عند إطلاق جيل جديد من المنتجات وذلك بدلاً من إجراء تلك التعديلات والتحديثات على الـ OpenCL ( والتي تأخذ زمناً طويلاً جداً ) فإن السؤال الذي يطرح نفسه هل سيتمكن الـ OpenCL من الوصول لكافة موارد المسرع الرسومي نظراً لكون CUDA نفسه لايتيح ذلك ؟

كلا من CUDA و Stream يعتبران منافسان لبعضهما، والـ OpenCL تستخدمهما كلاهما للوصول لموارد المسرع الرسومي، فبينما الـ Stream توفر واجهة CAL التي تتيح وصولاً مباشراً لجميع موارد المسرع الرسومي ( أو على الأقل أغلبها ) فإن CUDA لا توفر ذلك بمثل مرونة Stream، والحقيقة أنه يمكن لـ nVIDIA تغيير ذلك عبر تغيير CUDA نفسها، ولكن السؤال، لو أراد شخص ما أن يطوّر تطبيق OpenCL ويحتاج للوصول لبعض الموارد التي تتيحها Stream ولكن لايتيحها CUDA فكيف سيمكن للشخص ذلك أن يطوّر البرنامج ؟

سيضطر إلى اتباع أساليب برمجية مختلفة حتى تعوّض هذا النقص، على حساب الأداء أو على حساب المرونة
1- الأداء : عندما يستخدم أسلوباً لايحتاج لوصول مباشرة لموارد المسرع الرسومي، مثلاً الذاكرة الكاش الخاصة بالمعالج الرسوميّ، عند ذلك سيضطر لاستخدام أسلوب تقليدي غير مباشر مما يحدّه من الأداء
2- المرونة : يقوم بتطوير خطين معالجة أحدها لمعالجات AMD عبر Stream حيث سيكون له وصول لذاكرة الكاش الرسوميّة، وآخر ذكرناه في النقطة الأخرى وهو أن يستخدم أسلوب غير مباشر يحدّ من الأداء وذلك للتعامل مع معالجات nVIDIA عبر CUDA...

في كلتا الحالتين الأمر غير محبّذ لأنه في الحالة الأولى سيفتقد للأداء عن تطبيقات AMD وفي الحالة الثانية سيضطر لعمل خطّي معالجة وهذا أمر لا يحبّه المطوّرين لكونه يسهلك موارد الوقت والمال والتطوير... خصوصاً أن أحد أسباب تطوير OpenCL هو الابتعاد عن تصميم عدة خطوط معالجة من أجل التطبيقات المختلفة...

aziz-50
27-04-2009, 09:02
يبدو أنك عزيزي عزيز لم تفهم القضية كما ينبغي...

الـ CUDA هو أساساً واجهة تقع بين المعالج الرسوميّ وبين لغة البرمجة، بمعنى أنها امتدادات للغة الأصلية وذلك لكي تتواصل مع معالجات CUDA، فمثلاً عندما تريد البرمجة بلغة الـ C فإنك ستحتاج لنسخة خاصة تسمى C for CUDA وهي مجرد لغة C العادية ولكن مع امتدادات CUDA، فعندما تبدأ بالعمل مع البرنامج فإنك تقوم بطلب بعض الوظائف الخاصة بالـ CUDA ثم تقوم بتشغيل البرنامج...

الـ OpenCL ليس مكمّل للـ CUDA هنا وإنما وسيلة أخرى للبرمجة... ما فعلته nV هو أنها جعلت الـ OpenCL يعمل من خلال الـ CUDA وذلك حفاظاً على الـ CUDA نفسه، فعندما تريد في الـ OpenCL أن تطلب وظيفة معينة فإنك ستطلب ذلك من الـ CUDA وليس من من المعالج الرسومي مباشرة عن طريق برامج القيادة

الأمر فيه حسنة هنا، فالـ CUDA لو أردنا تشبيهها بما يقابلها في AMD ستكون هي الـ Stream، فالـ Stream ستكون الواجهة بين برنامج القيادة وبين الـ OpenCL...


أفهم هذه النقطة ولذلك قلت مكمل وما زلت عند رأيي

إذا كان يمكن دمج دوال API الخاصة ب CUDA مع دوال API الخاصة ب OpenCL ضمن برنامج واحد فكل واحد مكمل للآخر حيث ستعمل كل تقنية في جزء من البرنامج أو وظيفة محدده ليظهر البرنامج بالصورة الكاملة وبالتالي أستغلال أفضل مافي التقنيتين وفي هذه الحالة يعتبر مكمل.

أما إذا كانت العملية إستدعاء لل OpenCL عن طريق ال CUDA فقط دون القدرة على دمج تقنيات CUDA معها ضمن برنامج واحد عند ذلك نسميها غير مكملة ونعتبر ال OpenCL غير مكمل لل CUDA .



ما فعلته nV هو أنها جعلت الـ OpenCL يعمل من خلال الـ CUDA وذلك حفاظاً على الـ CUDA نفسه، فعندما تريد في الـ OpenCL أن تطلب وظيفة معينة فإنك ستطلب ذلك من الـ CUDA وليس من من المعالج الرسومي مباشرة عن طريق برامج القيادة

أختلف معك في هذه النقطة فال DX11 مثلا تم إضافته لل CUDA architecture هل كان حفاظا على ال CUDA ? لا أعتقد حيث يمكن أن يعمل ال DX11 على ال GPU مباشره دون الحاجة لوسيط CUDA سواء رضيت nVIDIA أم لا ترضى إذن لماذا تم دعمه من قبل CUDA architecture ؟

الغرض منها هو التكامل حيث يمكن دمج تطبيقات تعتمد على ال DX11 و CUDA في تطبيق واحد , كذلك يمكن من خلال CUDA architecture دمج ال DX11 و OpenCL و CUDA مثلا ضمن تطبيق واحد .