在Tensorflow 1.0.1中启用jemalloc会导致XLA测试失败

时间:2017-03-22 13:37:24

标签: tensorflow

我们在Ubuntu 16.04 Linux ppc64le上使用Tensorflow 1.0.1。我们启用了jemalloc和实验性XLA支持。在运行bazel test // tensorflow / compiler / ...来检查ppc64le上的XLA支持时,我们发现所有的测试都被跳过了#34; NO STATUS"以及以下链接器错误

usr/bin/ld: bazel-out/local-opt/bin/tensorflow/compiler/aot/codegen_test: hidden symbol 'pthread_atfork' in
      /usr/lib/powerpc64le-linux-gnu/libpthread_nonshared.a(pthread_atfork.oS) is referenced by DSO

即使我尝试运行像bazel test // tensorflow / compiler / aot:codegen_test这样的单个测试,也得到了相同的链接器错误。只有tfcompile_util_test正在传递。

离开这个错误,我发现了一个奇怪的观察结果,禁用jemalloc会使大多数XLA测试通过。如果我们禁用jemalloc,大约70-80%的XLA测试通过了我。其余的测试仍然失败,有一些seg故障。 不确定jemalloc和XLA是否相关。有谁可以确认他们是否相关,我的观察是否可以保持良好状态?

对于上面的链接错误,我读到它是ppc64le上的一个glibc的错误,它不会导出x86' glibc所做的pthread_atfork的动态版本,而是通过侥幸。解决方案是我们在链接选项中添加-lpthread。不知何故,在张贴流/编译器中的任何.bzl文件或BUILD文件中添加-lpthread作为linkopts是行不通的。 -lpthread甚至不出现在链接命令中。关于此错误的任何指针也会有所帮助。请帮助我们解决这个问题。

谢谢, Nishidha

1 个答案:

答案 0 :(得分:0)

-lpthread应该用在jemalloc.BUILD文件中jemalloc的链接选项中。