【问题标题】:Array memory allocation when using MPI使用 MPI 时的数组内存分配
【发布时间】:2011-03-22 22:45:36
【问题描述】:

我正在使用 C 和 MPI。如果程序在同一台机器上的多个处理器上运行,如何为数组分配内存?该数组是在所有参与的任务之间共享还是每个任务都有自己的副本?

【问题讨论】:

    标签: c mpi


    【解决方案1】:

    每个排名都有自己的数据副本。它们通常在单独的进程中运行,因此不共享虚拟地址空间。

    Adaptive MPIPhoenix 这样的实现在一个公共进程中的线程上放置了多个等级,但它们采取措施隔离每个等级,以便认为它作为一个单独的进程运行。

    【讨论】:

    • 非常感谢您的及时回复!
    【解决方案2】:

    MPI 是一个分布式内存框架。它只有一个有限的共享内存处理概念。如果共享内存对您的程序性能很重要,那么我建议您查看OpenMP;两者都可以组合在同一个应用程序中。 (即,理想情况下,每个节点将运行一个基于 OpenMP 的进程,该进程将通过 MPI 与其他实例进行通信。)

    【讨论】:

    • 不幸的是,我必须坚持使用 MPI 才能做到这一点。无论如何感谢您的回答
    • @kranberg:只是好奇,但这是为什么呢?
    • 因为我正在学习使用 MPI,所以我无法使用 OpenMP。而且我没有可以用来练习的分布式机器,所以我使用的是笔记本电脑。
    • 我怀疑 :) 好吧,记住 OpenMP,它总有一天会派上用场的。
    猜你喜欢
    • 2012-02-01
    • 2015-06-09
    • 2018-09-26
    • 2014-10-27
    • 2015-03-09
    • 1970-01-01
    • 2012-11-12
    • 2019-12-27
    • 2012-03-23
    相关资源
    最近更新 更多