我有一个数据科学应用的异步并行程序的想法。考虑一个拥有一个“主”和20个“奴隶”的共享存储系统。它将在主节点上有一个矩阵;奴隶会读矩阵的值,使用随机数和返回值将修改矩阵的一些元素(异步做一些操作,允许覆写,即谁来到第2可能会覆盖一些由奴隶所做的工作的奴隶谁来了第一)。模拟并行代码
我知道这可以在pthreads
做,但我不想花精力有一些原型之前编码它。
我在MATLAB写并行程序模拟器:
- 一在-A-时间和顺序,确实,从站会做的操作,并记录时间。将其存储在名为NEXT_EVENT_TIME_ARRAY的向量中。
- 添加一个人为延迟到时间 (= how_many_procs * BANDWIDTH_CONSTANT * size_of_M_in_megabytes)
- 集CURRENT_TIME = 0
现在,我们循环:
- 挑选具有最小时间作为从该“完成第一并联”的一个
- 设为CURRENT_TIME +这个(最小)时间CURRENT_TIME的值。
- 这从随后要求用更新的矩阵(返回值会发生变化,因为该过程涉及随机数)做同样的操作。
- 记录需要从站的时间来完成和更新NEXT_EVENT_TIME_ARRAY相应 元素是CURRENT_TIME +时间从花 完成计算与几个迭代M.
- 循环的新的价值!
我会选择BANDWIDTH_CONSTANT来匹配我的电脑。 这是一个合理的模型来获得一个概念证明我的算法是否可以在异步设置中工作?