并行计算中,借助参数--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)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
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)