【问题标题】:Limit GPU Memory in Julia using CuArrays使用 CuArrays 限制 Julia 中的 GPU 内存
【发布时间】:2019-07-16 23:01:05
【问题描述】:

我对 julia 还很陌生,我目前正在尝试一些具有循环结构的深度卷积网络。我正在使用 GPU 在 GPU 上训练网络 CuArrays(CUDA 9.0 版)。

拥有两个独立的 GPU,我启动了两个具有不同数据集的实例。 经过一些训练后不久,两个 julia 实例都分配了所有可用内存(2 x 11GB),我什至无法使用 CuArrays 自己启动另一个实例(内存分配错误)。这成了一个相当大的问题,因为它运行在许多人共享的服务器上。

我假设这是使用所有可用内存尽可能快地训练的正常行为。但是,在这种情况下,我想限制可以分配给同时运行两个实例的内存,并且不要阻止我或其他人使用 GPU。 令我惊讶的是,我只发现了非常非常少的信息。

我知道 CUDA_VISIBLE_DEVICES 选项,但这无济于事,因为我想在两个设备上同时训练。 另一个建议调用 GC.gc() 和 CuArrays.clearpool() 第二次调用会引发未知函数错误,并且似乎不再包含在 CuArray 包中。我目前正在测试的第一个,但不完全是我需要的。是否有可能使用 CuArrays 和 Julia 限制 GPU 上的 RAM 分配? 提前致谢 我的 Batchsize 是 100,一批应该小于 1MB...

【问题讨论】:

    标签: julia julia-gpu cuda-arrays


    【解决方案1】:

    目前没有这样的功能。我很快搞定了一些东西,见https://github.com/JuliaGPU/CuArrays.jl/pull/379,您可以使用它来定义CUARRAYS_MEMORY_LIMIT,并将其设置为分配器不会超出的字节数。请注意,这可能会显着增加内存压力,CuArrays.jl 内存分配器目前尚未针对这种情况进行优化(尽管它是我对 Julia GPU 基础架构的首要任务之一)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 2018-06-19
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      相关资源
      最近更新 更多