2017-01-18 20 views
1

私はソースからコンパイルされたTensorFlowを使用してtutorial example for XLAを実行しています。私はCUDA 8 cuDNN 5.1をインストールしているTensorFlow XLAの例(libdevice.compute_35.10.bc)を実行しているNotFoundError

I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K80, pci bus id: 0000:00:1e.0) 
I tensorflow/core/platform/default/cuda_libdevice_path.cc:35] TEST_SRCDIR environment variable not set: using local_config_cuda/cuda under this executable's runfiles directory as the CUDA root. 
I tensorflow/compiler/xla/service/platform_util.cc:58] platform CUDA present with 1 visible devices 
I tensorflow/compiler/xla/service/platform_util.cc:58] platform Host present with 4 visible devices 
I tensorflow/compiler/xla/service/service.cc:180] XLA service executing computations on platform Host. Devices: 
I tensorflow/compiler/xla/service/service.cc:187] StreamExecutor device (0): <undefined>, <undefined> 
I tensorflow/compiler/xla/service/platform_util.cc:58] platform CUDA present with 1 visible devices 
I tensorflow/compiler/xla/service/platform_util.cc:58] platform Host present with 4 visible devices 
I tensorflow/compiler/xla/service/service.cc:180] XLA service executing computations on platform CUDA. Devices: 
I tensorflow/compiler/xla/service/service.cc:187] StreamExecutor device (0): Tesla K80, Compute Capability 3.7 
W tensorflow/core/framework/op_kernel.cc:993] Not found: ./libdevice.compute_35.10.bc not found 
Traceback (most recent call last): 
    File "/mnt/software/envs/xla/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 1022, in _do_call 
    return fn(*args) 
    File "/mnt/software/envs/xla/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 1004, in _run_fn 
    status, run_metadata) 
    File "/usr/lib/python3.4/contextlib.py", line 66, in __exit__ 
    next(self.gen) 
    File "/mnt/software/envs/xla/lib/python3.4/site-packages/tensorflow/python/framework/errors_impl.py", line 469, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.NotFoundError: ./libdevice.compute_35.10.bc not found 
     [[Node: cluster_0/_0/_1 = _XlaLaunch[Targs=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], Tconstants=[DT_INT32], Tresults=[DT_FLOAT, DT_FLOAT], function=cluster_0[_XlaCompiledKernel=true, _XlaNumConstantArgs=1], _device="/job:localhost/replica:0/task:0/gpu:0"](Shape_2, _recv_Placeholder_0/_3, _recv_Placeholder_1_0/_1, Variable_1, Variable)]] 

:次のエラーでpython mnist_softmax_xla.py結果を実行します。ファイルlibdevice.compute_35.10.bcがマシン上に存在しない:

$ find /usr/local/cuda/ -type f | grep libdevice.compute_35.10.bc 
/usr/local/cuda/nvvm/libdevice/libdevice.compute_35.10.bc 

私の勘では、これがメッセージTEST_SRCDIR environment variable not set: using local_config_cuda/cuda under this executable's runfiles directory as the CUDA root.とは何かを持っているということですが、私はそれについて何をすべきかわかりません。

+0

あなたのLD_LIBRARY_CONFIG env変数を再確認してください。それ以外の場合は私のバグです。 github repoに1つの問題を記入してください。 – fabrizioM

+0

あなたは 'LD_LIBRARY_PATH'を意味しますか?/usr/local/cudaにあるほとんどのCUDA共有ライブラリはすでに 'sudo ldconfig -v 2>/dev/null |の出力に現れているので、それは問題だと懐疑的だ。 grep cuda'です。 – ndronen

+0

こんにちは、私はGoogleのXLA開発者です。私は実際に自分自身に遭遇した後、あなたの質問を見つけ出し、エラーを見つけました。 :) 私は何が間違っているのかはまだわかりませんが、libdeviceは共有ライブラリではないので、LD_LIBRARY_PATHが解決策であるかどうかは疑問です。 私はこの問題を一度把握して更新します。 –

答えて

1

キーは、このログメッセージである:

I tensorflow/core/platform/default/cuda_libdevice_path.cc:35] TEST_SRCDIR environment variable not set: using local_config_cuda/cuda under this executable's runfiles directory as the CUDA root. 

(私は後でログにそれに気づいた。私は実際にソースに周り掘って、そのファイルを発見しただけにして、ログ内のメッセージに気づきました。)

私が現在理解していない理由から、XLAはlibdeviceの/ usr/local/cuda(または./configureを実行したときに指定したディレクトリ)を検索しません。 cuda_libdevice_path.cc [1]あたり、libdeviceを指すように特別に作成されたシンボリックリンクを探しています。

私はこのコードを書いた人をループして、それが何をしているのか把握します。一方で、私は次のようにその周りに自分自身を働くことができました:

$ mkdir local_config_cuda 
$ ln -s /usr/local/cuda local_config_cuda/cuda 
$ TEST_SRCDIR=$(pwd) python my_program.py 

重要なことは、local_config_cudaディレクトリの親にTEST_SRCDIRを設定することです。

ご迷惑をおかけして申し訳ありません。申し訳ありませんが、私はあなたのために今はあまりハックな答えをしていません。

[1] https://github.com/tensorflow/tensorflow/blob/e1f44d8/tensorflow/core/platform/cuda_libdevice_path.cc#L23https://github.com/tensorflow/tensorflow/blob/1084748efa3234c7daa824718aeb7df7b9252def/tensorflow/core/platform/default/cuda_libdevice_path.cc#L27

+0

あなたの修正を使用して、/ usr/local/cuda/extras/CUPTI/lib64をライブラリパス(ld.so.conf.d /を介して)に追加すると、XLAサンプルコードが実行されました。ありがとう! XLAチームはこれらの手順でチュートリアルを更新できますか? – ndronen

+0

私たちはそれをしています。私はTEST_SRCDIRビットが必要であるとは思わない。そしてLD_LIBRARY_PATHビットを自分自身でやる方法もあります。あなたがconfigureを実行したときにCUDAがどこにあるかをあなたに伝えました。 :) –

関連する問題