我正在做这个教程: http://deeplearning.net/software/theano/tutorial/using_gpu.html#exercise
这里给出了教程的解决方案: http://deeplearning.net/software/theano/_downloads/using_gpu_solution_1.py
但我的问题是我运行代码
使用GPU:
THEANO_FLAGS=mode=FAST_RUN,device=gpu time python using_gpu_solution_1.py
我得到了以下输出:
Using gpu device 0: Tesla C2050 / C2070
Used the gpu
13.37user 3.69system 0:16.49elapsed 103%CPU (0avgtext+0avgdata 617376maxresident)k
0inputs+16outputs (0major+75442minor)pagefaults 0swaps
和CPU:
THEANO_FLAGS=mode=FAST_RUN,device=cpu time python using_gpu_solution_1.py
我得到了以下输出:
Used the cpu
6.85user 14.50system 0:04.43elapsed 481%CPU (0avgtext+0avgdata 241120maxresident)k
0inputs+16outputs (0major+43904minor)pagefaults 0swaps
在the solution中,他们提到GPU的速度几乎翻了一番。 但是我使用GPU的时间比CPU要长。
代码是在CPU的多核上运行的吗?它是否比GPU有所改进?
谁能告诉我我错了什么? 我唯一能看到的是使用GPU改善系统时间。 这是加速的意思吗?因为GPU的整体经过时间仍然更长。
答案 0 :(得分:3)
有一个问题(1)和对此的考虑(2-3):
1)你没有正确的时间。你的时间方式,你包括theano编译时间。 Theano编译不会包含在配置文件中。你应该只把时间花在Theano函数上。为此,请修改使用Theano Profiler的脚本,如配置文件中所示。
2)这是一个玩具的例子。它做纯随机梯度下降(SGD)。为了从GPU获得良好的速度,我们需要使用带有SGD的minibatch。如果我们不知道GPU没有足够的数据来平行计算。
3)由于这是一个只有小型号的玩具示例,因此根据所使用的CPU和GPU,速度会有很大差异。可能是你使用比原版更好的CPU进行调整,或者使用并行BLAS进行调整。