2016-04-21 20 views
1

Ich benutze Theano auf einem Remote-Server, den ich zuerst ssh (ich habe keine Root auf diesem System). Das funktioniert aber gut, wenn ich einen screen starte, erhalte ich einen Fehler, wenn ich versuche, denano zu importieren.Wie man theano innerhalb der Bildschirmsitzung benutzt?

Verhalten bei nicht screen mit:

>>> import theano 
Using gpu device 0: GeForce GTX TITAN X (CNMeM is disabled, CuDNN 4007) 

Verhalten bei screen mit:

>>> import theano 
ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.5: cannot open shared object file: No such file or directory 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/2012/enewel3/.local/lib/python2.7/site-packages/theano/__init__.py", line 103, in <module> 
    import theano.sandbox.cuda 
    File "/home/2012/enewel3/.local/lib/python2.7/site-packages/theano/sandbox/cuda/__init__.py", line 697, in <module> 
    use(device=config.device, force=config.force_device, test_driver=False) 
    File "/home/2012/enewel3/.local/lib/python2.7/site-packages/theano/sandbox/cuda/__init__.py", line 496, in use 
    device, cuda_initialization_error_message)) 
EnvironmentError: You forced the use of gpu device gpu, but CUDA initialization failed with error: 
cuda unavailable 

Wie soll ich Theanos innerhalb einer Bildschirmsitzung verwenden?

Antwort

2

Das Problem war aufgrund der Tatsache, dass, obwohl Bildschirm die meisten Umgebungsvariablen erbt, fügt hinzu, entfernt und ändert einige von ihnen. In meinem Fall änderte es den Wert von LD_LIBRARY_PATH.

Beim Betreten eines Bildschirms wurde das Problem manuell behoben, indem die Umgebungsvariable manuell auf den richtigen Wert gesetzt wurde. Für mich sieht das wie folgt aus:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/pkgs/gurobi502/linux64/lib 

Hinzufügen diese Linie meiner .bashrc stellt sicher, dass Bildschirme immer den richtigen Wert erhalten. Beachten Sie, dass das Hinzufügen zu .bash_profile nicht funktioniert, da .bash_profile nur bei der Anmeldung ausgeführt wird, während .bashrc für jede neue Shell ausgeführt wird.