我们在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
答案 0 :(得分:0)
-lpthread应该用在jemalloc.BUILD文件中jemalloc的链接选项中。