gpt4 book ai didi

python - PyCUDA;如何动态地将工作负载分配到多个设备

转载 作者:太空宇宙 更新时间:2023-11-03 19:31:13 29 4
gpt4 key购买 nike

PyCUDA,尽管有其所有缺点,通常都会提供非常好的示例/可从 wiki 下载。但我在示例或文档(或粗略的谷歌搜索)中找不到任何内容来演示 PyCUDA 将工作负载动态分配到多个设备的方法。

有人可以暗示我应该做什么或者给我举一些例子吗?

我脑海中浮现的一个想法是使用多处理,生成一个由 N 个进程组成的池,每个进程都绑定(bind)到一个设备,然后在调用该类时(我将所有 GPU 函数放在一个单独的类中;可能不是最好的)想法但它有效)它是循环的多进程。这是一个多好的/弱智的想法?

PS 我的开发机器是 1 个 GPU,我的测试机器是 4 个 GPU,所以我需要任何解决方案来处理动态数量的设备(它们的计算能力不同也没有帮助,但是这就是生活)

最佳答案

Pycuda 没有任何内在的多 GPU 支持,因为 CUDA 也没有任何内在的多 GPU 支持。这将在 CUDA 4.0 中发生变化,因为 API 已更改为线程安全且支持多 GPU。但据我所知,Pycuda 还没有这种支持。即使它出现了,每个设备也必须被明确管理,并且工作负载由您分配。没有自动工作负载分配或类似的东西。

对于多GPU,我通常使用mpi4py。您可以使用多线程 python 方案,每个线程在 Pycuda 中打开一个单独的上下文。什么最有效可能取决于设备之间需要多少通信。

关于python - PyCUDA;如何动态地将工作负载分配到多个设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810401/

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