IREE编译流程解析(二)
Contents
IREE CommonInputConversionPassPipeline主要作用是将IREE::Input dialect lower成IREE::Util、IREE::Flow和IREE::HAL dialect,包括以下几个passes。
- createIREEImportPublicPass
将IREE::Input dialect转换成IREE::Util、IREE::Flow和IREE::HAL dialect,并转换func的属性和signature中输入输出类型。比如,
1 | iree_input.global private mutable @param : tensor<1x2xf32> |
转换成(iree_input.global.load
->util.global.load
,iree_input.global.store
->util.global.store
,iree_input.tensor.clone
->flow.tensor.clone
):
1 | util.global private mutable @param : tensor<1x2xf32> |
- createImportMLProgramPass
将ml_program dialect转换到IREE::Util dialect。
createSanitizeModuleNamesPass
将module name中的
.
替换为_
,以符合mlir identifiers的命名规范。1
2
3
4
5
6module @iree.module {
func.func @test(%arg0: f32, %arg1: f32) -> f32 {
%0 = arith.addf %arg0, %arg1 : f32
return %0 : f32
}
}转换成
1
2
3
4
5
6module @iree_module {
func.func @test(%arg0: f32, %arg1: f32) -> f32 {
%0 = arith.addf %arg0, %arg1 : f32
return %0 : f32
}
}