【问题标题】:Storing specific shared variables in CPU在 CPU 中存储特定的共享变量
【发布时间】:2015-12-04 22:58:45
【问题描述】:

theano 中是否可以选择性地选择 CPU 中的一些共享变量?我在整个词汇表(~2M)的输出层有一个巨大的矩阵,它不适合 GPU 内存。我已经尝试通过采样来减小它的大小,但我想看看我是否可以使用整个矩阵。我可以做的一种方法是在 theano 标志中使用device=cpu,init_gpu_device=gpu。但是,这似乎只是在需要的基础上使用 GPU。我查看了教程,似乎没有更多详细信息。

我想知道是否可以指定一个或几个共享变量存储在 cpu 中。我猜在创建共享变量时可以这样做。在 GPU 中拥有一些变量会比在 CPU 中拥有一切要快吗?或者 theano 是否以某种方式找出要自动隐式保留/移动的那些?不胜感激。

【问题讨论】:

  • 当我添加 device=cpu,init_gpu_device=gpu 标志时,它会使我的代码减慢至少 4 倍,我现在已经测试过了。显然,我更喜欢在 GPU 中移动计算和大部分变量。有什么建议吗?
  • 输出层(可能)没有存储在共享变量中,所以您能确认您说的是存储输入数据的共享变量吗?此外,可以选择将一些共享变量放在 GPU 内存中,而将一些共享变量放在主机内存中,但速度影响可能非常显着;您能否更详细地解释您正在考虑将哪些类型的数据存储在哪里?附:您可以编辑您的问题以添加更多信息。

标签: memory gpu theano


【解决方案1】:

在较新的 Theano 中(我忘记了 Theano 0.8.2 或 Theano 0.9 的开发版),有一个不同的界面。你可以做 theano.shared(data, target='cpu')

像以前一样继续初始化 GPU。

【讨论】:

    猜你喜欢
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多