使用GPU内核在TensorFlow源外部编译TensorFlow自定义Op

时间:2018-02-05 13:56:38

标签: c++ tensorflow

我正在尝试编译包含"lzl_cnt"的自定义操作系统。所以我的GPU内核文件的顶部如下所示:

tensorflow/core/kernels/reduction_gpu_kernels.cu.h

我想使用... #include "tensorflow/core/kernels/reduction_gpu_kernels.cu.h" ... g++在我自己的存储库中编译它,因此将Op添加到我的TensorFlow源代码安装并使用Bazel编译它是一个选项。尝试使用给定here的指令进行编译不起作用,因为pip安装包中不包含该文件。

我考虑过以下解决方案:

  • '硬编码'包含到包含原始来源的TensorFlow仓库的克隆
  • 将文件从TensorFlow仓库复制到PYTHON_PATH中的TensorFlow安装,
  • 构建一个包含pip安装中所需文件的pip包,

但这些并不是非常吸引人的解决方法。有没有其他方式可以优雅地做到这一点?

1 个答案:

答案 0 :(得分:0)

在最新版本中,有所有可用文件。在平均时间里,我使用CMake + Python解决了它

基本上,您可以编写所有必要的值来配置cmake,例如

f.write("set(TensorFlow_ABI %i)\n" % tf.__cxx11_abi_flag__)
f.write("set(TensorFlow_INCLUDE_DIRS \"%s\")\n" % tf.sysconfig.get_include())
f.write("set(TensorFlow_LIBRARIES \"%s/libtensorflow_framework.so\")\n" % tf.sysconfig.get_lib())

剩下的只是设置include_directories corre

https://github.com/cgtuebingen/tf_custom_op

使用其他内核时,我只是将方法复制到我的操作中(从来没有这种情况)。