gpt4 book ai didi

linux - 为多个 GPU 编写 CUDA 程序

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:45 25 4
gpt4 key购买 nike

我有多个 GPU,并且想在它们上执行我的内核。是否有可以动态调度/管理GPU资源的API或软件?为程序利用所有可用 GPU 的资源。一个可以定期报告可用资源的实用程序,我的程序将向 GPU 启动尽可能多的线程。

其次,我使用 Windows+ Visual Studio 进行开发。我读到 Linux 上支持 CUDA。我的程序需要进行哪些更改?

最佳答案

I have more than GPUs and want to execute my kernels on them. Is there an API or software that can schedule/manage GPU resources dynamically.

对于您编写的任意内核,据我所知,没有任何 API(当然没有 CUDA API)可以“自动”使用多个 GPU。当今的多 GPU 感知程序通常使用如下策略:

  1. 检测可用的 GPU 数量
  2. 根据可用 GPU 的数量将数据集划分为多个 block
  3. 依次将 block 传输到每个 GPU,并在每个 GPU 上启动计算内核,使用 cudaSetDevice() 切换 GPU。

遵循上述方法的程序大约是 cuda simpleMultiGPU sample code 。一旦您弄清楚了 2 个 GPU 的方法,那么转向 4 或 8 个 GPU 就不需要太多额外的努力。当然,这假设您的工作已经是可分离的,并且数据/算法分区工作已“完成”。

我认为这是许多地方都在积极研究的领域,因此如果您进行谷歌搜索,您可能会找到类似 this one 的论文。或this one 。您是否对这些感兴趣可能取决于您的具体需求。

CUDA 6 中的 CUDA 库有一些新的发展,可以使用多个 GPU“自动”执行某些特定操作(例如 BLAS、FFT)。要进一步调查此问题,请查看相关的 CUBLAS XT documentationCUFFT XT multi-GPU documentationsample code 。据我所知,目前这些操作仅限于 2 个 GPU 进行自动工作分配。这些允许自动分配特定工作负载(BLAS、FFT)而不是任意内核。

Secondly, I am using Windows+ Visual Studio for my development. I have read that CUDA is supported on Linux. what changes do I need to do in my program?

除了OGL/DX interop APIs CUDA 主要与 Windows 或 Linux 作为平台的选择正交。典型的 IDE 是不同的(Windows: nsight Visual Studio edition ,Linux: nsight eclipse edition ),但您的代码更改将主要由 Windows 和 Linux 之间的普通移植差异组成。如果你想开始使用linux,请按照 getting started document .

关于linux - 为多个 GPU 编写 CUDA 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23735996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com