我目前有一个程序,它使用一个单一的过程来加/减/乘/转置一个2D数组(矩阵)。这个程序读取两个文件,将双精度数存储到一个二维数组中,然后执行操作。
现在,我尝试将它从单个进程分离为x个进程。我想尝试让每个父代派生一个子代,每个子代打开矩阵文件,偏移到必要的行/列,执行必要的操作,然后将其返回给父代。
我是进程管理的新手,我知道这不是最有效的方法,但我想知道如何执行它,这是否是解决这个问题的正确方法。
发布于 2013-12-04 20:30:46
发布于 2013-12-04 17:58:24
这基本上是正确的。您可能希望将矩阵放在共享内存中(否则每个子节点将处理自己的副本),然后派生您的子节点。如果您绝对确定每个子级将只对矩阵中自己的部分进行操作,则可以放弃同步。所以就像这样
create/attach share memory
read matrix into shm
for(0..x)
{
fork();
if (child)
doCalcs(some matrix subset);
}
for(0..x)
wait();
这是不是比它的价值更多,这可能是只有你尝试后才能回答的问题。另一个明显的选择是线程,但也不一定会降低复杂性。
https://stackoverflow.com/questions/20381731
复制相似问题