【中国海洋大学】2009并行算法与编程期末考试并行B卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

海洋地球科学学院《并行算法与编程》课程试题(B卷) 共3页第1页
共3 页第2 页
四、请写出下列程序的执行结果(假设共启动了2个进程)(15分)#include<stdio.h>
#include<math.h>
#include<mpi.h>
#include <stdlib.h>
void main(int argc,char *argv[])
{
int myid, n, m, i, count, ext, bufsize;
const int N=128;
double outbuf[N], inbuf[N], *buf;
MPI_Status stat;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Pack_size(N,MPI_DOUBLE,MPI_COMM_WORLD,&ext);
printf("ext=%d overhead=%d\n",ext,MPI_BSEND_OVERHEAD);
bufsize=ext+MPI_BSEND_OVERHEAD;
buf=(double *)malloc(bufsize);
printf("buffersize=%d\n",bufsize);
MPI_Buffer_attach(buf,bufsize);
for (m=1; m<8; m++)
{
n=(int) pow(2,m);
if (myid == 0)
{
for(i=0; i<N; i++)
outbuf[i]=0;
MPI_Bsend(outbuf,n,MPI_DOUBLE,1,0,MPI_COMM_WORLD);
MPI_Recv(inbuf,n,MPI_DOUBLE,1,1,MPI_COMM_WORLD,&stat);
MPI_Get_count(&stat,MPI_DOUBLE,&count);
printf("Porcessor 0 received %d numbers\n",count);
}
else {
for(i=0; i<N; i++)
outbuf[i]=1;
MPI_Bsend(outbuf,n,MPI_DOUBLE,0,1,MPI_COMM_WORLD);
MPI_Recv(inbuf,n,MPI_DOUBLE,0,0,MPI_COMM_WORLD,&stat);
MPI_Get_count(&stat,MPI_DOUBLE,&count);
printf("Porcessor 1 received %d numbers\n",count);
}
}
MPI_Buffer_detach(buf,&bufsize);
free(buf);
MPI_Finalize();
}
五、请说明下列MPI函数能够实现什么功能(每小题3分,共24分)
1、MPI_WAITSOME
2、MPI_GET_VERSION
3、MPI_RECV
4、MPI_COMM_SIZE
5、MPI_GET_COUNT
6、MPI_IPROBE
7、MPI_SSEND_INIT 8、MPI_START
六、编程题(26分)
编写一个完整的MPI并行程序,求 值。

相关文档
最新文档