كيفية البدء باستخدام Metal Compute على نظام macOS

آخر تحديث: 17/12/2025
نبذة عن الكاتب: إسحاق
  • تستفيد تقنية Metal Compute على نظام macOS من الذاكرة الموحدة لمعالجات Apple Silicon لتقليل النسخ، وتحسين التوازي بين وحدة المعالجة المركزية ووحدة معالجة الرسومات، والتوسع إلى مجموعات بيانات كبيرة جدًا.
  • يقدم المعدن 4 هياكل جديدة من الأوامرجداول الوسائط، ومجموعات الإقامة، والموارد المتفرقة التي تعمل على تحسين إدارة الذاكرة والموارد.
  • يتيح التكامل الأصلي للتعلم الآلي من خلال MTLTensor و Shader ML و MTL4MachineLearningCommandEncoder إمكانية التداخل الشبكات العصبية مع الرسومات والحوسبة.
  • أدوات مثل Xcode GPU Frame Debugger وML Network Debugger وMetalFX تُسهّل عملية تصحيح الأخطاء وتحسين جودة الرسومات في الألعاب. التطبيقات المهنيين.

مقدمة إلى الحوسبة المعدنية على نظام macOS

إذا كنت تقوم بالبرمجة بتنسيق نظام macOS وتريد الحصول على أقصى استفادة من وحدة معالجة الرسومات (GPU) الخاصة بك ماكعاجلاً أم آجلاً، ستصادف Metal. إنها ليست مجرد "واجهة برمجة تطبيقات رسومية أخرى": إنها البوابة إلى الأداء الخام لمعالج Apple Silicon وكل ما يأتي معه (ألعاب AAA، تحرير الفيديو، IA، المحاكاة العلمية...).

في الأجيال الأخيرة، وخاصة مع تقنيتي Metal 3 وMetal 4، حققت شركة آبل قفزة هائلة في الرسومات، والحوسبة العامة (الحوسبة المعدنية)، والتعلم الآليفي هذه المقالة، سنلقي نظرة مفصلة وعملية على كيفية البدء باستخدام Metal Compute على نظام macOS، وما تقدمه بنية Apple Silicon، وكيفية تنظيم قوائم الانتظار ومخازن الأوامر والمشفرات بشكل صحيح، وكيفية الاستفادة من الميزات الأكثر تقدمًا مثل الموترات وMetalFX وتتبع الأشعة والتجميع المسبق للتظليل.

ما هو Metal ولماذا نستخدم Metal Compute على نظام macOS؟

المعدن هو واجهة برمجة تطبيقات الرسومات والحوسبة منخفضة المستوى من Appleلقد وُلدت كبديل لـ OpenGL/OpenCL، وعلى مر السنين، أصبحت المعيار للنظام البيئي بأكمله: macOS، آيفون, iPadOSنظاما التشغيل tvOS و visionOS. وهو يقدم نموذجًا من البرمجة تكاليف تشغيل منخفضة، قريبة جدًا من خردوات، مع تحكم مباشر في وحدة معالجة الرسومات.

في السنوات الأخيرة، شكلت موسيقى الميتال أساسًا لـ ألعاب تتطلب مواصفات عالية مثل Cyberpunk 2077 و Assassin's Creed Shadows و Control Ultimate Editionبالإضافة إلى التطبيقات الاحترافية لتحرير الفيديو، والرسومات ثلاثية الأبعاد، والتصميم بمساعدة الحاسوب، والعلوم، فإنه يعتمد على كل من مكون الرسومات و Metal Compute، وهو المكون المصمم لتشغيل نوى الحوسبة على وحدة معالجة الرسومات.

يأخذ كل من Metal 3 و Metal 4 هذا النهج إلى أبعد من ذلك بكثير: هياكل أوامر جديدة، وإدارة صريحة للذاكرة، حواجز تزامن مفصلة، ​​وموارد متناثرة، وجداول وسيطات، ومجموعات إقامة، وتتبع الأشعة، وMetalFX للترقية وتداخل الإطارات، والتوافق من الدرجة الأولى مع التعلم الآلي من خلال الموترات والمشفرات المخصصة.

البنية الأساسية للحوسبة المعدنية في نظام macOS

لفهم كيفية البدء باستخدام Metal Compute على نظام macOS، يجب أن تكون على دراية ببعض العناصر الأساسية: الجهاز، قوائم الانتظار، مخازن الأوامر، مشفرات الأوامر والمواردجميعها متوفرة من خلال إطار عمل Metal الخاص بشركة Apple.

نقطة الدخول هي جهاز MTLDيمثل هذا وحدة معالجة الرسومات (GPU) التي ستعمل معها. في أجهزة Mac المزودة بمعالج Apple Silicon، عادةً ما يكون لديك جهاز واحد، على الرغم من أن أجهزة Mac المزودة بوحدات معالجة رسومات مخصصة قد تحتوي على عدة وحدات. من هذا الجهاز، يمكنك إنشاء قائمة أوامر MTL، وهو الطابور الذي ستوضع فيه مهام وحدة معالجة الرسومات.

أنت تولد على هذا الذيل مخزن أوامر MTLهذه "حزم" من العمل تُرسل إلى وحدة معالجة الرسومات (GPU). داخل كل مخزن مؤقت للأوامر، تستخدم مشفرات مختلفة لترميز عمليات محددة: MTLComputeCommandEncoder لحساب النوى، MTLRenderCommandEncoder للعرض و مشفر أوامر MTLBlit للنسخ وعمليات الذاكرة.

تُنفذ عمليات الحوسبة في Metal كدوال مكتوبة بلغة تظليل Metal (MSL). تقوم بتجميع هذه الدوال في خط معالجة الحوسبة (MTLComputePipelineState) ثم، من المشفر، تقوم بإرسالها مع عدد معين من الخيوط ومجموعات الخيوط لمعالجة بياناتك بالتوازي.

يتم تخزين البيانات التي تعمل معها هذه النوى في الموارد: MTLBuffer للبيانات الأولية (المصفوفات، الهياكل، إلخ) و نسيج MTLTexture بالنسبة للبيانات ذات البنية التصويرية (الصور، خرائط العمق، خرائط المكعبات...). يتضمن Metal 4 أيضًا MTLTensor، مصممة خصيصاً لأحمال عمل التعلم الآلي متعددة الأبعاد.

نموذج التنفيذ وأفضل الممارسات مع مخازن الأوامر

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

التسلسل النموذجي لمهمة حسابية هو: إنشاء مخزن مؤقت للأوامر من قائمة الانتظار، وإضافة مشفر الحساب، قم بإنشاء مسار الحوسبة، وربط المخازن المؤقتة والنسيج اللازمة، وإرسال النواة (مرة واحدة أو عدة مرات)، وإغلاق المُشفِّر، وأخيرًا، ارتكاب من مخزن الأوامر. يمكنك اختيارياً استخدام معالجات الإكمال أو طرق الانتظار للمزامنة مع وحدة المعالجة المركزية.

أحد التفاصيل الرئيسية هي أن تتيح تقنية Metal ترميز مخازن أوامر متعددة بالتوازي من خيوط معالجة مركزية مختلفةإذا كنت ترغب في التوسع بشكل جيد على جهاز MacBook Pro مع M1 Pro أو M1 Max (16 أو 32 نواة GPU)، فستحتاج إلى استخدام خيوط وحدة المعالجة المركزية المتعددة بالتوازي، حيث يقوم كل منها بإعداد مخزن الأوامر الخاص به مع مجموعة الموارد والمشفرات الخاصة به.

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

عندما يكون ترتيب مخازن الأوامر مهمًا، يمكنك اللجوء إلى إدراج بقائمة الانتظار لحجز مكانهم في قائمة الانتظار أو ببساطة استدعاء دالة commit بالترتيب الصحيح. الحالات الأكثر تطلبًا (متدفق (من الموارد، وتتبع الأشعة، وما إلى ذلك) يمكن دمج قوائم انتظار متعددة ومزامنتها باستخدام أحداث MTLEvent.

بنية الذاكرة الموحدة وإدارة الذاكرة

ما هو نوع ملف لوحة التحكم (CPL)؟

تُعد بنية الذاكرة الموحدة لمعالجات Apple Silicon أحد أسباب... تتألق تقنية الحوسبة المعدنية على نظام macOSتتشارك وحدة المعالجة المركزية ووحدة معالجة الرسومات في مجموعة واحدة من الذاكرة الفعلية، لذلك يمكن الوصول إلى مورد من كليهما دون نسخ صريحة.

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

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

  AirPods Pro 3: كل ما نعرفه عن الإصدار الكبير القادم من Apple

كما يقدم المعدن مفهوم مجموعة العملهذا هو مقدار الذاكرة التي يمكن لمشفّر الأوامر الواحد الوصول إليها في أي وقت دون تكبّد تكاليف باهظة في عمليات نقل الذاكرة. يوفر الجهاز مؤشرًا عبر خاصية `recommendedMaxWorkingSetSize`، والتي يجب التحقق منها والالتزام بها لتجنب أي مفاجآت.

أما في الأجهزة الحديثة المزودة بمعالجات Apple Silicon، فالأرقام مذهلة: إذ يسمح معالج M1 Max المزود بذاكرة وصول عشوائي (RAM) سعتها 32 جيجابايت لوحدة معالجة الرسومات (GPU) بالوصول إلى حوالي ذاكرة 21 جيجا بايتيُوفر طراز 64 جيجابايت ما يقارب 48 جيجابايت من ذاكرة الوصول العشوائي للفيديو (VRAM) التي يُمكن لوحدة معالجة الرسومات (GPU) الوصول إليها. وهذا يُتيح إنشاء مشاهد ومجموعات بيانات ضخمة كانت في السابق ممكنة فقط على محطات العمل المكتبية ذات ذاكرة الوصول العشوائي للفيديو الضخمة.

الموارد، وجداول الحجج، ومجموعات الإقامة في Metal 4

لم تعد التطبيقات الحديثة، وخاصة محركات الألعاب المعقدة، تعمل بأربعة نسيجات وعدد قليل من المخازن المؤقتة، بل بآلاف من الموارد المتزامنة: الشبكات، والنسيج عالي الدقة، وخرائط الإضاءة، وهياكل التسريع لتتبع الأشعة وهكذا دواليك. إن الطريقة التقليدية لربط الموارد (عدد ثابت من الخانات لكل عملية سحب/إرسال) لا تفي بالغرض.

يُعدّ نموذج "الربط غير المباشر" حلاً شائعاً في أحدث أجيال واجهات برمجة التطبيقات (APIs): فبدلاً من ربط عشرات الموارد في كل عملية سحب، يتم تجميع المعلومات في مخزن الوسائط ويقوم برنامج التظليل بفهرستها. أما Metal 4 فيأخذ الأمر خطوة أبعد مع جداول الوسائط، والتي تعمل كحاويات للروابط حسب المرحلة (الرأس، الجزء، الحساب ...)، ولكن يمكنك مشاركتها وتكوينها مسبقًا.

يتم تعديل حجم كل جدول وسائط ليتناسب مع عدد الخانات المطلوبة. في نموذج لا يعتمد على الربط، قد يكفي ربط واحد بمخزن وسيطات يحتوي على مُعرّفات للعديد من الموارد. عند رسم أو إرسال النوى، يقوم Metal بتجميع الوسائط ويضمن أن الوصول آمن حتى لو قمت بتغيير مورد بين عمليات الرسم.

الركيزة الأخرى هي سكن المواردحتى مع وجود ذاكرة موحدة، تحتاج وحدة معالجة الرسومات إلى معرفة الموارد التي يجب أن تكون "مُقيمة" لمجموعة معينة من المهام. يقدم Metal 4 مجمعات سكنية، حيث تقوم بتجميع الموارد التي تريد أن تتمكن وحدة معالجة الرسومات من الوصول إليها أثناء تشغيل مخزن الأوامر أو قائمة الانتظار بأكملها.

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

مثال واقعي: في لعبة Control Ultimate Edition، قسّم برنامج Remedy موارده إلى عدة مجموعات تخزين بناءً على الاستخدام (المشهد الأساسي، المؤثرات، تتبع الأشعة، إلخ) ونقل تحديث هذه المجموعات إلى عملية خلفية. هذا قلل من الحمل الزائد على مجموعات التخزين واستهلاك الذاكرة عند تعطيل تتبع الأشعة، مما حسّن الأداء. الأداء والاستقرار.

الموارد الموزعة وإدارة الذاكرة الدقيقة

عندما تتعامل لعبة أو تطبيق مع عوالم ضخمة، أو نصوص عملاقة، أو مجموعات بيانات كبيرة، لا يمكن تخزين كل شيء في الذاكرة دفعة واحدة بالطريقة التقليدية. وهنا يأتي دور... الموارد الموزعة مع التخصيص اليدوي، تم تقديمها في Metal 4 للمخازن المؤقتة والقوام.

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

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

يركز Metal 4 بشكل كبير على التزامن، لذا يجب أن تكون تحديثات التعيين هذه متزامنة بشكل جيد. يتم توفير واجهة برمجة تطبيقات للحواجز لهذا الغرض. تزامن المسرح مع انخفاض الحمل الزائد، بما يتماشى مع ما تقدمه واجهات برمجة التطبيقات الحديثة الأخرى (Vulkan، DirectX 12). يتيح لك هذا تحديث تخصيص الذاكرة في خيط واحد بينما يتم ترميز مخازن الأوامر الأخرى أو تقوم وحدة معالجة الرسومات بمعالجة مهام مفيدة.

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

برمجة الأوامر في Metal 4: العرض، والحساب، والحواجز

تعمل تقنية Metal 4 على إعادة تنظيم وتبسيط طريقة ترميز العمل. فبدلاً من وجود العديد من أجهزة الترميز المتخصصة، يوجد مكونان رئيسيان: MTL4RenderCommandEncoder وجهاز تشفير حسابي موحد والذي يشمل الشحنات، وعمليات النقل السريع، وبناء هياكل التسريع.

من الناحية الحاسوبية، هذا يعني أنه يمكنك ترميز عمليات نقل البيانات (blits) والنوى وعمليات تتبع الأشعة في مُشفِّر واحد، وسيقوم Metal بتنفيذ كل شيء بالتوازي ما لم تكن هناك تبعيات بيانات صريحة. عندما توجد تبعية (على سبيل المثال، عملية نقل بيانات تملأ مخزنًا مؤقتًا ثم تقرأه النواة)، يتم التعبير عنها باستخدام الحواجز.

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

يُجنّبك هذا إنشاء مُشفّرات عرض جديدة في كل مرة ترغب فيها بالكتابة إلى مجموعة مختلفة من المخرجات. يمكنك ضبط جميع الملحقات التي ستحتاجها في مُشفّر واحد، وإنشاء خرائط ألوان قابلة لإعادة الاستخدام، وتعيينها إلى مسارات المعالجة المختلفة. يمكنك تقليل عدد أجهزة التشفير وعدد عمليات العرض بشكل كبير ضروري.

لتحقيق التزامن بين الحوسبة والعرض، أو بين أجهزة التشفير المختلفة في نفس قائمة الانتظار، يوفر Metal 4 ما يلي: حواجز الطابور، يتم ترشيحها حسب المراحل: التجزئة، الرأس، إرسال الحساب، النسخ، التسريع، التعلم الآلي، إلخ. وهذا يسمح لك بالقول، على سبيل المثال، "لا يمكن لمرحلة التجزئة قراءة هذا النسيج حتى تنتهي مرحلة الإرسال التي تكتبه".

مثال كلاسيكي: تقوم نواة الحوسبة بـ محاكاة الغلاف الجوي ثم تُكتب البيانات إلى نسيج؛ بعد ذلك، تستخدم عملية العرض هذا النسيج في مُظلل الأجزاء لإضاءة المشهد، بينما يمكن أن يتداخل تظليل الرؤوس بسلاسة مع الحساب. مع وجود حاجز مُحكم (من مرحلة الإرسال إلى مرحلة الأجزاء)، تضمن استفادة وحدة معالجة الرسومات بشكل كامل من التداخل دون الإخلال بأي تبعيات للبيانات.

  كيفية التقاط لقطة شاشة على نظام Mac: الدليل الكامل

تجميع التظليلات وخطوط الأنابيب في Metal 4

تُدير التطبيقات الحديثة، وخاصة الألعاب، مئات أو آلاف من تظليلات وحالات المعالجة (خطوط الأنابيب). إن تجميع كل هذه البيانات سيئة الإدارة يؤدي إلى تقطعات وشاشات تحميل لا نهاية لها. يقدم Metal 4 عدة مكونات للتخفيف من هذه المشكلة.

من جهة، هناك الجديد مترجم MTL4واجهة منفصلة عن الجهاز تُستخدم للتحكم بشكل أكثر دقة في وقت تجميع الشيدرز وخطوط المعالجة. يمكنك إنشاء سياقات بناء، واستخدام خيوط متعددة أو قوائم انتظار Grand Central Dispatch، والسماح للنظام بـ إعطاء الأولوية لعمليات البناء وفقًا لجودة الخدمة من الخيط الذي يستدعيها.

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

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

صحيح أن هناك حالات تتسبب فيها هذه المرونة في تكلفة صغيرة لوحدة معالجة الرسومات (على سبيل المثال، عندما يكتب برنامج تظليل الأجزاء قنوات أكثر مما يحتويه المرفق فعليًا)، ولكن يمكنك تحديد المتغيرات الأكثر أهمية باستخدام Metal System Trace في Instruments وتجميع إصدارات "الحالة الكاملة" في الخلفية لاستبدالها عندما تكون جاهزة.

وللمضي قدماً، يوفر Metal 4 نسخة تجريبية كاملة في مرحلة الوصول المبكر. يمكنك تسلسل نصوص تهيئة خط الأنابيب قم بتضمينها بتنسيق JSON (mtl4-json) من لعبتك الخاصة، وقم بتغذيتها إلى أداة سطر الأوامر metal-tt جنبًا إلى جنب مع مكتبات Metal IR الخاصة بك وقم بإنتاج ملفات .metal مع ثنائيات GPU المجمعة مسبقًا.

أثناء التشغيل، يتم تحميل أرشيف MTL4 من خلال هذه الملفات، يمكنك البحث عن مسارات المعالجة باستخدام مُعرّفها تمامًا كما لو كنت تُجمّعها على الجهاز. إذا فشل البحث (بسبب فقدان مسار المعالجة أو عدم توافق نظام التشغيل أو بنية النظام)، يمكنك دائمًا اللجوء إلى التجميع على الجهاز كخطة بديلة.

الحوسبة والتحسين باستخدام تقنية Metal على معالجات Apple Silicon

في أجهزة MacBook Pro الحديثة المزودة بمعالجات مثل M1 Pro و M1 Max، تحتوي وحدة معالجة الرسومات على عدد أكبر بكثير من النوى مقارنةً بمعالج M1 الأساسي، بالإضافة إلى ميزات أخرى. عرض نطاق ترددي للذاكرة أعلى بكثيرلتحقيق أقصى استفادة من الحوسبة المعدنية، يُنصح بتعديل كل من توزيع المهام وبنية النواة.

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

بالإضافة إلى ذلك، يمكن أن تستفيد الأنسجة من ضغط بدون فقدان للبيانات، شفاف بالنسبة للمظلل عندما تكون موارد وحدة معالجة الرسومات محدودة، يُستخدم ضغط ASTC/BC (بنسبة أعلى بكثير) عندما يكون فقدان الجودة مقبولاً. هذا يقلل من استهلاك الذاكرة وعرض النطاق الترددي، وهو أمر بالغ الأهمية للنوى التي تتطلب قراءة مكثفة.

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

انخفاض نسبة الإشغال بالإضافة إلى انخفاض عدادات الحد الأدنى يشير عادةً إلى أنك تعاني من نقص في المساحة. سجلات أو ذاكرة مجموعة الخيوطتتيح لك أدوات Metal وXcode عرض بيانات تجاوز سعة السجلات وغيرها من بيانات المُصرّف. ومن الإجراءات التي تُخفف الضغط عادةً: تقليل حجم الهياكل المحلية، وتفضيل أنواع البيانات ذات 16 بت كلما أمكن، وتجنب المصفوفات الكبيرة ذات الفهرسة الديناميكية على المكدس.

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

التعلم الآلي والحوسبة المعدنية: الموترات والتعلم الآلي باستخدام التظليل

يدمج Metal 4 التعلم الآلي في صميم واجهة برمجة التطبيقات (API). لم يعد الأمر يقتصر على استخدام CoreML كصندوق أسود للاستدلالات المعزولة، بل أصبح يتعلق بـ قم بدمج الشبكات العصبية مع عمليات الحوسبة والعرض الخاصة بك على نفس الجدول الزمني لوحدة معالجة الرسومات.

الجزء الأساسي هو MTLTensorموارد متعددة الأبعاد مصممة لتمثيل بيانات التعلم الآلي: الأوزان، والتنشيطات، والمدخلات، والمخرجات. على عكس الصور النسيجية، التي تقتصر على بعدين وعدد قليل من القنوات، يمكن أن يكون للموترات نطاق عشوائي، ولكل بعد امتداده وخطواته المضمنة الخاصة به، مما يبسط عملية الفهرسة بشكل كبير.

يمكنك إنشاء موترات من الجهاز (استلام تخطيط معتم مُحسَّن لوحدة معالجة الرسومات) أو من MTLBuffer موجود، وفي هذه الحالة تحدد يدويًا خطوات الموتر لتغليف منطقة الذاكرة المطلوبة، بما في ذلك الخطوات الممكنة. التعبئة أو الأعمدة غير المستخدمة.

لتشغيل الشبكات الكاملة على خط زمني وحدة معالجة الرسومات، يوفر Metal 4 MTL4MachineLearningCommandEncoderتنقسم عملية سير العمل إلى مرحلتين: في المرحلة الأولى، تقوم بتحويل النموذج الخاص بك (على سبيل المثال من PyTorch أو TensorFlow) إلى CoreML، ثم إلى... حزمة MTL باستخدام أداة metal-package-builder، يمكنك أثناء التشغيل فتح تلك الحزمة كمكتبة، وتحديد واصف دالة مع مدخلات الشبكة الرئيسية، وبناء MTL4MachineLearningPipelineState.

بمجرد حصولك على مسار AA، تقوم بإنشاء مُشفِّر ML، وتُسند إليه المسار، وتربط موترات الإدخال والإخراج، وتُرسل الشبكة باستخدام طريقة مُحددة تستخدم MTLHeap هو نوع من أنواع وضع التخزين الوسيطيتم تحديد الحد الأدنى للذاكرة المطلوبة بواسطة intermediateHeapSize الخاص بخط الأنابيب، مما يسمح لك بتحديد حجم الكومة بدقة حسب الحاجة وإعادة استخدامها عبر مكاتب متعددة.

الأمر المثير للاهتمام هو أن هذا العمل الخاص بـ AA يتكامل تمامًا مع عناصر التزامن الأساسية في Metal 4. يمكنك استخدام الحواجز والأسوار مع مرحلة التعلم الآلي MTLStage لمزامنة، على سبيل المثال، عرض إطار مع مخرجات شبكة منع التعرج الزمني، أو لتشغيل أجزاء مستقلة من خط أنابيب الرسومات بالتوازي بينما تعالج الشبكة بياناتها.

  كيفية استخدام Magnet على Mac كبديل لـ Snap على Windows

بالنسبة للشبكات الصغيرة أو لدمج الذكاء الاصطناعي في التظليلات الحالية، يصبح الأمر ذا أهمية. Shader MLهنا، بدلاً من التعامل مع الشبكة كصندوق أسود يتم تشغيله من مُشفِّر مضاد للتشويش، تقوم بدمج العمليات مباشرةً في مُظلِّلاتك باستخدام MTLTensor و مكونات الأداء المعدني (MPP) لأجهزة الشد، مثل matmul2d لعمليات ضرب المصفوفات والالتفافات المحسّنة.

ومن الأمثلة التمثيلية جداً ما يلي: ضغط المواد العصبيةفي سير العمل التقليدي، يقوم مُظلل الأجزاء بأخذ عينات من الخامات مثل البياض، والمتجهات العمودية، والخشونة، وما إلى ذلك، ويستخدمها للتظليل. أما مع المواد العصبية، فبدلاً من ذلك، يتم أخذ عينات من الخامات "الكامنة"، وبناء موتر إدخال من تلك القيم، وتقييم شبكة صغيرة داخل المُظلل (باستخدام دالة matmul2d وتنشيطات شبيهة بدالة ReLU)، والحصول على مادة مُفككة الضغط في ذاكرة الخيوط تُغذي خوارزمية التظليل.

يقلل هذا النهج من استخدام الذاكرة ومساحة القرص - وقد تم تحقيقه في التجارب العملية ضغط المواد إلى نصف حجم ضغط الكتل التقليدي- الحفاظ على جودة بصرية لا يمكن تمييزها تقريبًا عند دمج المادة في الإضاءة النهائية.

لا تقتصر عمليات Shader ML على تظليل الأجزاء فقط؛ بل يمكن استخدامها في أي مرحلة (الرأس، الحساب، إلخ). مع ذلك، عند تهيئة matmul2d أو أدوات مشابهة، يجب مراعاة ما إذا كانت العملية ستُنفذ بواسطة خيط واحد أو بواسطة مجموعات أكبر (simdgroup، threadgroup)، وما إذا كان تدفق التحكم والفهرسة على الموترات سيكون... موحد أو متباينلاختيار طريقة التنفيذ المناسبة وتجنب المفاجآت.

تقنية MetalFX، وتتبع الأشعة، والألعاب عالية الأداء

في عالم الألعاب، يتحد Metal 4 مع ميتال اف اكس لمعالجة مشكلتين حاسمتين: الأداء وجودة الصورة. قد يؤدي العرض بدقة أصلية مع تتبع الأشعة والانعكاسات المعقدة والمؤثرات المتقدمة إلى استهلاك موارد حتى أقوى وحدات معالجة الرسومات، لذا فإن وجود حل متكامل لترقية الدقة واستكمال الإطارات في النظام البيئي أمر لا يقدر بثمن.

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

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

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

يتضمن Metal 4 أيضًا بنية تتبع أشعة متكاملة: هياكل تسريع، وأوامر محددة، ودعم في مشفرات الحساب والعرض لإطلاق الأشعة. بالإضافة إلى كل ما ذُكر أعلاه (الإقامة، والموارد المحدودة، وتجميع خط الأنابيب الفعال، وMetalFX...)، فإنه يسمح تتضمن ألعاب AAA متطورة إلى نظام macOS دون تنازلات كبيرة.

تستفيد المحركات الحديثة بالفعل من هذه الإمكانيات. هناك أمثلة على عناوين تقوم ببث غيغابايتات من البيانات الهندسية والنسيجية، وتنفيذها آلاف من وحدات التظليل مقسمة إلى مسارات مرنة واستخدام تقنيات البث المتقدمة القائمة على أكوام التوزيع والموارد المتفرقة للتكيف مع الذاكرة المتاحة على كل جهاز.

أدوات تصحيح الأخطاء وقوالب للبدء

كل هذه القوة ستكون غير قابلة للإدارة بدون أدوات جيدة. يوفر كل من Xcode وأدوات Apple مجموعة شاملة إلى حد كبير لـ تصحيح أخطاء تطبيقات Metal وتحسينها، بما في ذلك تلك التي تستخدم الحوسبة المعدنية بشكل مكثف.

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

فيما يتعلق بالتزامن، عارض التبعيات يوضح بشكل بياني كيفية ارتباط مخازن الأوامر والمشفرات والحواجز والأحداث، مما يساعد في تحديد حالات عدم تطابق التزامن أو التزامن الزائد الذي يعيق وحدة معالجة الرسومات أكثر مما ينبغي.

بالنسبة لأحمال عمل التعلم الآلي، الجديد مصحح أخطاء شبكة التعلم الآلي يُعدّ هذا البرنامج مفيدًا للغاية، إذ يُتيح لك تصور بنية الشبكة (العمليات، والوصلات، والموترات الوسيطة)، كما يُتيح لك فحص مخرجات كل عقدة لاكتشاف مواضع ظهور البيانات غير المرغوب فيها أو القيم غير المتوقعة. وبالاقتران مع عارض MTLTensor، يُمكنك مقارنة المدخلات والمخرجات وعزل أخطاء التنفيذ أو التصدير في النموذج.

على مستوى التطوير اليومي، يتضمن Xcode التحقق من صحة واجهة برمجة تطبيقات Metal والتحقق من صحة التظليل يحذر من الأنماط الخطيرة أو غير الصحيحة تمامًا، ويقدم قالب مشروع لعبة Metal 4 للبدء بسرعة: ما عليك سوى بدء مشروع، واختيار "قوالب الألعاب" وتحديد Metal 4 كتقنية.

إذا كنت تستخدم محركات تطوير خارجية مثل Unity، فيمكنك تفعيل Metal كواجهة برمجة تطبيقات رسومية افتراضية على macOS وiOS وtvOS. يوفر Unity دعمًا للميزات المتقدمة (مثل تظليل الحوسبة، والتجزئة، وأهداف العرض بدون ذاكرة على iOS/tvOS، وما إلى ذلك)، ولكن يجدر التذكير بأن لا يدعم المعدن تظليل الهندسة وأن دعم Metal في الأجهزة القديمة يقتصر على Metal 2 أو Metal 3.

وأخيرًا، تُعدّ وثائق أبل الرسمية، ونماذج التعليمات البرمجية، والمحادثات التقنية المنشورة بانتظام، كنزًا ثمينًا يستحق المتابعة. حالات استخدام واقعية، وأنماط التحسين، واستراتيجيات الموانئ من واجهات برمجة التطبيقات الأخرى مثل DirectX أو Vulkan إلى Metal.

بفضل كل ما يقدمه Metal 4 - بدءًا من نموذج أوامر أكثر مرونة وكفاءة، مرورًا بإدارة متقدمة للذاكرة والموارد المحدودة، وصولًا إلى التكامل العميق مع التعلم الآلي وتقنيات مثل MetalFX وتتبع الأشعة - فإن البدء باستخدام Metal Compute على macOS يعني أن تمتلك بين يديك منصة قادرة على تشغيل ألعاب الجيل القادمالتطبيقات الاحترافية من الدرجة الأولى وحلول الذكاء الاصطناعي المعقدة ممكنة، بشرط أن تخصص بعض الوقت لفهم بنيتها، والاستفادة من أدواتها، وهيكلة مواردك وخطوط الإنتاج الخاصة بك بشكل فعال.

memtest macos
المادة ذات الصلة:
كيفية إجراء اختبار RAM على نظام macOS خطوة بخطوة