作用:
将FunctionCall节点换成:XlaCompileAndXlaRun
核心流程:
扫一遍整个计算图找出所有的FunctionCall节点。对所有的FunctionCall节点调用ReplaceNodeWithXlaCompileAndXlaRun函数。
ReplaceNodeWithXlaCompileAndXlaRun:
-
找到xla的FunctionCall算子。
-
根据FunctionCall算子的信息(input, function等)构建一个xla_compile算子。
-
根据lazy_compilation_enabled选项来决定是否根据收益来判断是否走xla run。
-
如果否
-
将FunctionCall的所有边复制给xla_compile算子。
-
构建一个xlaRun算子。将xlaRun算子的input设置为xla_compile算子。
-
将FunctionCall算子的输出边复制给xlaRun算子的输出边。
-
从计算图中移除FunctionCall节点。
-
-
如果是(默认是是)
-
同时保留FunctionCall(被转换成ReplaceFunctionCallWithPartitionedCall)和xlaRun。
-
在FunctionCall和xlaRunOp中使用switch算子来决定使用哪个分支。
-
switch的key为:compilation_successful(TODO并未见描述的启发式)。
-
-