我想创建一个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编译。
那我的想法可行吗?
如何添加这种依赖关系?