MPI +函数指针?
如果我在 MPI 配置中的 Beowulf 集群的多个节点上运行相同的二进制文件(这意味着相同的架构),通过 MPI 传递函数指针作为告诉另一个节点调用函数的方式是否安全?在什么情况下(如果有的话),同一个二进制文件中的相同函数可以在不同机器或不同实例上具有不同的虚拟地址?
If I'm running the same binary (which implies the same architecture) on multiple nodes of a Beowulf cluster in an MPI configuration, is it safe to pass function pointers via MPI as a way of telling another node to call a function? Under what circumstances, if any, can the same function in the same binary have different virtual addresses on different machines or different instances?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除了每个集合 MPI_FILE_OPEN(由 MPI 维护)的一个共享文件指针之外,将任何类型的指针传递给其他进程都是没有意义的。单独的地址空间意味着指针值在除了生成它的进程之外的任何进程中都是无用的。
另一方面,您可以传递有关您希望每个进程调用哪个函数的信息,或者让每个进程单独决定。当然,这取决于您的代码在做什么。
Passing any kind of pointers other than the one shared file pointer per collective MPI_FILE_OPEN (which MPI maintains) to other processes is meaningless. Separate address spaces mean that the pointer value is useless in any process other than the one that generated it.
On the other hand, you could pass around the information about which function you want each process to call, or make each one decide individually. That depends on what your code is doing, of course.
只需创建填充已知顺序的函数数组并传递函数的 ID。
Simply create array of functions filled with known order and pass functions's ID.