在Matlab中共享内存和等待会话

时间:2013-05-21 13:51:40

标签: matlab unix parallel-processing shared-memory wait

对大型数据集进行回归,我有一个巨大的只读矩阵,我想在几个线程之间共享。我已经研究了各种方法,发现sharedmatrix工具包正是我需要的。通过tutorial阅读,我想出了以下设置:

  • Session 0 - 只需加载矩阵并使其可用
  • Session 1..n - 工人会议

问题是Session 0必须在所有其他n个会话结束后才能完成。你知道如何让会话等待吗?最好的解决方案是让它等到我杀了它,因为我在远程linux系统上运行脚本并且一直没有连接它。

更新 最后,在阅读本教程的这一部分之后,我已经改变了我对问题的处理方法:

  

“free”指令标记要删除的共享内存段。   注意:直到每个连接的会话才会实际删除它   明确分离或终止。最后一次会议   分离,系统将回收分配的段。

这意味着我创建了一个“主”会话,它加载矩阵,使其可用,然后开始自己的计算,以及几个使用共享矩阵的“从”会话。即使主会话提前完成,它也不会对从会话产生任何问题,因为共享矩阵保留在内存中,直到最后一个使用它的进程终止。

1 个答案:

答案 0 :(得分:1)

如果您真的希望无限期等待,请使用基于pause的Eitan解决方案。更一般地说,labBarrier之类的东西是你应该用来执行这种同步的东西。