本文總結了實作及審查翻譯工具的指南。我們特意納入幾個與驗證器和類型推論相關的輔助操作項目,並考慮在轉譯器實作旁提升這些前端的進展。
執行運算時
- 提供類似於這項做法的明確寫入測試策略 (在 PR 說明中),做為參考,在查看驗證和類型推論方法時,以及對應的測試。審查人員會仔細檢查說明內容是否完整。
- 請參閱 hlo_evaluator,瞭解複雜的實作細節,以及潛在的功能缺口。
- 如果發現任何錯誤或缺少功能,請提交對應軟體元件的支援單。
執行運算之後
在 StablehloOps.td 中:
- 確認運算的 ODS 中的
summary
符合標準格式。 (相關票券) 新增參照項目限制標籤 (例如
Cn
或In
) 的註解,格式為xyz_cn
或xyz_in
,適用於運算XyzOp
,以識別 ODS 中限制和規格之間的對應。以下範例說明如何將限制標籤新增為註解,以及 mlirTraits
和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*/ .... ); );
- 確認運算的 ODS 中的
在 TypeInference.cpp 和 StablehloOps.cpp 中:
- 請刪除提到「驗證下列屬性:...」的留言。
- 新增參照規格標籤 (例如
Cn
或In
) 的註解。若為運算XyzOp
,則以xyz_cn
或xyz_in
格式新增註解,以識別驗證器和形狀函式的哪些部分與規格中的限制條件對應。- 建立含有多個限制標籤的註解,或擁有多個設有相同限制標籤的註解。這一切取決於限制條件的實作方式。如果連續限制具有連續限制,請將其修飾為
xyz_cn...xyz_cm, xyz_in...xyz_jn
。 - 如果實作 VS 和規格的限制不相符,請確認有尚未解決的問題能夠反映該差異。
- 建立含有多個限制標籤的註解,或擁有多個設有相同限制標籤的註解。這一切取決於限制條件的實作方式。如果連續限制具有連續限制,請將其修飾為
在解譯器測試中:
- 新增名為
interpret_<op_mnemonic>.mlir
的檔案。 - 按照測試指南編寫測試。
- 新增名為
在 testdata 目錄中:
- 執行新新增作業涵蓋的所有已停用測試。
- 如果測試通過,請將
RUN-DISABLED
轉換為RUN
以啟用這些測試。 - 如果測試因為某些原因 (精確度不符) 而失敗,請修正實作/測試。
- 如果精確度不符,請為測試加上
RUN-DISABLED(#1278)
標記 (如果尚未標記)。
在 ops_stablehlo.mlir 中:
- 確保驗證器和類型推論方法中每項限制至少都有一項測試 (陽性或陰性);系統不會測試在 ODS 涵蓋的限制。這些測試大多為負數,測試是否符合限制條件或陽性,測試推測的形狀是否正確。
- 請確保與受測試的運算相關的所有測試都已一起完成。
- 請確保所有與受測運算相關的測試都已在加上
CHECK-LABEL
光照巨集的前面加上。 - 請以
xyz_cn_im_...
格式選擇測試的函式名稱,以便執行函式測試限制Cn
、Im
等作業對運算XyzOp
的限制。如果提議的格式不適用,請保留現有名稱。 - 上述步驟完成後,請根據函式名稱,按測試字母順序排序所有與運算相關的測試。
- 繼續新增測試,直到 ccov 顯示這類運算的涵蓋率超過 90% 為止。
在 infer_stablehlo.mlir 中:
- 請確認這個檔案列出了所有與形狀推論測試相關的限制,並遵循上述的相同命名規範。
- 將 ops_stablehlo.mlir 檔案任何形狀推論測試移至這個檔案。
在 spec.md 中:
在 status.md 中:
- 將「翻譯工具」欄更新為
yes
。
- 將「翻譯工具」欄更新為