2017-03-22 61 views
0

我们在Ubuntu 16.04 Linux ppc64le上使用Tensorflow 1.0.1。我们启用了jemalloc和实验XLA支持。在运行巴泽尔测试// tensorflow /编译器/ ...来检查ppc64le XLA支持,我们发现,所有的测试都被跳过“无状态”,并与下面的链接错误在Tensorflow 1.0.1中启用jemalloc导致XLA测试失败

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测试// tensorflow/compiler/aot:codegen_test这样的单个测试,并得到相同的链接器错误。只有tfcompile_util_test正在通过。

离开这个错误,我有一个奇怪的观察,禁用jemalloc使得大部分XLA测试都通过了。如果我们禁用jemalloc,大约70-80%的XLA测试通过了我。其余的测试仍然会出现一些seg故障。 不确定是否jemalloc和XLA有关系。任何人都可以确认他们是否有关系,我的观察是否可能保持良好?

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

感谢, Nishidha

+0

最后,我得到了它不工作的原因。 jemalloc代码已经使用了这个函数pthread_fork。所以,它需要使用-lpthread链接标志来构建。 –

回答

0

-lpthread应jemalloc的jemalloc.BUILD文件的连接选项一起使用。