رمز الخطأ: E1200

الفئة: وقت التجميع: عدم تطابق ناتج تخفيف الحِمل إلى المضيف

يحدث هذا الخطأ عندما يتم عرض متّجه متعدّد الأبعاد تم تخفيف حِمله بشكل صريح إلى ذاكرة المضيف كناتج للبرنامج، ولكن لم يتم ضبط توقيع ناتج البرنامج على توقّع ذاكرة المضيف.

أمثلة على رسائل الخطأ:

INVALID_ARGUMENT: Tensor which is moved to host (starting from tuple.64) is returned from the entry computation but the layout for this output is not set to host memory.

برامج XLA الخلفية: وحدة معالجة الموتّرات، وحدة معالجة الرسومات

نظرة عامة

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

  1. الانتقال إلى الجهاز: يؤدي التعليق التوضيحي المطابق إلى نقل المتّجه متعدّد الأبعاد مرة أخرى إلى المسرّع.
  2. الحساب على الجهاز المضيف: يتم استخدام الموتر من خلال عملية على الجهاز المضيف.
  3. نهاية البرنامج: يصل الموتر إلى نهاية البرنامج ويصبح ناتجًا.

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

تصحيح الأخطاء

لحلّ هذا الخطأ، حدِّد ما إذا كنت تريد أن يكون هذا الموتر ناتجًا على المضيف أو ما إذا كان يجب نقله مرة أخرى إلى الجهاز قبل إرجاعه.

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

  • المقصود إرجاع الموتر على الجهاز: إذا كان من المفترض أن يبقى الموتر على الجهاز أو أن يعود إليه قبل انتهاء البرنامج، من المحتمل أنّك لم تلاحظ تعليقًا توضيحيًا. أدرِج تعليقًا توضيحيًا مطابقًا لنقل الموتر مرة أخرى إلى الجهاز.

إذا كان مصدر المتّجه المتعدّد الأبعاد الذي تم تخفيف الحِمل عنه غير واضح، أو إذا لم تتمكّن من العثور على مكان عدم توفّر التعليق التوضيحي "نقل إلى الجهاز"، استخدِم تسجيل XLA لتتبُّع التعليمات.

  • تفعيل التسجيل: إذا كنت تستخدم Google Cloud TPU، أعِد تشغيل برنامجك باستخدام العلامة التالية: --vmodule=host_offloader=1.
  • تحليل السجلات: ابحث عن ناتج "التتبُّع" في السجلات. سيؤدي ذلك إلى عرض مسار الموتر بدءًا من تعليمات تخفيف الحِمل. استخدِم هذه السمة لتحديد المكان الذي يصل فيه الموتر إلى حدود البرنامج بدقة بدون أن تتم إعادته إلى الجهاز.