我使用的是C和MPI。如果程序在同一台机器上的多个处理器上运行,那么如何为数组分配内存?该数组是在所有参与任务之间共享,还是每个任务都有自己的副本?
发布于 2011-03-22 22:40:55
每个等级都有自己的数据副本。它们通常在单独的进程中运行,因此不共享虚拟地址空间。
像Adaptive MPI和Phoenix这样的实现在一个公共进程中为线程设置了多个等级,但它们采取步骤隔离每个等级,以便认为它是作为一个单独的进程运行的。
发布于 2011-03-22 22:45:37
MPI是一种分布式内存框架。它只有有限的共享内存处理概念。如果共享内存对程序的性能很重要,那么我建议您研究一下OpenMP;两者可以在同一个应用程序中结合使用。(即,理想情况下,每个节点将运行一个基于OpenMP的进程,该进程将通过MPI与其他实例通信。)
https://stackoverflow.com/questions/5392883
复制相似问题