让Pycuda在使用2个GPU时与Mpi4py一起工作

3
我正在尝试在两个GPU上运行一个pycuda程序。我已经阅读了Talonmies的一篇很棒的帖子,解释了如何使用线程库来完成此操作,并提到了使用mpi4py也可以实现这一点。
当我使用pycuda运行mpi4py时,程序会出现错误: self.ctx = driver.Device(gpuid).max_context pycuda._driver.logicError: cuDeviceGet failed: not initialized
也许这是由于我尝试同时初始化两个GPU设备。有没有人有一个非常简短的例子,展示如何使用mpi4py使2个GPU正常工作?

“同时初始化两个GPU设备”是什么意思?使用mpi4py,多GPU模型非常简单:让通信器中的每个进程选择一个唯一的GPU并在该卡上建立上下文。您可以让一个进程确定每个通信器成员的GPU并广播它们,也可以从进程排名推导出GPU ID。您能贴出无法正常运行的代码吗? - talonmies
+1 - 请问有没有人能给我一些关于这个问题的建议? - jtlz2
http://maldun.lima-city.de/introduction_to_python/PyCUDA.html#mpi-and-pycuda-ref - 但是代码并没有成功... - jtlz2
1个回答

1

对于任何偶然发现这个问题的人,这里有一个可用的mpi4py+pycuda示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接