ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

التعرج في XLA

يصف هذا المستند واجهة برمجة التطبيقات للاسم المستعار لـ XLA: عند إنشاء برنامج XLA ، يمكنك تحديد الاسم المستعار المطلوب بين المخازن المؤقتة للإدخال والإخراج.

تعريف التعرج في وقت الترجمة

على سبيل المثال ، ضع في اعتبارك وحدة HLO تافهة تضيف ببساطة 1 إلى مدخلاتها:

 HloModule increment

ENTRY entry {
  %p = f32[] parameter(0)
  %c = f32[] constant(1)
  ROOT %out = f32[] add(%p, %c)
}
 

ستقوم هذه الوحدة بتخصيص مخزنين مؤقتين 4 بايت: واحد للإدخال %p والآخر للإخراج %out .

ومع ذلك ، غالبًا ما يكون من المرغوب فيه إجراء التحديث في مكانه (على سبيل المثال ، إذا لم يعد متغير الإدخال موجودًا في الواجهة الأمامية بعد التعبير ، كما هو الحال في الزيادة p++ ).

لإجراء مثل هذا التحديث بكفاءة ، يمكنك تحديد الاسم المستعار للإدخال:

 HloModule increment, input_output_alias={ {}: 0 }

ENTRY entry {
  %p = f32[] parameter(0)
  %c = f32[] constant(1)
  ROOT %out = f32[] add(%p, %c)
}
 

يحدد التنسيق أن الإخراج بالكامل (الذي تم وضع علامة عليه بواسطة {} ) مستعار لمعلمة الإدخال 0 .

راجع XlaBuilder::SetUpAlias API لتحديد الاسم المستعار برمجيًا.

تعريف التعرج في وقت التشغيل

يتم تحديد الاسم المستعار المحدد في الخطوة السابقة أثناء التحويل البرمجي . أثناء التنفيذ ، يمكنك اختيار ما إذا كنت ستتبرع بالفعل LocalClient::RunAsync المؤقت باستخدام LocalClient::RunAsync API.

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

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

واجهة أمامية

TF / XLA

في مجموعات برنامج TensorFlow المترجمة باستخدام XLA ، يتم تغيير اسم مستعار لجميع تحديثات متغيرات الموارد في وقت الترجمة (يعتمد الاسم المستعار في وقت التشغيل على ما إذا كان أي شيء آخر يشير إلى موتر متغير الموارد).