2014-06-17 38 views
6

Voglio eseguire pycuda da un notebook IPython su un laptop Linux con NVIDIA Optimus (bumblebee). Di solito, posso ottenere uno script python in esecuzione digitando optirun python my_pycuda_script.pyNotebook IPython con optirun

Ma se avvio optirun ipython notebook e poi apro un blocco note, viene avviato un nuovo kernel e non riesco più a eseguire pycuda. Ho scoperto che se sostituisco il mio eseguibile python con uno script di shell che chiama optirun new_location_of_python funziona, ma questo è un brutto attacco. C'è un modo migliore per farlo? Magari con una funzione magica, in modo che solo i notebook rilevanti vengano avviati con optirun?

Grazie per qualsiasi aiuto!

+0

Penso che questo sia dovuto alla struttura che un notebook ipython è in realtà diversi componenti: server e kernel (ipcontroler e ipengine (s)). Per il supporto ottimale nel motore si potrebbe quindi solo creare un "profilo", quindi aggiornare il comando di avvio del motore per utilizzare optirun: https://ipython.org/ipython-doc/3/parallel/parallel_process.html – Ax3l

risposta

1

Ho appena trovato una soluzione da github:data_science_workspace.

supporto GPU per Jupyter:

Per i computer su Linux con optimus, si deve fare un kernel che verrà chiamato con "optirun" per essere in grado di utilizzare l'accelerazione GPU. Per questo andare alla seguente cartella:

cd ~/.local/share/jupyter/kernels/

quindi modificare il file python3/kernel.json al fine di aggiungere "optirun" come primo ingresso nel argv matrice:

{ 
"language": "python", 
"display_name": "Python 3", 
"argv": [ 
    "optirun", 
    "/home/fabien/.conda/envs/data_science/bin/python", 
    "-m", 
    "ipykernel", 
    "-f", 
    "{connection_file}" 
    ] 
} 

Ma nel mio computer, il kernel.json è in: ~/miniconda3/envs/nn/share/jupyter/kernels/python3.

mie info Conda:

$ conda info 
user-agent : conda/4.3.30 requests/2.14.2 CPython/3.6.1 Linux/4.9.79-1-MANJARO arch/Manjaro glibc/2.26 

Spero che questo è quello che ti serve :-).