هنگام بوتاسترپ کردن StableHLO از MHLO، ما پیادهسازی MHLO را در بسیاری از موارد، از جمله prettyprinting، تأیید و استنتاج شکل، به ارث بردهایم. به لطف این، ما پوشش قابل توجهی از opset داریم، اما هنوز کارهای زیادی برای بررسی کامل بودن پیادهسازیهای موجود و ارائه پیادهسازیهای جدید در مواردی که وجود ندارند، وجود دارد.
این سند زنده برای توسعهدهندگان و کاربران است تا پیشرفت جنبههای مختلف آپست - مشخصات، تأیید، استنتاج نوع، چاپ زیبا، مفسر و غیره - را پیگیری کنند.
نحوه استفاده از آن
پیشرفت یک عملیات StableHLO، همانطور که در ردیف مربوطه ذکر شده است، در یک جنبه خاص، همانطور که در ستون مربوطه ذکر شده است، با استفاده از یکی از برچسبهای ردیابی زیر ردیابی میشود.
- برچسبهای عمومی
- بله : یک پیادهسازی جامع وجود دارد.
- خیر : هیچ پیادهسازی وجود ندارد، اما کار بر روی آن بخشی از نقشه راه است. توجه داشته باشید که Verifier هرگز نمیتواند به عنوان "خیر" برچسبگذاری شود زیرا ODS از قبل برخی از تأییدها را پیادهسازی کرده است.
- برچسبهای سفارشی برای تأییدکننده و استنتاج نوع
- بله : یک پیادهسازی وجود دارد، و با معانی StableHLO هماهنگ است.
- بله* : یک پیادهسازی وجود دارد و با معانی XLA هماهنگ است. از آنجایی که معانی XLA اغلب به اندازه کافی مستندسازی نشده است، ما از hlo_verifier.cc و shape_inference.cc به عنوان مرجع استفاده میکنیم.
- revisit : پیادهسازی وجود دارد، اما در دسته «بله» یا «بله*» قرار نمیگیرد - یا به این دلیل که هنوز آن را حسابرسی نکردهایم، یا به این دلیل که مشکلاتی داریم و آنها را پیدا کردهایم.
- infeasible : هیچ پیادهسازی وجود ندارد، زیرا infeasible است. به عنوان مثال، به این دلیل که نوع نتیجه یک op را نمیتوان از عملوندها و ویژگیهای آن استنباط کرد.
وضعیت
| پایدارHLO عملیات | مشخصات | تأیید | استنتاج نوع | چاپ زیبا | مترجم |
|---|---|---|---|---|---|
| عضلات شکم | بله | بله | بله | بله | بله |
| اضافه کردن | بله | بله | بله | بله | بله |
| بعد از همه | بله | بله | بله | بله | بله |
| همه_جمع_آوری | بله | دوباره مراجعه کردن | خیر | خیر | بله |
| all_reduce | بله | دوباره مراجعه کردن | بله | خیر | بله |
| همه_به_همه | بله | دوباره مراجعه کردن | بله | خیر | بله |
| و | بله | بله | بله | بله | بله |
| آتان2 | بله | بله | بله | بله | بله |
| batch_norm_grad | بله | دوباره مراجعه کردن | بله | خیر | دوباره مراجعه کردن |
| استنتاج هنجار_دستهای | بله | دوباره مراجعه کردن | بله | خیر | دوباره مراجعه کردن |
| batch_norm_training | بله | دوباره مراجعه کردن | بله | خیر | دوباره مراجعه کردن |
| bitcast_convert | بله | بله | نشدنی | بله | بله |
| پخش | خیر | بله* | بله* | بله | دوباره مراجعه کردن |
| broadcast_in_dim | بله | بله | نشدنی | بله | بله |
| مورد | بله | دوباره مراجعه کردن | بله | خیر | بله |
| سیبیآرتی | بله | بله | بله | بله | بله |
| سقف | بله | بله | بله | بله | بله |
| چولسکی | بله | بله | بله | بله | دوباره مراجعه کردن |
| گیره | بله | دوباره مراجعه کردن | بله | بله | بله |
| پخش_جمعی | بله | دوباره مراجعه کردن | بله | خیر | بله |
| collective_permute | بله | دوباره مراجعه کردن | بله | خیر | بله |
| مقایسه | بله | بله | بله | بله | بله |
| پیچیده | بله | بله | بله | بله | بله |
| کامپوزیت | بله | بله | نشدنی | بله | بله |
| به هم پیوند دادن | بله | بله | بله | بله | بله |
| ثابت | بله | بله | بله | بله | بله |
| تبدیل کردن | بله | بله | نشدنی | بله | بله |
| کانولوشن | بله | بله | نشدنی | دوباره مراجعه کردن | بله |
| کسینوس | بله | بله | بله | بله | بله |
| تعداد صفرهای اصلی | بله | بله | بله | بله | بله |
| ایجاد_توکن | خیر | بله* | بله* | بله | دوباره مراجعه کردن |
| جمع متقابل المثنی | خیر | دوباره مراجعه کردن | بله* | خیر | دوباره مراجعه کردن |
| تماس_سفارشی | بله | بله | نشدنی | بله | بله |
| تقسیم کردن | بله | بله | بله | بله | بله |
| نقطه | خیر | دوباره مراجعه کردن | نشدنی | بله | دوباره مراجعه کردن |
| نقطه عمومی | بله | دوباره مراجعه کردن | نشدنی | خیر | بله |
| پخش_پویا_در_نور | بله | بله | نشدنی | بله | دوباره مراجعه کردن |
| پویا_محتوای | بله | بله | نشدنی | دوباره مراجعه کردن | دوباره مراجعه کردن |
| پویا_جمعآوری | بله | بله | نشدنی | خیر | دوباره مراجعه کردن |
| پویا_یوتا | بله | بله | نشدنی | بله | دوباره مراجعه کردن |
| پد_پویا | بله | بله | نشدنی | بله | دوباره مراجعه کردن |
| تغییر شکل پویا | بله | بله | نشدنی | بله | دوباره مراجعه کردن |
| برش_پویا | بله | بله | بله | بله | بله |
| برش_به_روزرسانی_پویا | بله | بله | بله | بله | بله |
| اینسوم | خیر | دوباره مراجعه کردن | خیر | بله | دوباره مراجعه کردن |
| نمایی | بله | بله | بله | بله | بله |
| نمایی_منهای_یک | بله | بله | بله | بله | بله |
| اف اف تی | بله | دوباره مراجعه کردن | بله | بله | بله |
| کف | بله | بله | بله | بله | بله |
| جمع کردن | بله | بله | بله | خیر | بله |
| دریافت_ابعاد_اندازه | بله | بله | بله | بله | بله |
| دریافت_تاپل_عنصر | بله | بله | بله | بله | بله |
| اگر | بله | دوباره مراجعه کردن | بله | خیر | بله |
| تصویر | بله | بله | بله | بله | بله |
| تغذیه | بله | بله | نشدنی | خیر | بله |
| یوتا | بله | بله | نشدنی | بله | بله |
| is_finite | بله | بله | بله | بله | بله |
| ورود به سیستم | بله | بله | بله | بله | بله |
| log_plus_one | بله | بله | بله | بله | بله |
| لجستیک | بله | بله | بله | بله | بله |
| نقشه | بله | دوباره مراجعه کردن | بله | خیر | بله |
| حداکثر | بله | بله | بله | بله | بله |
| حداقل | بله | بله | بله | بله | بله |
| ضرب کردن | بله | بله | بله | بله | بله |
| نفی کردن | بله | بله | بله | بله | بله |
| نه | بله | بله | بله | بله | بله |
| مانع بهینهسازی | بله | بله | بله | بله | بله |
| یا | بله | بله | بله | بله | بله |
| از تغذیه بیشتر | بله | بله | بله | خیر | بله |
| پد | بله | بله | بله | بله | بله |
| شناسه پارتیشن | بله | بله | بله | بله | بله |
| پاپ | بله | بله | بله | بله | بله |
| قدرت | بله | بله | بله | بله | بله |
| واقعی | بله | بله | بله | بله | بله |
| برش_پویای_واقعی | خیر | دوباره مراجعه کردن | خیر | بله | خیر |
| بازیابی | بله | بله | نشدنی | خیر | بله |
| کاهش دادن | بله | دوباره مراجعه کردن | بله | دوباره مراجعه کردن | بله |
| کاهش_دقت | بله | بله | بله | بله | بله |
| reduce_scatter | بله | دوباره مراجعه کردن | خیر | خیر | بله |
| reduce_window | بله | دوباره مراجعه کردن | بله | خیر | بله |
| باقیمانده | بله | بله | بله | بله | بله |
| replica_id | بله | بله | بله | بله | بله |
| تغییر شکل دادن | بله | بله | نشدنی | بله | بله |
| بازگشت | خیر | دوباره مراجعه کردن | نشدنی | بله | بله |
| معکوس | بله | بله | بله | بله | بله |
| آرنگ | بله | بله | بله | بله | دوباره مراجعه کردن |
| مولد بیت rng | بله | دوباره مراجعه کردن | نشدنی | بله | دوباره مراجعه کردن |
| round_nearest_afz | بله | بله | بله | بله | بله |
| گرد_نزدیکترین_حتی | بله | بله | بله | بله | بله |
| آر اس کیو آر تی | بله | بله | بله | بله | بله |
| پراکنده | بله | دوباره مراجعه کردن | بله | خیر | بله |
| انتخاب کنید | بله | بله | بله | بله | بله |
| انتخاب_و_پراکندهسازی | بله | دوباره مراجعه کردن | بله | خیر | بله |
| ارسال | بله | بله | بله | خیر | بله |
| اندازه_بعد_تنظیم | خیر | بله* | بله* | بله | خیر |
| شیفت_چپ | بله | بله | بله | بله | بله |
| شیفت_به_راست_حسابی | بله | بله | بله | بله | بله |
| shift_right_logical | بله | بله | بله | بله | بله |
| علامت | بله | بله | بله | بله | بله |
| سینوس | بله | بله | بله | بله | بله |
| برش | بله | بله | بله | خیر | بله |
| مرتب سازی | بله | بله | بله | خیر | بله |
| مربع | بله | بله | بله | بله | بله |
| تفریق کردن | بله | بله | بله | بله | بله |
| برنزه شدن | بله | بله | بله | بله | بله |
| تان | بله | بله | بله | بله | بله |
| torch_index_select | خیر | دوباره مراجعه کردن | خیر | خیر | دوباره مراجعه کردن |
| جابجایی | بله | بله | بله | بله | بله |
| حل مثلثی | بله | دوباره مراجعه کردن | بله | خیر | دوباره مراجعه کردن |
| چندتایی | بله | بله | بله | بله | بله |
| unary_einsum | خیر | دوباره مراجعه کردن | خیر | بله | دوباره مراجعه کردن |
| uniform_dequantize | بله | بله | بله | بله | بله |
| uniform_quantize | بله | دوباره مراجعه کردن | نشدنی | بله | بله |
| در حالی که | بله | دوباره مراجعه کردن | بله | دوباره مراجعه کردن | بله |
| خُر | بله | بله | بله | بله | بله |
استنتاج نوع برای عملیات کوانتیزه
ستون Type Inference از جدول بالا برای تمرکز بر عملیات غیر کوانتیزه در نظر گرفته شده است. برای اکثر عملیات کوانتیزه، استنتاج نوع نتیجه امکانپذیر نیست زیرا پارامترهای کوانتیزه انواع نتیجه ممکن است با پارامترهای کوانتیزه عملوندها متفاوت باشد. به استثنای موارد معدودی که نوع عملوند و نتیجه باید به طور یکسان مطابقت داشته باشند، یا عملیات دارای محدودیتهایی است که برای استنباط نوع نتیجه مفید است، چنین عملیاتی در زیر فهرست شدهاند: all_gather ، all_to_all ، case ، collective_permute ، compare ، concatenate ، constant ، dynamic_slice ، dynamic_update_slice ، gather ، get_tuple_element ، if ، infeed ، is_finite ، map ، optimization_barrier ، outfeed ، pad ، recv ، reduce ، reduce_scatter ، reduce_window ، reverse ، scatter ، select_and_scatter ، send ، slice ، sort ، transpose ، tuple ، uniform_dequantized ، while .