我正在寻找一种框架/方法来用C ++进行消息传递分布式计算。
我目前有一个迭代的单线程算法,可逐步更新某些数据模型。这些更新实际上是附加的,我想在尽可能多的机器+内核上分发(或至少并行化)计算。数据模型可以被视为一个(独立的)浮点值的大数组。
由于更新都是附加的(即可交换和关联),因此可以按任意顺序合并来自其他节点的更新,甚至可以批量合并更新。在应用更新时,map / reduce范例可以正常工作。
另一方面,相对于当前模型状态,更新是计算。每个步骤都“纠正”了一些缺陷,因此用于计算更新的模型尽可能新鲜是很重要的(模型越过时,更新就越不实用)。最糟糕的情况是,更新完全依赖,并行性没有任何好处。
我从来没有实现任何灵活可分发的东西,但这看起来像是一个主要的候选人。因此,我正在寻找一些框架或方法来分发更新(主要包括浮点数和一些索引到数组中以确定添加更新的位置)。但是,我不确定如何:
总而言之,要获得良好的收敛性能,低延迟至关重要;更新计算和更新应用程序之间的时间越长,更新就越少。需要尽快将更新分发到所有节点;但由于更新的可交换性和相关性,这些更新是单独广播(可能效率低下)还是作为合并批次的一部分到达并不重要。
是否有人知道任何现有的加速开发的框架或方法?甚至只是一般指针?我从来没有做过这样的事......