【问题标题】:Matlab Dual GPU memory usageMatlab双GPU内存使用
【发布时间】:2016-07-27 05:09:16
【问题描述】:

我有一个名为 Titan Z 的双 GPU 卡。我有 Matlab 2016a 试图解决一个稀疏的 Ax=b 方程组,用于不同的“b”值。 Titan Z 有两个 GPU 和每个 gpu 的 6 GB 内存

这就是问题所在。

  1. 如果我在 1 个 GPU 上解决 Ax=b 问题,假设“A”矩阵大小为 2GB,Matlab 将此矩阵复制到每个 GPU 的 vram。 GPU-Z 报告 每个 GPU 有 2 GB 的数据,只有 1 个 GPU 在工作
  2. 如果我在 2 个 GPU 上解决两个 Ax=b 问题,假设“A”矩阵大小为 2GB,Matlab 再次将此矩阵复制到每个 GPU 的 vram 两次。现在 GPU-Z 报告每个 GPU 有 4GB 的数据,并且两个 GPU 同时工作。
  3. 如果我尝试同时解决“4GB”问题,Nvidia 驱动程序会因 Vram 不足而崩溃。但我可以在一个 GPU 上解决它。不能同时在 2 个 GPU 上。

问题是 Matlab 复制这些矩阵两次,当不需要时,更有趣的是,当两个 GPU 使用完全相同的“A”矩阵但不同的“b”向量时,它会这样做。

我该如何解决这个问题?

【问题讨论】:

  • 你能分享你的代码吗?您使用的是spmd 还是类似的?
  • 其实很简单。我使用 gpuArray 进行分配和传输,然后使用 parfor 循环 (i=1:2) 来求解方程组。在 GPU 上。
  • 所以您没有在parfor 循环内构建gpuArray?如果你在parfor 中构建gpuArrays 会发生什么?
  • 我也尝试在内部构建它。我什至在里面调用了 gpuDevice 以确保它能够正确使用 GPU。我尝试了很多其他的东西。我怀疑 Nvidia 驱动程序会将任何数据镜像到一个 GPU,因为这是一张双 GPU 卡。下一步我将插入另一个 GPU,看看它是否也将它复制到第三个。我必须再次提醒您,两个 GPU 必须具有相同的矩阵但不同的向量 b

标签: matlab matrix multi-gpu


【解决方案1】:

回答我自己的问题有点晚,但这是解决方案。 在 Nvidia 控制面板中禁用多 GPU 模式解决了该问题。 基本上它禁用了 sli 并且 gpus 可以独立运行。就这么简单。

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 2015-03-10
    • 2013-08-17
    • 2017-09-17
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多