【发布时间】:2012-07-08 15:21:30
【问题描述】:
我需要编写一个应用程序,对字典中的单词进行哈希处理以制作 WPA 预共享密钥。这是我的“网络安全”课程的论文。应用程序需要并行以提高性能。我在 IT 研究中对 MPI 有一些经验,但我想将它与 CUDA 联系起来。这个想法是使用 MPI 将负载均匀地分配到集群的节点,然后利用 CUDA 在节点的 GPU 内并行运行各个块。
使用 MPI 分配负载是我可以轻松做到的事情,而且我过去也做过。我也可以学习使用 CUDA 进行计算。还有一个项目(pyrit)或多或少做了我需要做的事情(实际上更多),我可以从那里得到想法。
我想要一些关于如何在 MPI 和 CUDA 之间建立连接的建议。如果有人建造了这样的东西,我将非常感谢他的建议和建议。另外,如果您碰巧知道有关该主题的任何资源,请务必将它们指向我。
很抱歉介绍很长,但我认为有必要提供一些背景信息。
【问题讨论】:
-
您可能对mvapich.cse.ohio-state.edu 感兴趣,它将 GPU 计算集成到 MPI 模型中。还有其他类似的努力正在进行中,不确定它们中的任何一个进展到什么程度。
-
大多数当前的 MPI 实现都支持对 GPU 内存的透明操作——您只需直接提供一个指向
MPI_*的设备指针,剩下的就交给库了。如果您在 InfiniBand 或其他 RDMA 互连上运行,它还可以为您节省一些内存复制时间,因为 RDMA 操作原则上可以在设备内存上完成。在使用固定内存时,您还应该注意一些pecularities。 -
首先,MPI 和 CUDA 之间没有连接;它们是正交的。您在使用 MPI 的节点之间进行通信,并在使用 CUDA 的节点上进行计算。其次,正如@HristoIliev 和 HP Mark 指出的那样,如果您有足够新的网卡、足够新的 CUDA 设备和足够新的 MPI 库,您可以通过让 MPI 直接将数据发送/接收到/来模糊界限。来自 GPU 内存,而不是通过 CPU 和主机内存,但这只是延迟优化,您在其他一切工作后实施。
标签: parallel-processing cuda mpi