bazel项目(尤其是Tensorflow)是否可以包括外部项目,而该项目依赖于当前项目的一部分?

时间:2019-07-25 13:28:27

标签: tensorflow bazel

我想创建一个Tensorflow wheel包,其中包含用于我的自定义设备的框架和我的自定义模块(op内核),它们存储在另一个git存储库中。

出于开发目的,拆分内核和Tensorflow(fork)存储库非常方便,因为每次更改内核时都不需要重新构建整个TF wheel软件包。但是对于部署,我想交付一个软件包。

我已经修改了bazel脚本,以使用

包括我的模块项目
    new_local_repository(
        name = "my_modules",
        path = "../tf-modules-repo",
        build_file = "third_party/gpus/mydevice/tf_modules.BUILD",
    )

我有一个genrule编译我的自定义模块,还有一个cc_library,它消耗了genrule的效果

    cc_library (
        name = "my-kernels",
        srcs = ["graph_writer.so", "my_kernels.so"]
    )

并将此库作为依赖项添加到我的自定义硬件tensorflow cc_library:

    "@my_modules//:my-kernels"

我的模块想要包含一些tensorflow头文件。如果我已经将TF安装到虚拟环境中,则会从那里获取标头。但是,如果没有,我需要设置一个依赖项,因此在将要依赖的文件复制到bazel缓存中之后,便完成了内核的编译。我尝试添加

    deps = ["//tensorflow/core:framework"]

    deps = ["@tensorflow//tensorflow/core:framework"]

进入我的“ my-kernels” cc_library定义,但在此范围内无法识别张量流名称。

我也有链接问题(带有来自先前TF安装的标题),存在链接问题(因为存在反向或相互依赖性my_kernels.so-> libtensorflow_framework.so),所以我不确定我的想法是否完全可行bazel + tensorflow编译。

那我的想法可行吗?

如何添加这种依赖关系?

0 个答案:

没有答案