记录tensorflow2.0源码单元测试(使用bazel)流程2——在ubuntu18.04上进行测试

Windows10上测试请参阅:记录tensorflow2.0源码单元测试(使用bazel)流程——在windows10上进行测试

以下是在ubuntu18.04上成功运行tensorflow2.0源码中xxx_test.cc的过程。
一、Ubuntu上测试

  1. 下载源码
    下载源码部分与在windows上的一致,都是先安装好git,找一个空的文件夹直接
    git clone -b r2.0 https://github.com.cnpmjs.org/tensorflow/tensorflow.git即可

  2. 安装Bazel
    在ubuntu上安装Bazel个人认为比windows简单很多,只需要执行一些命令,不像windows上要自行安装各种软件。
    首先还是给出官方的教程,拉到最下面我们使用“Using the binary installer”的方法安装。
    打开bazel在github上的releases界面,找到合适的版本(tensorflow2.0对应的是0.24.1~0.26.1)我们选择0.25.1,下载bazel-0.25.1-installer-linux-x86_64.sh
    下载好之后我们根据官方的教程走:
    步骤1,安装需要的包,主要是C++的编译器和解压工具,执行
    sudo apt install g++ unzip zip
    此外,官方说的是如果还需要build java的代码,需要安装下面这个jdk(ubuntu18.04)
    sudo apt-get install openjdk-11-jdk
    ubuntu16.04请执行这句
    sudo apt-get install openjdk-8-jdk
    根据亲身测试,在tensorflow源码bazel的过程中是需要这个jdk的。
    我一开始就没装它,bazel执行后就会弹出与java相关的错误,找不到某些文件(具体错误我没有记录下来),然后我又回头装了一下这个jdk,就顺利bazel了(也没有出现其他问题)。

    步骤2,运行安装文件
    首先给下载的二进制文件执行权限
    chmod +x bazel-<version>-installer-linux-x86_64.sh
    然后执行该文件
    ./bazel-<version>-installer-linux-x86_64.sh --user

    步骤3,把bazel添加进环境变量(按照官方教程来就行)

  3. 运行测试程序
    与在windows下一致,直接进入tensorflow源码文件夹,在命令行中输入代码测试对应的test文件,具体代码参考stackoverflow的这个问题
    比如执行:bazel test //tensorflow/core/kernels:unique_op_test
    此时程序开始运行,等待所有文件(大概是预处理?)完成即可。
    等待一段时间后,你会看到[xxx/xxx]个文件完成,这时候再次执行bazel test会非常快速地完成build,如果出现这样的提示,就说明已经无错误地完成了build并且跑了一遍。
    另外关于bazel build和bazel run的异同可以参考这里,我使用的是bazel test。

二、寻找xxx_test.cc文件的输出

此时,我们已经完成了tensorflow源码内test文件的测试,然而我们在命令行内并没有看到任何反馈,只看到了一些绿色的INFO,告诉我们Build成功了,程序也可以跑起来,用了多长时间等。
但是我们只得到这些反馈还不够,对于xxx_test.cc文件中具体的函数,我们想要知道它具体执行的逻辑是怎样的,我们需要函数内部的输出反馈。
比如,某个函数在执行的时候是应该会输出某些text的,但是我们在命令行内并没有看到,那它们在哪呢?
就我的具体情况来说,我把tensorflow的源码放在了ubuntu主文件夹的Download文件夹内,即(~/Download/tensorflow),函数的输出以.log的形式被存在了
~/.cache/bazel/_bazel_yourname/22027de37d218271e4c501ed35373e46/execroot/org_tensorflow/bazel-out/k8-opt/testlogs/tensorflow/core/kernels/unique_op_test/test.log
注意彩色的部分,蓝色的yourname代表的是你ubuntu的用户名,紫色的部分代表的是你bazel的那个test文件在tensorflow源码文件夹内的位置,刚才我测试的是:/tensorflow/core/kernels/unique_op_test.cc这个文件,所以.log的生成位置与其所在路径一致,即紫色的部分。
无论你测试哪个test文件,它都会在testlogs文件夹内的对应位置生成test.log,我们打开这个log文件即可看到xxx_test.cc文件内的test函数执行后的输出了。另外,对于这个很长的路径内的以很多数字为名字的文件夹,我觉得应该是随机生成的。

之后就可以愉快地边改代码边运行,有了调试方法,代码的成功率也会大大提升~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值