2017-08-11 6 views
2

クラスタでテンソルフローを実行しています。私はCUDAバージョンをインストールしました。何の問題もなく動作します。 GPUを使用するには、リソースをリクエストする必要があります。今、GPUリソ​​ースを要求せずにCPU上でのみ実行したいです。CPU上のCUDAを使用したTensorflowランニングバージョン

On import tensorflow as tf, I get the error: 
ImportError: /home/.pyenv/versions/2.7.13/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: undefined symbol: cuDevicePrimaryCtxRetain 


Failed to load the native TensorFlow runtime. 

See https://www.tensorflow.org/install/install_sources#common_installation_problems 

for some common reasons and solutions. Include the entire stack trace 
above this error message when asking for help. 

私は唯一のCPU上で実行し、環境変数CUDA_VISIBLE_DEVICES=""を設定する必要がありましたが実現。私はexportのbashとpythonスクリプトの両方でそれを行いました。私はまだ同じエラーが発生します。

テンソルフローのGPU版をCPUでのみ使用するにはどうすればよいですか?出来ますか?他のページRun Tensorflow on CPUは、セッション設定パラメータを変更することを提案しています。しかし、私はimport自体のエラーを取得して以来、私はそれが適用可能または有用ではないと思います。

スタックトレース:

File "<FileNameReplaced>", line 10, in <module> 
    import tensorflow as tf 
    File "/home/***/.pyenv/versions/2.7.13/lib/python2.7/site-packages/tensorflow/__init__.py", line 24, in <module> 
    from tensorflow.python import * 
    File "/home/***/.pyenv/versions/2.7.13/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 51, in <module> 
    from tensorflow.python import pywrap_tensorflow 
    File "/home/***/.pyenv/versions/2.7.13/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 52, in <module> 
    raise ImportError(msg) 
ImportError: Traceback (most recent call last): 
    File "/home/***/.pyenv/versions/2.7.13/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module> 
    from tensorflow.python.pywrap_tensorflow_internal import * 
    File "/home/***/.pyenv/versions/2.7.13/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module> 
    _pywrap_tensorflow_internal = swig_import_helper() 
    File "/home/***/.pyenv/versions/2.7.13/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper 
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) 

追加情報:

バージョン:1.1.0

答えて

1

この問題が議論されているTensorFlowレポ、中issue #2175を見てみましょう。私のために働いたのは、documentation of CUDA environment variablesに続くではなく、""と設定することでした。最初にセッションを作成すると警告が表示されることがありますが、計算は正常に動作するはずです。あなたはバッシュまたは類似を使用している場合は、あなたが言うように、プログラムを実行する前に、それをエクスポートすることにより、これを行う、あるいは単にとすることができます

$ CUDA_VISIBLE_DEVICES="-1" python my_program.py 

また、おそらくより多くのポータブルソリューションは、Python自体が環境を設定することです変数前TensorFlowは、任意のモジュールによってインポートされます。

import os 
os.environ["CUDA_VISIBLE_DEVICES"] = "-1" 
import tensorflow as tf 

別のユーザーが、以下の方法であなたのセッションを作成示唆:

import tensorflow as tf 

session_conf = tf.ConfigProto(
    device_count={'CPU' : 1, 'GPU' : 0}, 
    allow_soft_placement=True, 
    log_device_placement=False 
) 

with tf.Session(config=session_conf) as sess: 
    sess.run(...) 

これにより、よりきめ細かな制御も可能になります(例:私は2つのGPUを持っていますが、TensorFlowにそれらのうちの1つを使用させたいだけです)。

+0

これは機能しません。テンソルフローのバージョンは重要ですか? 1.1.0です。私はgithubのリンクを見ていきます。 – Dinesh

+0

@edit環境変数のバージョンはCUDAのものなので、問題ではありません。 'tf.ConfigProto'については、正直言って私はそれを自分で使っていないかもしれません。 – jdehesa

+0

ええ、私は環境変数を試しました。問題は私がセグメンテーションフォールトを取得する:私が正確に行う場合: インポートos os.environ ["CUDA_VISIBLE_DEVICES"] = "-1" tfとしてテンソルをインポート セグメンテーションフォールトをスローし、pythonコマンドラインを終了します。 – Dinesh

関連する問題