web-dev-qa-db-ja.com

TensorFlowのコンパイルに失敗する

ソースからTensorFlowをコンパイルしようとしたときに次のエラーが発生します。どんな考えでも役に立ちます。

bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
bazel-out/Host/bin/_solib_local/_U_S_Stensorflow_Spython_Cgen_Unn_Uops_Upy_Uwrappers_Ucc___Utensorflow/libtensorflow_framework.so: undefined reference to `[email protected]'
4
antoajayraj

ビルドにバグがあるようです。同じことを自分のマシンで再現することができました。 LD_LIBRARY_PATHの値は、bazelのビルド中に常に適切に伝播されるとは限らないようです。私の場合、次のコマンドを使用すると、正常にビルドできました。

bazel build  --config=opt --config=cuda tensorflow/tools/pip_package:build_pip_package --action_env="LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
22
gunan

昨日、明らかに有効なcuda 9.0に対してソースからテンソルフローを構築しようとしたときに、同じエラーが発生しました。私の場合、git cleanaction_envの組み合わせは役に立ちませんでした-ldは、bazelを介してcudalibの確認を一貫して拒否します。

このスレッド の指示に従うことになりました:rootとして、1行でファイル/etc/ld.so.conf.d/cuda.confを作成します

/usr/local/cuda/lib64

/usr/local/cuda/が具体的なcudaディレクトリにリンクされていると仮定します(例:/usr/local/cuda-9.0/))。

次に、Sudo ldconfigを発行します。これでビルドが実行され、tensorflowは私のGPUを使用しています。

2
Hans

この問題を検索しやすくするために:私が受け取ったエラーメッセージも上部に含まれています:

libcublas.so.9.0, needed by bazel-out/[...]/libtensorflow_framework.so, not found (try using -rpath or -rpath-link)

libcudnnなどの場合も同様です。

この問題が発生したとき、最初に/usr/local/cuda/lib64/usr/local/cuda/extras/CUPTI/lib64LD_LIBRARY_PATHに追加し、再構築を試みました(--action_envなし)。動作しませんでした。

次に、--action_envを使用せずに、クリーンな再構成とビルドを実行しましたが、機能しました。 git clean -xdfを使用してリポジトリをクリーンアップしました。これにより、リポジトリ内のgitに認識されていないすべてのファイルが削除されます。 :)

たぶん--action_envは、クリーンな再構築を行う必要をなくしたでしょう、私は知りません。ただし、最初のビルドを実行する前にライブラリがLD_LIBRARY_PATHにあった場合は、--action_envは必要ないと思います。

0
Justin L.

エラーが発生した後、/usr/local/cuda/lib64LD_LIBRARY_PATHに追加しました。それはうまくいきませんでした。次に、.tf_configure.bazelrcbuild --action_env LD_LIBRARY_PATH=..."で再度変更しました。プロジェクトを再コンパイルして合格!

0
LCJ