Tensorflow 启用TysFLUCE1.0.1中的JEMALOLC会导致XLA测试失败

Tensorflow 启用TysFLUCE1.0.1中的JEMALOLC会导致XLA测试失败,tensorflow,Tensorflow,我们正在Ubuntu 16.04 Linux ppc64le上使用Tensorflow 1.0.1。我们已经启用了JEMALOC和实验XLA支持。运行bazel测试//tensorflow/编译器/。。。为了检查XPLA对PPC64 LE的支持,我们发现所有的测试都跳过了“没有状态”和下面的链接错误。 usr/bin/ld: bazel-out/local-opt/bin/tensorflow/compiler/aot/codegen_test: hidden symbol 'pthread_a

我们正在Ubuntu 16.04 Linux ppc64le上使用Tensorflow 1.0.1。我们已经启用了JEMALOC和实验XLA支持。运行bazel测试//tensorflow/编译器/。。。为了检查XPLA对PPC64 LE的支持,我们发现所有的测试都跳过了“没有状态”和下面的链接错误

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\u util\u测试通过

保留这个错误,我所做的一个奇怪的观察是禁用JEMALOC使大多数XLA测试通过。如果我们禁用JEMALOC,大约有70-80%的XLA测试通过了。其余的测试仍然失败,出现了一些seg故障。 不确定JEMALLC和XLA是否相关。有没有人能确认他们是否有关联,我的观察结果是否可靠

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

谢谢,
Nishidha

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

最后,我找到了它不起作用的原因。jemalloc代码使用了这个函数pthread_fork。因此,它需要使用-lpthread链接标志构建。