gpt4 book ai didi

c++ - 通过 MPI 发送 Lambda 闭包

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:20:56 24 4
gpt4 key购买 nike

我正在尝试使用 C++11 和 MPI 构建分布式应用程序。我想通过 MPI_send() 调用将 lambda 闭包发送到我集群上的另一台计算机。

例如,假设我有以下 lambda

auto x = [x, y] () { return x + y; };

我想定义一个函数,比如 pack() 这样我就可以调用 MPI 发送 -

MPI_Send(pack(f_xy), SOMESIZE, MPI_CHAR, 1, 0, MPI_COMM_WORLD);

有人能告诉我如何定义 pack 函数(还有接收端的 unpack 函数吗?)。我一直在网上四处寻找,但没有成功找到任何方法来做到这一点。

最佳答案

我可以想到三种方法,既不简单也不好。

首先是编译一个dll序列化后发送,在另一端写出来加载执行。这需要与您的构建系统进行交互。对于函数对象,它比 lambda 更有效。

第二个涉及使用诸如 boost phoenix 之类的东西以一种从 C++ 中可以看到解析树的方式编写伪 C++。然后通过线路发送带有绑定(bind)的解析树,并在另一端对其进行解释。

第三种是在两端附加脚本引擎,并通过线路发送脚本(同样带有绑定(bind)和绑定(bind)数据)。

没有一个是容易的,也没有一个实际上是通过网络发送 lambda。一般来说,lambda 是类型而不是数据,MPI 不支持传输类型。

关于c++ - 通过 MPI 发送 Lambda 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26387913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com