问题标签 [multiple-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 回答
4491 浏览

c++ - 是否可以在多个 GPU 上运行 cuda 内核

这是一个相当简单的问题,但谷歌搜索似乎没有答案,所以。

我想知道的是,如果我有两个能够运行 cuda 的 gpu 卡(相同),我的内核可以跨越这些卡吗?还是绑定到一张卡或另一张卡?即 cuda 提供了整套可用的 gpu 内核,或者只是运行它的卡上的内核。

如果是这样,为了实现它,我需要了解什么特别的东西吗?除了 cuda sdk 之外还有什么值得了解的例子吗?

目标语言当然是 C/C++。

0 投票
1 回答
3343 浏览

cuda - 我可以在没有 SLI 支持的系统中使用两个 NVIDIA gpu 卡来进行 CUDA 计算吗?

我当前用于 CUDA 应用程序的系统有一张旧的 NVIDIA 卡,8800 GTX。我正在考虑在不更新主板的情况下再添加一张卡。是不是只要我有两个PCI-E插槽,两个就可以了?或者我必须购买支持 SLI 支持的新主板?

0 投票
1 回答
503 浏览

cuda - 有没有类似 Hadoop,但基于 GPU 的东西?

有没有类似 Hadoop,但基于 GPU 的东西?我想对分布式计算做一些研究。感谢您的帮助!

易,

0 投票
1 回答
844 浏览

opencl - 关于使用带有多个 GPU 的 openCL 有什么新想法吗?

我的问题是:

使用带有多个 GPU 的 openCL 是否有任何新的进步(或者可能是开发的工具/库)?我知道如果有人想在 openCL 中编写代码以使用多个 GPU 为目标,那么他可以,但有人告诉我,您可以安排它们之间的通信的方式有点“原始”。我想知道的是,是否有什么东西可以在程序员和 GPU 之间的所有通信安排之间建立一定程度的抽象。

我正在用相当大的格子进行随机模拟,我希望能够将它们分解成不同的 GPU,每个 GPU 都可以在必要时进行计算和通信。以一种高效的方式编写它已经足够困难了,所以如果我可以避免使用标准方式通过 openCL 完成它的所有低级工作,那将是一个很大的帮助。

谢谢!

0 投票
2 回答
6626 浏览

gpu - 使用 Sun Grid Engine (SGE) 调度 GPU 资源

我们有一个机器集群,每台机器有 4 个 GPU。每个工作应该能够要求 1-4 个 GPU。这里有一个问题:我希望 SGE 告诉每个工作它应该使用哪个GPU。与 CPU 不同,如果一次只有一个进程访问 GPU,GPU 的工作效果最好。所以我想:

我遇到的问题是,SGE 将让我在每个节点上创建一个具有 4 个单元的 GPU 资源,但它不会明确告诉作业使用哪个 GPU(只有它获得 1 或 3,或任何)。

gpu0, gpu1, gpu2, gpu3-l想创建 4 个资源(有任何想法吗?

0 投票
1 回答
139 浏览

multiprocessing - OpenCL:将工作组定位到特定设备

假设我有一台多处理器机器。我可以将我的工作组绑定到特定设备(处理器)吗?我们有任何 API 可以在 openCL 中完成这项任务吗?

0 投票
2 回答
5102 浏览

concurrency - CUDA 多 GPU 执行中的并发性

我在带有4GPU 的多 GPU 系统上运行 cuda 内核函数。我预计它们会同时发布,但事实并非如此。我测量每个内核的启动时间,第二个内核在第一个内核完成执行后启动。所以在 GPU 上启动内核4并不比1单个 GPU 快。

我怎样才能让它们同时工作?

这是我的代码:

0 投票
1 回答
839 浏览

cuda - 如何将 DirectX 专用于 GPU 并将 CUDA 专用于另一个 GPU?

在我的应用程序中,GUI 线程使用 Direct2D 显示图像,允许用户平移和缩放,而另一个线程使用 CUDA 进行图像处理。为了防止图形处理线程受到 GUI 线程的干扰并加快处理速度,选择为 CUDA 计算添加单独的图形卡,设置如下:

  • 用于显示的 Nvidia Quadro 400(Direct2D,与 PC 一起出售,足以用于显示目的)
  • Nvidia GT640 专门用于 CUDA 计算(专门为 CUDA 计算添加,因为它具有更多内核,因此对于应用程序必须执行的操作更有效,在 BIOS 中禁用显示,不连接屏幕)。CUDA 线程包含使其仅使用此 GT640 的代码。

然而,这并没有像预期的那样工作,因为当用户平移图像,从而导致连续多次更新显示时,CUDA 执行时间从典型的 20 毫秒跳到了大约 800 毫秒。使用 GPUView(我发现它正在调查这个问题并且根本不掌握),我能够看到 CUDA 线程似乎正在等待显示器完成更新,然后再将其命令排队到 GPU。与此同时,Direct2D 让 GPU 大部分时间都处于闲置状态(1ms​​ 的工作对应 16ms 的 VSync 周期)。看起来我对 Direct2D 的调用阻塞了所有 GPU 16 毫秒,然后 GUI 线程让 CUDA 线程饿死(尽管这些线程除了 GPU 访问之外没有以任何方式同步)。

所以问题是:

  • 会发生什么?
  • 强制 Direct2D 仅在一个特定的 GPU 上执行会有所帮助吗?
  • 甚至有可能还是我以错误的方式解决问题?
0 投票
1 回答
548 浏览

c++ - CUDA 5.0 上下文管理与多 GPU 环境中的单个应用程序线程

网络上的大多数教程、指南、书籍和问答似乎都指的是 CUDA 3 和 4.x,所以这就是我专门询问 CUDA 5.0 的原因。对于这个问题...

我想为一个有两个 CUDA 设备的环境编程,但只使用一个线程,以使设计简单(特别是因为它是一个原型)。我想知道以下代码是否有效:

我想特别知道cudaMalloc(...)在测试之前的 s 是否持久,即使交换cudaSetDevice()发生在同一个线程中。另外,我想知道与上下文相关的对象是否也会发生同样的情况,例如cudaEvent_tcudaStream_t

我问它是因为我有一个这种风格的应用程序,它不断出现一些映射错误,如果缺少内存泄漏或错误的 API 使用,我找不到它是什么。

注意:在我的原始代码中,我会检查每个 CUDA 调用。我没有把它放在这里是为了代码的可读性。

0 投票
3 回答
5580 浏览

opencl - 在多个 GPU 上运行 OpenCL 内核?

现在,我编写了多个算法在一个 GPU 上并行运行,但是当我尝试在多个 GPU(例如 3 个)上执行它们时,它们都有相同的问题。问题在于,在一个 GPU 上执行的代码在 3 个 GPU 上执行的时间完全相同(不是更快)。我尝试使用更多数据执行,尝试执行不同的任务,但没有任何帮助。最后,我最终尝试运行最简单的任务,例如元素求和,但仍然犯了这个可怕的错误。这就是为什么我不认为这是特定算法的问题,并且我觉得我的代码(甚至我在多个 GPU 上并行化代码的方法)存在错误。

这是我的 Parallel.cpp 类的头文件:

这是初始化方法init:

执行内核的方法在这里:

在将这个问题发布到 stackoverflow 之前,我已经解决了这个问题 2-3 周,现在我真的需要有人的帮助,所以我将非常感谢任何想法和答案!