for (i = myid + 1; i <= n; i += numprocs)
{
x = h * ((double)i - 0.5);
sum += f(x);
}
{
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)