tensorflow core 核心目标依赖图

Tensorflow的核心代码在core模块中,56w行的代码量让人望而生畏,熟悉了bazel工具之后,发现BUILD文件是理清代码结构的很好的资源,但使用bazel query语法提取出来//tensorflow/core:tensorflow目标包含了9k多个依赖关系,即便画出了依赖关系图,可读性也非常差。由于目前仅关心核心实现,平台依赖和测试相关的目标暂时不用理会,这样剩余的依赖关系就会大量减少,笔者整理了一份,并用graphviz进行可视化,结果如下。

请注意,我做出了以下取舍,第一,舍弃了平台依赖性相关的目标,第二,舍弃了测试相关目标,第三,舍弃了对第三方库的依赖,第四,对相似目标进行了整合,比如xx_op中用xx表示具体操作名称,在image_format_internal中,使用image_format来代替gif、jpeg、png等。

另外,推荐一个bazel query命令,用于查找两个目标之间的依赖路径,bazel query "somepath(//tensorflow/core:tensorflow, //tensorflow/core:framework_internal)" --output graph | dot -Tpng -o framework_internal.png,得到的结果如下:

原文地址:https://www.cnblogs.com/jicanghai/p/9464464.html