并行计算中,借助参数--myid--把多个计算任务分配给numprocs个进程

并行计算程序设计时,常面临把 一系列任务分配给 n个节点的问题。比如,在经典的计算pi值的程序中

 for (i = myid + 1; i <= n; i += numprocs)
    
{
    x 
= h * ((double)i - 0.5);
    sum 
+= f(x);
    }


myid出现在循环设计中,它的出现使得,各个进程(节点)对循环作不同的解释,比如 numprocs=3, n =15
1)node-1/proc-1对循环的解释是
for(i=1;  i<15; i +=3)
{
.....
}

它将产生如下序列:1,4,7,10,13

2)node-2/proc-2对循环的解释是
for(i=2;  i<15; i +=3)
{
.....
}

它将产生如下序列:2,5,8,11,14
3)node-1/proc-1对循环的解释是
for(i=3;  i<15; i +=3)
{
.....
}

它将产生如下序列:3,6,9,12,15

要把一个目录下的 文件分给 numprocs 个去处理,可使用下面的循环

for(i = myid; i<FileNum; i += numprocs)

posted on 2007-05-26 07:11  cy163  阅读(449)  评论(0编辑  收藏  举报

导航