Theano花了几分钟时间开始在GPU上运行脚本

时间:2016-01-10 18:26:19

标签: python gpgpu theano

我按如下方式启动在GPU上运行的脚本:

THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32,base_compiledir=../../temp python t.py

它有时需要几分钟才能开始:脚本t.py的第一行是一个打印语句(即print('start')),并且在几分钟之前不会显示。

如果使用CPU,则会立即显示print语句:

THEANO_FLAGS=mode=FAST_RUN,device=cpu,floatX=float32,base_compiledir=../../temp python t.py

我事先使用sudo pkill -9 python杀死了所有Python进程。运行nvidia-smi表明在运行我的脚本之前,没有进程使用任何GPU。 (我使用的是nVidia GPU,特别是nVidia GeForce GTX Titan X)

我注意到问题出现在屏幕会话中(使用GNU Screen),当它刚刚创建时(看起来是半天)。杀死屏幕会话并创建新会话可以解决问题。但是,我不明白为什么它解决了这个问题。

有什么可以解释这个问题?

有些时间:

使用Python脚本:

import time
print('start import theano')
theano_import_start_time = time.time()
import theano
theano_import_duration = time.time() - theano_import_start_time
print('done import theano')
print('theano_import_duration: {0} seconds'.format(theano_import_duration))

使用以下命令运行:

francky@server:/scratch1/a/b$ THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32,base_compiledir=../../temp_compilation python -u test_import_theano.py

我明白了:

start import theano
Using gpu device 0: GeForce GTX TITAN X (CNMeM is disabled)
done import theano
theano_import_duration: 221.107403994 seconds

221秒导入库需要相当长的时间。如果我杀死屏幕并创建一个新屏幕,则导入时间约为1.1秒。

缓慢似乎可以重复:即使我不止一次运行导入theano,它仍然需要~220秒(除非我杀死并创建一个新的屏幕)。另外,我没有空base_compiledir

1 个答案:

答案 0 :(得分:2)

如果你清空base_compiledir Theano标志指向的目录并启动你的脚本,你应该期望import theano花费非常长的时间,因为theano的第一次导入将导致一堆编译到在幕后发生。后续运行import theano应该更快,因为设置编译已经发生,只要在此期间尚未清除base_compiledir

由于Theano必须检查缓存中是否存在所有设置编译,import theano即使在第一次运行后也可能需要一段时间才能运行。如果base_compiledir位于联网文件系统或文件系统较慢的情况下,则尤其如此。