问题标签 [distributed-algorithm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
parallel-processing - Julia Distributed 在添加进程时减慢到单核性能的一半
我有一个func
在单核上运行时可能花费约 50 秒的功能。现在我想在一台多次获得 192 核 CPU 的服务器上运行它。但是当我添加工作进程时说,180,每个核心的性能都会变慢。最差的 CPU 需要大约 100 秒来计算func
。
有人能帮助我吗?
这是伪代码
时间几乎从 55s 线性增加到 100s。
我通过top
命令检查了 CPU 使用率可能不是瓶颈(“id”保持 >2%)。RAM 使用率也一样(使用了约 20%)。
其他版本信息:Julia 版本 1.5.3 平台信息:操作系统:Linux (x86_64-pc-linux-gnu) CPU:Intel(R) Xeon(R) Platinum 9242 CPU @ 2.30GHz
更新:
- 替代
func
最小示例(简单的 for 循环)不会改变减速。 - 将进程数减少到 192/2 可以缓解减速
新的伪代码是
algorithm - 设计一个静默分布式泛洪算法
对于每个节点都有唯一ID的连通无向图,我想设计一个基于图的分布式算法,使每个节点都获得网络中所有节点的ID。此外,在这种算法下,每个节点都能够知道算法完成的时间,因此所有节点都可以在同一时间步初始化另一个分布式算法
让每个节点都得到所有节点的ID并不难,例如每个节点都可以实现泛洪算法。然后在D(图的直径)时间步长内,每个节点都会获得所有的 ID。这甚至可以以静默的方式完成,例如,每个节点实现泛洪算法,同时使用一个本地集,将它自己的 ID 和它的邻居的集合并集,并且一个节点将获得所有节点的 ID,一旦它的本地设置不变。
但是,上述算法并不能保证每个节点在同一时间步获得所有节点的ID(可能存在一轮差),因此不能在同一时间步初始化另一个分布式算法
有没有可以解决这个问题的分布式算法,或者有没有讨论过这个问题的论文?
非常感谢您的帮助!