Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala负载平衡与检索_Scala_Mpi_Akka_Actor - Fatal编程技术网

Scala负载平衡与检索

Scala负载平衡与检索,scala,mpi,akka,actor,Scala,Mpi,Akka,Actor,我试图在scala中实现并行dijkstra算法。我有一个大的邻接矩阵,我想把100个索引的工作分配给每个参与者 是否有任何方法可以像我们在MPI中那样将工作负载分配给不同的参与者(使用MPI_Scatter() 是否有任何方法可以像MPI(MPI_AllReduce/MPI_broadcast)那样减少/广播结果 我能想到的一个残忍的方法是将整个矩阵传递给每个参与者,但这会破坏使用参与者的目的。此外,如果我这样做,那么如果参与者位于远程位置将不是一个好主意 任何建议都会大有帮助 谢谢听起来您正

我试图在scala中实现并行dijkstra算法。我有一个大的邻接矩阵,我想把100个索引的工作分配给每个参与者

是否有任何方法可以像我们在MPI中那样将工作负载分配给不同的参与者(使用MPI_Scatter()

是否有任何方法可以像MPI(MPI_AllReduce/MPI_broadcast)那样减少/广播结果

我能想到的一个残忍的方法是将整个矩阵传递给每个参与者,但这会破坏使用参与者的目的。此外,如果我这样做,那么如果参与者位于远程位置将不是一个好主意

任何建议都会大有帮助


谢谢

听起来您正在寻找的是Akka路由:

基于广播或分散/聚集的路由器可能是您正在寻找的用于执行“蛮力”并行算法的路由器


然而,你是对的;这种“野蛮”的尝试部分地挫败了使用参与者的目的。Dijkstra的算法已经存在并行版本。快速看一眼,它看起来主要是基于分而治之的算法,其中图形被划分为子图任务,其中跨参与者通信和广播是关键。这听起来确实像是Akka为之构建的问题。

Akka路由只将消息路由到参与者。它不提供将负载分配给参与者的选项,或者可能我遗漏了一些内容。不,您是对的,路由不负责分配负载。这是som的一项实现任务eone else(如父参与者)。当有效负载被划分时,您可以将每个子有效负载发送到路由器n次。您将路由器视为单个参与者,但在它后面是m个路由参与者,它们可能会对每个子有效负载执行相同的计算(即“分而治之”或MapReduce中的映射器)。