این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

طرح کاشی

شکل 1

شکل 1 نشان می دهد که چگونه یک آرایه F32 [3،5] با کاشی کاری 2x2 در حافظه قرار داده شده است. شکل با این طرح به صورت F32 [3،5] ،5 1،0: (2،2) written نوشته شده است ، که در آن 1،0 مربوط به ترتیب فیزیکی ابعاد است (قسمت minor_to_major در طرح) در حالی که (2،2) پس از روده بزرگ با کاشی 2x2 کاشی ابعاد بدنی را نشان می دهد.

کاشی های بصری برای پوشاندن شکل ایجاد شده و سپس در داخل هر کاشی ، عناصر بدون کاشی کاری قرار می گیرند ، مانند مثال بالا ، جایی که قسمت سمت راست مثال ، چیدمان در حافظه را نشان می دهد ، از جمله عناصر بالشتک سفید که اضافه می شوند. به منظور تکمیل کاشی 2x2 حتی اگر مرزهای آرایه اصلی یکنواخت نباشد.

عناصر اضافی موجود در بالشتک نیازی به مقدار خاصی ندارند.

فرمول های شاخص خطی برای کاشی کاری با شکل و کاشی

بدون کاشی کاری ، یک عنصر e = (e n ، e n-1 ، ... ، e 1 ) در یک آرایه با مرزهای آرایه d = (d n ، d n-1 ، ... ، d 1 ) (d1 است کوچکترین بعد) توسط دستور اصلی تا جزئی در موقعیت ارائه می شود:

linear_index (e، d)
= linear_index ((e n ، e n-1 ، ...، e 1 )، (d n ، d n-1 ، ...، d 1 ))
= e n d n-1 ... d 1 + e n-1 d n-2 ... d 1 + ... + e 1

برای سادگی نماد گذاری در این سند فرض می کنیم کاشی دارای ابعاد یکسانی با آرایه است. در اجرای کاشی کاری XLA ، این کار با کاشت ابعاد کمتر با تغییر ابعاد اصلی اصلی بدون تغییر و استفاده از کاشی کاری فقط در جزئی ترین ابعاد ، تعمیم می یابد ، به گونه ای که کاشی کاری که مشخص شده است پسوندی از ابعاد فیزیکی ابعاد را ذکر می کند. کاشی کاری می شود.

هنگام کاشی کاری اندازه (t n ، t n-1 ، ... ، t 1 ) استفاده می شود ، یک عنصر در آرایه با شاخص ها (e n ، e n-1 ، ... ، e 1 ) به این نقشه کشیده می شود موقعیت در طرح نهایی:

linear_index_with_tile (e، d، t)
= linear_index ((/e / t⌋ ، e mod t) ، (/d / t⌉ ، t)) (حسابی به صورت ابتدایی است ، (a ، b) جمع بندی است)
= linear_index ((ne n / t n ⌋، ...، 1e 1 / t 1 ⌋، e n mod t n ، ...، e 1 mod t 1 )، (nd n / t n ⌉، ... ، 1d 1 / t 1 ⌉، t n ، t n-1 ، ...، t 1 ))
= linear_index ((ne n / t n ⌋ ، ... ، 1e 1 / t 1 ⌋) ، (nd n / t n ⌉، ...، 1d 1 / t 1 ⌉)) ∙ t n t n-1 ... t 1 + linear_index ((e n mod t n ، ...، e 1 mod t 1 )، (t n ، t n-1 ، ...، t 1 ))

طرح را می توان از این جهت تصور کرد که دارای دو بخش است: (یعنی n / t n ⌊ ، ... ، یعنی 1 / t 1 correspond) ، که مطابق با یک شاخص کاشی در مجموعه ای از کاشی های اندازه (nd n / t n ⌉ ، ... ، 1d 1 / t 1 ⌉) و (e n mod t n ، ...، e 1 mod t 1 ) ، که با یک شاخص درون کاشی مطابقت دارد. عملکرد سقف در id i / t i appears ظاهر می شود زیرا اگر کاشی ها مرزهای آرایه بزرگتر را پشت سر بگذارند ، همانطور که در شکل 1. کاشی ها قرار می گیرند ، هر دو کاشی و عناصر درون کاشی ها بصورت بازگشتی و بدون کاشی کاری قرار می گیرند.

برای مثال در شکل 1 ، عنصر (2،3) دارای شاخص کاشی (1،1) و شاخص درون کاشی (0/0) برای وکتور مختصات ترکیبی (1 ، 1 ، 0 ، 1) است. شاخص های کاشی دارای مرزهای (2 ، 3) و خود کاشی (2 ، 2) برای وکتور ترکیبی (2 ، 3 ، 2 ، 2) است. شاخص خطی با کاشی برای عنصر با شاخص (2 ، 3) در شکل منطقی است

linear_index_with_tile ((2،3) ، (3،5) ، (2،2))
= linear_index ((1،1،0،1) ، (2،3،2،2))
= linear_index ((1،1)، (2،3)) ∙ 2 + 2 + linear_index ((0،1)، (2،2))
= (1 ∙ 3 + 1) ∙ 2 ∙ 2 + (0 ∙ 2 + 1)
= 17

کاشی کاری به عنوان تغییر شکل پد

طرح مبتنی بر کاشی کاری به شرح زیر است:
مجموعه ای از ابعاد را در نظر بگیرید (d n ، d n-1 ، ...، d1) (d1 جزئی ترین بعد است). هنگامی که با کاشی کاری اندازه (t n ، t n-1 ، ... ، t 1 ) گذاشته شده است (t 1 جزئی ترین ابعاد است) ، این کاشی کاری را می توان از نظر شکل-تغییر شکل-تغییر شکل در زیر توضیح داد. مسیر.

  1. آرایه بر روی (nd n / t n ⌉ ∙ t n ، ... ، ⌈d 1 / t 1 ∙ t 1 ) قرار دارد.
  2. هر بعد i به شکسته شده است (id i / t i ⌉، t i ) ، یعنی آرایه به شکل مجدد تغییر می یابد
    (nd n / t n ⌉ ، t n ، ...، 1d 1 / t 1 ⌉، t 1 ).
    در این تغییر شکل به تنهایی تغییری در طرح بندی وجود ندارد ، بنابراین این تغییر شکل یک bitcast است. اگر کسی به صراحت به کاشی کاری فکر نمی کند ، این تغییر شکل می تواند هر شکلی را با همان تعداد عناصر به عنوان شکل خالی شده بیان کند - مثال در اینجا نحوه بیان کاشی به این روش است.
  3. با انتقال t n ، ... ، t 1 به جزئی ترین ابعاد ضمن حفظ نظم نسبی آنها ، اتفاق می افتد ، به طوری که ترتیب ابعاد از عمده ترین به جزئی ترین تبدیل می شود.
    (nd n / t n ⌉ ، ... ، 1d 1 / t 1 ⌉، t n ، ...، t 1 ).

شکل نهایی دارای پیشوند است
(nd n / t n ⌉ ، ... ، 1d 1 / t 1 ⌉) که تعداد کاشی ها در هر بعد را توصیف می کند. یک عنصر در آرایه (e n ، ...، e 1 ) در شکل نهایی به این عنصر نقشه برداری می شود:
(ne n / t n ⌋، ...، 0e 0 / t 0 ⌋، e n mod t n ، ...، e 1 mod t 1 ). به راحتی می توان دریافت که شاخص خطی عنصر همانطور که انتظار می رود از فرمول فوق پیروی می کند.

کاشی کاری مکرر

کاشی XLA با استفاده مکرر از آن منعطف تر می شود.

شکل 2

شکل 2 نشان می دهد که چگونه یک آرایه از اندازه 4x8 با دو سطح کاشی کاری کاشی می شود (ابتدا 2x4 سپس 2x1). ما این کاشی کاری مکرر را به عنوان (2،4) (2،1) نشان می دهیم. هر رنگ یک کاشی 2x4 را نشان می دهد و هر جعبه مرزی قرمز یک کاشی 2x1 است. اعداد نشانگر شاخص خطی در حافظه آن عنصر در قالب کاشی کاری هستند. این قالب با فرمت مورد استفاده برای BF16 در TPU مطابقت دارد ، با این تفاوت که کاشی اولیه بزرگتر است ، یعنی کاشی کاری (8،128) (2،1) است ، جایی که هدف از کاشی کاری دوم توسط 2x1 جمع آوری دو مقدار 16 بیتی است. یک مقدار 32 بیتی را به روشی تنظیم کنید که با معماری TPU مطابقت داشته باشد.

توجه داشته باشید که یک کاشی دوم یا بعدی می تواند به ابعاد جزئی درون کاشی اشاره کند ، که فقط داده ها را در داخل کاشی تنظیم مجدد می کند ، همانطور که در این مثال با (8،128) (2،1) وجود دارد ، اما همچنین می تواند به مهمترین سطح متقاطع اشاره کند. ابعاد از کاشی کاری قبلی.

ابعاد با استفاده از کاشی ها

کاشی کاری XLA همچنین از ترکیب ابعاد پشتیبانی می کند. به عنوان مثال ، می تواند ابعاد موجود در F32 [2،7،8،11،10] 4،3،2،1،0} را در F32 [112،110] 0 1،0} برای اولین بار قبل از کاشی کردن با (2،3 ) کاشی مورد استفاده (∗ ، ∗ ، 2 ، ∗ ، 3) است. در اینجا یک ستاره در یک کاشی به معنی گرفتن این بعد و ترکیب آن با بعد جزئی دیگر است. ابعاد مجاور چندگانه را می توان در یک بعد قرار داد. ابعاد فرض شده با مقدار کاشی -1 در این بعد کاشی نمایش داده می شود که در غیر این صورت در کاشی به عنوان اندازه ابعاد معتبر نیست.

به طور دقیق تر ، اگر بعد i از شکل از طریق ستاره در کاشی از بین برود ، قبل از تعریف اولیه کاشی کاری ، آن بعد از هر دو شکل کاشی کاری شده و بردار کاشی برداشته می شود ، و چه ابعادی i-1 وجود دارد. شکل شکل آرایه آن از d i-1 به d i d i-1 افزایش یافته است . این مرحله برای هر ستاره در بردار کاشی تکرار می شود.