【问题标题】:OpenMPI CUDA and CUDPPOpenMPI CUDA 和 CUDPP
【发布时间】:2012-04-24 10:04:32
【问题描述】:

我有 mpi 程序在集群上的多个进程之间分配大数组。

每个进程计算自己的数组元素总和并将结果返回给主机。

我想对每个进程的数组元素运行并行前缀扫描。

知道 CUDPP 是否可行。 ?

有人同时使用过 openmpi 和 cudpp 吗?

【问题讨论】:

    标签: cuda openmpi cudpp


    【解决方案1】:

    没有理由不能在同一个应用程序中结合 CUDPP 和 MPI。它们是正交的。

    您还可以考虑使用Thrust's 扫描实现,如果您使用的是 Fortran,请参阅this blog post 以获得一些指导。

    【讨论】:

    • 作为 CUDPP 的作者之一,我强烈建议您改用 Thrust。请注意,如果您想跨 MPI 等级做一个巨大的前缀总和,您还需要实现 MPI 代码来扫描每个等级的总和,然后抵消每个等级内的每个元素的结果。
    • 这是一个很好的观点,出于某种原因,我假设是 Fortran(与 CUDPP 的 ISO 绑定)。 Thrust 当然需要 C++,但如果没问题,那么它是使用高性能原语的一种非常优雅的方式。
    • @harrism:谢谢,我已添加到答案并链接到 Massimiliano 的关于从 Fortran 调用 Thrust 的博客文章。
    • 感谢您的回复。我不想使用 C++,因此我不能使用 Thrust。你能指点我CUDPP的安装教程吗?目前我正在使用 OpenMPI 1.4.5 和 CUDA 4.1 工具包。我想安装 CUDPP。此外,我当前的 mpi 代码将大数组分配给不同的进程,然后每个进程计算数组元素的总和并将结果返回给主进程。然后主进程给出最终总和。我只想使用 GPU 执行求和运算,并想使用 CUDPP 来执行此操作。有没有使用这种组合的教程?
    • 如果您查看上面链接的博客文章,您可以了解如何从您的 Fortran 代码中调用 Thrust,如果您使用 C,您可以类似地将 Thrust 包装到 C 绑定中。如果您确实想使用 CUDPP(顺便说一下,它在内部使用 Thrust 进行某些操作),请查看项目页面 (code.google.com/p/cudpp) 以获取更多信息,特别是此 wiki 页面:code.google.com/p/cudpp/wiki/BuildingCUDPPwithCMake。如果您有具体问题,请随时提出问题(比在 cmets 中更好)。
    猜你喜欢
    • 2011-05-17
    • 2021-01-24
    • 2012-07-18
    • 2016-06-21
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多