并行计算程序设计时,常面临把 一系列任务分配给 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)






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)