رسالة خطأ clEnqueueNDRangeKernel(): CL_MEM_OBJECT_ALLOCATION_FAILURE مرتبطة بـ OpenCL (لغة الحوسبة المفتوحة) وتشير إلى حدوث فشل في تخصيص الذاكرة عند محاولة تنفيذ kernel باستخدام clEnqueueNDRangeKernel. ويرجع ذلك عادة إلى عدم قدرة البرنامج على تخصيص ذاكرة كافية على وحدة معالجة الرسومات أو وحدة المعالجة المركزية لأداء العملية المحددة.
السبب: تتطلب البيانات الخاصة بالنواة أو عملياتها ذاكرة أكثر من الذاكرة المتاحة لوحدة معالجة الرسومات.
الحل: تقليل حجم مجموعة البيانات أو تحرير الذاكرة عن طريق إغلاق التطبيقات الأخرى التي تستخدم وحدة معالجة الرسومات.
السبب: قد تحدث تجزئة الذاكرة مع مرور الوقت ، مما يجعل من الصعب تخصيص كتل ذاكرة كبيرة ومتتالية.
الحل: أعد تشغيل البرنامج أو النظام لإزالة تجزئة الذاكرة.
السبب: قد يحاول البرنامج تخصيص ذاكرة غير صحيحة أو كبيرة جدًا.
الحل: تحقق من تخصيص الذاكرة في التعليمات البرمجية ، مثل طلب ذاكرة لمصفوفة كبيرة جدًا أو كائن.
السبب: قد تكون هناك ثغرة أمنية أو قيود في برنامج تشغيل وحدة معالجة الرسومات.
الحل: تأكد من تحديث برامج تشغيل GPU. إذا استمرت المشكلة ، فحاول العودة إلى الإصدار المستقر السابق.
السبب: قد يكون لمنصات OpenCL المختلفة (مثل AMD و NVIDIA و Intel) قيود مختلفة على تخصيص الذاكرة.
الحل: تحقق من القيود المحددة لمنصتك وتأكد من أن برنامجك ضمن هذه القيود.
السبب: قد يؤدي تشغيل برامج OpenCL متعددة أو تطبيقات أخرى تستخدم وحدات معالجة الرسومات بكثافة إلى استنفاد الموارد المتاحة.
الحل: تقليل عدد البرامج أو المهام التي تستخدم وحدة معالجة الرسومات في نفس الوقت.
إذا استمرت المشكلة بعد تجربة الطرق المذكورة أعلاه ، فيمكنك تقديم المزيد من المعلومات السياقية حول حدوث الخطأ ، مثل نوع وحدة معالجة الرسومات المستخدمة أو حجم البيانات أو التغييرات الأخيرة في النظام أو التعليمات البرمجية. وهذا يسمح بإيجاد حلول أكثر استهدافا.