问题标签 [multi-gpu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
391 浏览

matrix - 使用多 GPU 的并行矩阵乘法

我在我的系统中的不同 pci 插槽中安装了两个 GPU(2x Nvidia Quadro 410)。为了解决这两个 GPU 上的 Martix 乘法,我如何拆分输入矩阵,以便每个 GPU 处理/计算输出矩阵的一部分,然后将其返回。例如。对于两个矩阵 A, B 每个顺序 10x10 ,然后计算输出矩阵 C= A x B ,这样,在 100 个元素(10 x 10)中,50 个元素应该在第一个 GPU 和另一半上计算,即 50 到b 在第二个 GPU 中计算。我正在尝试在 OpenCL 上实现它。但是,欢迎任何有助于我提出解决方案的算法。

0 投票
2 回答
68 浏览

opencl - 多 GPU 的隐式工作

在 OpenCL 中,由多个 GPU 组成的系统是否有可能在没有程序员显式划分工作负载的情况下隐式划分工作?
例如,我有一个由 1 个 SM 192 核心 GPU 组成的 GPU 并运行一个矩阵乘法,它可以正常工作。现在我添加了另一个相同的 GPU,OpenCL 使用这两个 GPU 来计算其上的矩阵乘法,而不是程序员将工作负载分配给每个 GPU。

0 投票
2 回答
2547 浏览

optimization - 在 TensorFlow 中进行多 GPU 训练有什么优势?

这个 TensorFlow 教程中,您可以使用 N 个 GPU 将 N 个 mini-batch(每个包含 M 个训练样本)分配给每个 GPU,并同时计算梯度。

然后平均从 N 个 GPU 收集的梯度并更新模型参数。

但这与使用单个 GPU 计算 N*M 训练样本的梯度,然后更新参数的效果相同。

因此,在我看来,唯一的优势是您可以在相同的时间内使用更大的 mini-batch。

但是更大的 mini-batch 一定更好吗?

我认为您不应该使用大型 mini-batch,以使优化对鞍点更加稳健。

如果更大的 mini-batch 确实不是更好,为什么还要关心 Multi-GPU 学习,甚至是 Multi-server 学习?

(上面的教程是同步训练,如果是异步训练,那我可以看出优点了,因为参数会更新,不会平均每个GPU计算的梯度)

0 投票
2 回答
776 浏览

tensorflow - tensorflow 中的多 GPU CIFAR10 示例:聚合损失

在 tensorflow多 GPU CIFAR 10 示例中,对于每个 GPU,他们计算损失(第 174-180 行

当下面几行(第 246 行)时,他们评估loss

究竟计算了什么损失?

我查看了该tower_loss函数,但没有看到所有 GPU(塔)上的任何增量聚合。

我知道整个图正在执行(在所有 GPU 上),但是会返回什么损失值?只有loss在最后一个 GPU 上?我没有看到实际loss变量的任何聚合。

0 投票
1 回答
584 浏览

cuda - 一个 K80 内的两个 GPU 的 CUDA 感知 MPI

我正在尝试优化名为 LAMMPS ( https://github.com/lammps/lammps ) 的 MPI+CUDA 基准测试的性能。现在我正在运行两个 MPI 进程和两个 GPU。我的系统有两个插座,每个插座连接到 2 个 K80。由于每个 K80 内部包含 2 个 GPU,因此每个插槽实际上连接到 4 个 GPU。但我只在一个插槽中使用 2 个内核,以及连接到该插槽的 2 个 GPU(1 K80)。MPI 编译器是 MVAPICH2 2.2rc1,CUDA 编译器版本是 7.5。

这就是背景。我分析了应用程序,发现通信是性能瓶颈。我怀疑这是因为没有应用 GPUDirect 技术。所以我切换到 MVAPICH2-GDR 2.2rc1 并安装了所有其他必需的库和工具。但是 MVAPICH2-GDR 需要 Infiniband 接口卡,这在我的系统上不可用,所以我有运行时错误“通道初始化失败。系统上没有找到活动的 HCA”。根据我的理解,如果我们只想在一个节点上使用 1 K80 以内的 GPU,则不需要 Infiniband 卡,因为 K80 具有用于这两个 GPU 的内部 PCIe 开关。这些是我的疑惑。为了让问题更清楚,我将它们列出如下:

  1. 在我的系统中,一个插座连接到两个 K80。如果一个 K80 中的两个 GPU 需要与另一个 K80 中的 GPU 通信,那么我们要使用 GPUDirect 就必须有 IB 卡,对吗?

  2. 如果我们只需要使用1个K80内的两个GPU,那么这两个GPU之间的通信就不需要IB卡了,对吧?但是,MVAPICH2-GDR 至少需要一张 IB 卡。那么有什么办法可以解决这个问题吗?或者我必须在系统上插入 IB 卡?

0 投票
0 回答
752 浏览

deep-learning - nnGraph 多 GPU 火炬

这个问题是关于让任何 nnGraph 网络在多个 GPU 上运行,而不是特定于以下网络实例

我正在尝试训练一个用 nnGraph 构建的网络。附后图。我正在尝试在多 GPU 设置中运行 parallelModel(参见代码或图节点 9)。如果我将并行模型附加到一个 nn.Sequential 容器,然后创建一个 DataParallelTable,它可以在多 GPU 设置中工作(没有 nnGraph)。但是,将其附加到 nnGraph 后,我收到错误消息。如果我在单个 GPU 上训练(在 if 语句中将 true 设置为 false),则后向传递有效,但在多 GPU 设置中,我收到错误“gmodule.lua:418:尝试索引本地'gradInput'(无价值)”。我认为反向传递中的 Node 9 应该在多个 GPU 上运行,但是这并没有发生。在 nnGraph 上创建 DataParallelTable 对我不起作用,但是我认为至少将内部顺序网络放在 DataParallelTable 中会起作用。是否有其他方法可以拆分传递给 nnGraph 的初始数据,以便它在多个 GPU 上运行?

向后传球

“if”语句中的代码取自Facebook 的 ResNet 实现

0 投票
1 回答
224 浏览

matlab - Matlab双GPU内存使用

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

这就是问题所在。

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

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

我怎么解决这个问题?

0 投票
2 回答
452 浏览

matlab - 多个 Tesla K80 GPU 和 parfor 循环

我收到了一台配备 4xGPU 的 Tesla K80 的计算机,我正在尝试使用 Matlab PCT 的 parfor 循环来加快 FFT 的计算速度,但速度却更慢。

这是我正在尝试的:

为什么打开 8 个工作人员的速度更快,因为原则上我只将变量存储到 4gpu 中(共 8 个)?

另外,如何将 Tesla K80 用作单个 GPU?

谢谢,尼古拉斯

0 投票
1 回答
632 浏览

machine-learning - 具有多 GPU 方法的 tensorflow 分布式训练混合

在玩了一段时间当前的分布式训练实现之后,我认为它将每个 GPU 视为一个单独的工作人员。但是,现在一个盒子中有 2~4 个 GPU 很常见。采用单盒多 GPU 方法先计算单盒中的平均梯度,然后跨多个节点同步不是更好吗?这种方式大大减轻了 I/O 流量,这一直是数据并行的瓶颈。

有人告诉我,当前的实现可以通过将所有 GPU 放在单个盒子中作为工作人员,但我无法弄清楚如何将平均梯度与 SyncReplicasOptimizer 联系起来,因为 SyncReplicasOptimizer 直接将优化器作为输入。

任何人的任何想法?

0 投票
2 回答
279 浏览

computer-vision - Reinpect Human检测模型的分布式Tensorflow训练

我正在研究分布式 Tensorflow,特别是使用以下论文https://github.com/Russell91/TensorBox中给出的分布式 Tensorflow 实现 Reinspect 模型。

我们正在使用分布式张量流设置的 Between-graph-Asynchronous 实现,但结果非常令人惊讶。在基准测试中,我们发现分布式训练所花费的训练时间几乎是单台机器训练的 2 倍多。任何有关可能发生的事情以及可以尝试的其他事情的线索将不胜感激。谢谢

注意:帖子中有一个更正,我们使用的是图间实现而不是图内实现。对错误感到抱歉