【问题标题】:GPU with Theano giving poor result compared to CPU with theano与使用 theano 的 CPU 相比,使用 Theano 的 GPU 的结果较差
【发布时间】:2014-10-19 10:30:37
【问题描述】:

我正在做这个教程: 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 的整体运行时间仍然更长。

【问题讨论】:

    标签: python cuda gpu theano


    【解决方案1】:

    有一个问题(1)和对此的考虑(2-3):

    1) 你的时间不正确。您计时的方式包括theano 编译时间。 Theano 编译不会包含在配置文件中。你应该只计算花在 Theano 函数中的时间。为此,修改使用 Theano profiler 的脚本,就像在配置文件中一样。

    2) 这是一个玩具示例。它做纯随机梯度下降(SGD)。为了从 GPU 获得良好的加速,我们需要使用带有 SGD 的 minibatch。如果我们不这样做,GPU 就没有足够的数据来并行化计算。

    3) 由于这是一个只有小模型的玩具示例,因此速度提升会因所使用的 CPU 和 GPU 的不同而有很大差异。可能是您在比原来更好的 CPU 上进行了计时,或者您使用并行 BLAS 进行了计时。

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 1970-01-01
      • 2016-07-16
      • 2013-08-12
      • 2017-05-13
      • 2017-03-22
      • 1970-01-01
      • 2015-09-12
      • 2018-11-11
      相关资源
      最近更新 更多