对大型数据集进行回归,我有一个巨大的只读矩阵,我想在多个线程之间共享。我查看了执行此操作的各种方式,发现sharedmatrix
工具包正是我所需要的。通读教程,我想出了以下设置:
Session 0
- 只需加载矩阵并使其可用Session 1..n
- 工人会议
问题是Session 0
只有在所有其他 n 个会话都完成后才能完成。你知道如何让会话等待吗?最好的解决方案是让它等到我杀死它,因为我在远程 linux 系统上运行脚本并且没有一直连接到它。
更新: 最后,在阅读了教程的这一部分之后,我改变了解决问题的方法:
“free”指令将共享内存段标记为删除。注意:在每个附加的会话显式分离或终止之前,它实际上不会被删除。一旦最后一个会话分离,系统将回收分配的段。
这意味着我创建了一个“主”会话来加载矩阵,使其可用,然后开始自己的计算,以及几个使用共享矩阵的“从”会话。即使主会话较早完成,也不会对从属会话造成任何问题,因为共享矩阵保留在内存中,直到使用它的最后一个进程终止。