در این سند، دستورالعملهای پیادهسازی و بررسی یک عملیات برای مترجم را خلاصه میکنیم. ما عمداً چند مورد اقدام کمکی مربوط به تأیید کننده و استنتاج نوع را با ایده پیشرفت در آن جبهه ها در کنار اجرای مفسر گنجانده ایم.
در حین اجرای عملیات
- یک استراتژی آزمایش مکتوب صریح (در توضیح روابط عمومی) مشابه این را ارائه دهید تا در حین بررسی روشهای استنتاج تأیید و نوع و آزمونهای مربوطه، به عنوان مرجع استفاده شود. بازبین دوبار بررسی می کند که توضیحات جامع باشد.
- با hlo_evaluator برای شناسایی جزئیات پیاده سازی پیچیده و شکاف های عملکردی احتمالی مشورت کنید.
- در صورت یافتن اشکال یا عملکرد مفقود، بلیط برای اجزای نرم افزار مربوطه را فایل کنید.
پس از اجرای عملیات
در StablehloOps.td :
- مطمئن شوید که
summary
در ODS عملیات از فرمت استاندارد پیروی می کند. ( بلیت مربوطه) برای شناسایی تطابق بین محدودیتها در ODS و مشخصات، نظراتی را که به برچسبهای محدودیت ارجاع میدهند (به عنوان مثال
Cn
یاIn
) از مشخصات در قالبxyz_cn
یاxyz_in
، برای عملیاتXyzOp
اضافه کنید. مثال زیر نشان میدهد که چگونه میتوان برچسبهای محدودیت را بهعنوان نظر در کنارTraits
mlir و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
به روز کنید.
- ستون "مفسر" را به