一、背景
cache是个resource类型,里面存放着对于某种输入的优化后的二进制文件。也就是说每种二进制文件都对应着唯一输入参数。
二、流程
-
BuildXlaCompilerArguments
-
根据XlaCompileOp的输入来构建args列表。
-
遍历所有input
-
如果是const类型,则记录const类型的值。
-
如果是kParameter类型,则记录kParameter的shape和type。
-
如果是DT_RESOURCE类型,则记录DT_RESOURCE的shape和type。
-
-
-
BuildSignature
-
会通过Hash方法根据所有收集到的input的信息来构造唯一key。
-
将Op name放入signature.name(例如cluster_9)
-
遍历所有收集到的args。
-
如果是kConstant类型,则将kConstant的值放入signature.arg_values
-
如果是kParameter或者kResource类型,则将shape和type和dims信息放入signature.arg_shapes
-
-
-
Hash::operator()
-
生成唯一的int64 key
-
hash signature.name
-
挨个的对 signature.arg_shapes内的 shape和dims信息hash。
-
挨个的对 signature.arg_values进行hash。
-
三、总结:
cache命中的方式:
-
输入的const类型的value需要完全一致。
-
输入的shape信息需要完全一致。