【发布时间】:2011-03-22 22:45:36
【问题描述】:
我正在使用 C 和 MPI。如果程序在同一台机器上的多个处理器上运行,如何为数组分配内存?该数组是在所有参与的任务之间共享还是每个任务都有自己的副本?
【问题讨论】:
我正在使用 C 和 MPI。如果程序在同一台机器上的多个处理器上运行,如何为数组分配内存?该数组是在所有参与的任务之间共享还是每个任务都有自己的副本?
【问题讨论】:
每个排名都有自己的数据副本。它们通常在单独的进程中运行,因此不共享虚拟地址空间。
像Adaptive MPI 和Phoenix 这样的实现在一个公共进程中的线程上放置了多个等级,但它们采取措施隔离每个等级,以便认为它作为一个单独的进程运行。
【讨论】:
MPI 是一个分布式内存框架。它只有一个有限的共享内存处理概念。如果共享内存对您的程序性能很重要,那么我建议您查看OpenMP;两者都可以组合在同一个应用程序中。 (即,理想情况下,每个节点将运行一个基于 OpenMP 的进程,该进程将通过 MPI 与其他实例进行通信。)
【讨论】: