در این سند، دستورالعملهای پیادهسازی و بررسی یک عملیات برای مترجم را خلاصه میکنیم. ما عمداً چند مورد اقدام کمکی مربوط به تأیید کننده و استنتاج نوع را با ایده پیشرفت در آن جبهه ها در کنار اجرای مفسر گنجانده ایم.
در حین اجرای عملیات
- یک استراتژی آزمایش مکتوب صریح (در توضیح روابط عمومی) مشابه این را ارائه دهید تا در حین بررسی روشهای استنتاج تأیید و نوع و آزمونهای مربوطه، به عنوان مرجع استفاده شود. بازبین دوبار بررسی می کند که توضیحات جامع باشد.
- با hlo_evaluator برای شناسایی جزئیات پیاده سازی پیچیده و شکاف های عملکردی احتمالی مشورت کنید.
- در صورت یافتن اشکال یا عملکرد مفقود، بلیط برای اجزای نرم افزار مربوطه را فایل کنید.
پس از اجرای عملیات
در StablehloOps.td :
- مطمئن شوید که
summaryدر ODS عملیات از فرمت استاندارد پیروی می کند. ( بلیت مربوطه) برای شناسایی تطابق بین محدودیتها در ODS و مشخصات، نظراتی را که به برچسبهای محدودیت ارجاع میدهند (به عنوان مثال
CnیاIn) از مشخصات در قالبxyz_cnیاxyz_in، برای عملیاتXyzOpاضافه کنید. مثال زیر نشان میدهد که چگونه میتوان برچسبهای محدودیت را بهعنوان نظر در کنارTraitsmlir وTypeConstraintsاضافه کرد. توجهxyz_c4به محدودیت های تعریف شده در کلاسStableHLO_FooOpاشاره دارد (مانندStableHLO_ShapedInterfaceOp،StableHLO_UnaryElementwiseOp،StableHLO_Op، و غیره).def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1, Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/ ... let summary = "Xyz operation"; let arguments = (ins 1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/ HLO_Tensor:$b, /*xyz_i2*/ .... ); );
- مطمئن شوید که
در TypeInference.cpp و StablehloOps.cpp :
- نظراتی را که عبارتهایی مانند «ویژگیهای زیر را تأیید کنید: ...» میگویند را حذف کنید.
- نظراتی را که به برچسبهای محدودیت ارجاع میدهند (مثلاً
CnیاIn) از مشخصات در قالبxyz_cnیاxyz_in، برای عملیاتXyzOpاضافه کنید تا مشخص کنید کدام بخش از تأییدکنندهها و توابع شکل با چه محدودیتهایی در مشخصات مطابقت دارند.- داشتن یک نظر با چندین برچسب محدودیت یا داشتن چندین نظر با برچسب محدودیت یکسان اشکالی ندارد. همه چیز به نحوه اجرای محدودیت ها بستگی دارد. اگر محدودیت های متوالی وجود دارد، آنها را به صورت
xyz_cn...xyz_cm, xyz_in...xyz_jnمتراکم کنید. - در صورت عدم تطابق بین محدودیتهای پیادهسازی VS و محدودیتهای موجود در مشخصات، مطمئن شوید که یک موضوع باز وجود دارد که این اختلاف را منعکس میکند.
- داشتن یک نظر با چندین برچسب محدودیت یا داشتن چندین نظر با برچسب محدودیت یکسان اشکالی ندارد. همه چیز به نحوه اجرای محدودیت ها بستگی دارد. اگر محدودیت های متوالی وجود دارد، آنها را به صورت
در تست های مترجم :
- فایلی به نام
<op_mnemonic>.mlirاضافه کنید. - تست ها را با رعایت دستورالعمل های تست بنویسید.
- فایلی به نام
در دایرکتوری testdata :
- هر آزمایش غیرفعال شده ای را که توسط عملیات جدید اضافه شده پوشش داده شده است، اجرا کنید.
- در صورت موفقیت آمیز بودن تست ها، آنها را با تبدیل
RUN-DISABLEDبهRUNفعال کنید. - اگر آزمایشی به دلایلی غیر از عدم تطابق دقیق با شکست مواجه شد، پیاده سازی/تست را برطرف کنید.
- برای عدم تطابق دقیق، تست را با
RUN-DISABLED(#1278)تگ کنید (اگر قبلا انجام نشده است).
در ops_stablehlo.mlir :
- اطمینان حاصل کنید که حداقل یک تست (مثبت یا منفی) برای هر محدودیت در روش های استنتاج تایید کننده و نوع وجود دارد. محدودیت های پوشش داده شده در ODS آزمایش نخواهند شد. این تستها عمدتاً منفی خواهند بود، آزمایش عدم رعایت یا مثبت بودن محدودیتها، آزمایش درست بودن شکل استنباطشده.
- اطمینان حاصل کنید که تمام تست های مربوط به عملیات مورد آزمایش در کنار هم قرار گرفته اند.
- مطمئن شوید که تمام تستهای مربوط به عملیات مورد آزمایش با یک ماکرو روشن
CHECK-LABELاضافه شدهاند. - نام تابع تست ها را با استفاده از قالب
xyz_cn_im_...برای یک تابع تست محدودیت هایCn،Imو غیره برای opXyzOpانتخاب کنید. در مواردی که فرمت پیشنهادی اعمال نمی شود، نام موجود را حفظ کنید. - پس از تکمیل مرحله بالا، تمام تست های مربوط به عملیات تحت آزمایش را بر اساس نام تابع بر اساس حروف الفبا مرتب کنید.
- به افزودن آزمایشها ادامه دهید تا زمانی که ccov 90% پوشش را برای عملیات نشان دهد.
در infer_stablehlo.mlir :
- مطمئن شوید که تمام محدودیتهای مربوط به تستهای استنتاج شکل در این فایل وجود دارد، با پیروی از دستورالعملهای نامگذاری مشابه ذکر شده در بالا.
- هر گونه تست استنتاج شکل را از فایل ops_stablehlo.mlir به این فایل منتقل کنید.
در spec.md :
- پیوندی به
stablehlo/tests/interpret/<op_mnemonic>.mlirبه بخش «نمونهها» اضافه کنید (مثلاً مثالهای بیشتر ). - مطمئن شوید که مشخصات فقط 1 مثال دارد.
- مطمئن شوید که نمونه مشخصات از دستورالعملهای تست پیروی میکند.
- مطمئن شوید که تست نمونه مشخصات قابل تفسیر است.
- مطمئن شوید که نمونه مشخصات با آنچه در ODS است یکسان است.
- پیوندی به
در status.md :
- ستون "مفسر" را به
yesبه روز کنید.
- ستون "مفسر" را به