使用bazel将TensorFlow与OpenCL集成

时间:2017-06-10 17:51:46

标签: tensorflow opencl bazel

问题/功能请求/问题的说明:

我正在尝试使用bazel来构建TensorFlow库。它建立得很好。

附加功能 我想在TensorFlow的一个文件中添加OpenCL代码。添加了所有必需的代码 并在其中一个构建文件(tensorflow/core/BUILD)中添加了以下内容,考虑到' opencl'作为opencl。

的根目录
cc_library( name = "opencl", hdrs=glob(["opencl/include/CL/*h"]),
visibility =["//visibility:public"], )

cc_library( name="all_kernels" , visibility= ["//visibility:public"],
copts=tf_copts() + ["-Ithird_party/opencl/include"], deps= [
"//third_party/opencl", ],

重现问题的示例:

通过跑步 bazel build //tensorflow/examples/android:tensorflow_demo --fat_apk_cpu=armeabi-v7a --copt="-Ithird_party/opencl/include"

构建时面临的问题:

error: undefined reference to 'clEnqueueReadBuffer'
error: undefined reference to 'clReleaseMemObject'
error: undefined reference to 'clReleaseMemObject'

环境信息

操作系统:Ubuntu 17.04

Bazel版本(bazel info发布的输出):发布0.5.1

在网上进行相关搜索?

How to add external header files during bazel/tensorflow build

有用的信息或日志或输出?

bazel-out/android-arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-fastbuild/bin/tensorflow/core/kernels/libandroid_tensorflow_kernels.lo(conv_ops.o):conv_ops.cc:function
matrixMul(float*, float*, int, int, int, int, int, int): error:
undefined reference to 'clGetPlatformIDs'

我尝试直接链接到libOpenCL.so,如下所示,引用https://bazel.build/versions/master/docs/tutorial/cpp.html#adding-dependencies-on-precompiled-libraries ,但仍然是同样的问题

cc_library( name = "opencl", srcs = glob(["lib/x86_64/.so"]), hdrs =
glob(["include/CL/.h"]), visibility = ["//visibility:public"], )

请帮我解决问题

1 个答案:

答案 0 :(得分:1)

libOpenCL.so在终端显示为红色,表示已存档,替换文件并解决问题