我对数据科学应用程序的异步并行程序有所了解。考虑一个共享内存系统与一个"主"和20"奴隶"。它将在主节点处具有矩阵;奴隶会读取矩阵的值,使用随机数做一些操作,返回值会修改矩阵的某些元素(异步,允许覆盖;即第二个来自的奴隶可以覆盖奴隶完成的一些工作谁来了第一名)。
我知道这可以在pthreads
中完成,但在制作原型之前,我并不想花费精力进行编码。
我在MATLAB中编写了一个并行程序模拟器:
现在,我们循环:
我会选择BANDWIDTH_CONSTANT来匹配我的电脑。 这是一个合理的模型来获得概念验证我的算法是否可以在异步设置中工作?
答案 0 :(得分:0)
我不太清楚你的模拟器有什么意义,所以我不确定我指出的缺陷对你来说是一个问题,但是我看到它的方式,你的BANDWIDTH_CONSTANT
是据说代表你电脑上可用的内存带宽吧?
如果是这样,问题在于,由于此带宽是在您的计算机上同时运行的所有线程和进程之间共享的全局资源,因此“奴隶”的实际行为很可能会因为它们的不同而有所不同专用访问此资源(顺序模式),或者如果他们必须与其他从属共享(并行模式)......
评估此共享影响的一种好方法是在同一台机器上同时运行几个独立的代码序列版本,并记录此并发性与运行单个作业相比的性能影响......这种方式,你应该能够更好地将这个元素考虑到你的模型中(虽然我不确定这是你的模拟器的一个重要部分)。