将指针表示为字符串,反之亦然

时间:2012-03-16 14:10:32

标签: c pointers mpi

我正在尝试使用MPI编写一个程序,我有一个问题可以帮助我很多。在MPI中是否可以以任何方式向另一个进程发送指针?我想要的只是发送指针,而不是将内存从一个进程复制到另一个进程。

如果不适用,可以将指针表示为字符串,然后发送它,以便接收进程可以再次将其转换为指针并可以访问指向的内存吗?

提前致谢。

1 个答案:

答案 0 :(得分:7)

简短回答:不,你做不到。

解释是MPI进程无法保证以任何方式共享内存。实际上,大多数MPI实现将MPI进程映射到实际的OS进程,因此它们不共享相同的内存地址空间。另外,您可能希望在群集上运行MPI应用程序,在这种情况下,MPI进程甚至不在同一硬件上。

修改

MPI2引入了窗口操作(参见例如MPI_WIN_CREATE),它模仿共享内存访问。您的实现可能会决定如果所有进程都在同一节点上运行,则可以使用共享内存来实现此类窗口操作。但与MPI一样,您永远无法保证如何实施操作