作者yauhh (哟)
看板Programming
标题Re: [讨论] 分散式运算问题
时间Fri Nov 9 21:39:44 2012
※ 引述《mitm (mitm)》之铭言:
: http://ideone.com/NjV1iX 这是我的程式码
: 我要做:
: 一个node算1+2+...50
: 另外一个node51+52+...100
: 最後执行合并结果是5050
: 这种分散式mpi程式设计要怎麽做啊?
: 或着有没有那种最简单的范例
: 如:
: 一个node列印hello
: 另外一个node列印world
: 最後合并执行结果helloworld
: 这种最简单的mpi分割范例让我参考?
: 小弟在此受教
一开始先取得配置的运算核心,
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank); //这个是核心编号,从0开始算
MPI_Comm_size(MPI_COMM_WORLD, &size); //这个是核心总数
然後就想,四个核心怎麽分配着算从 1 加到 100?
一定是让一个核心只停着等待结果,而其他核心分配这1到100的量. 所以接下来
程式是这样:
sum = 0;
if (rank == 0) {
MPI_Recv(...);
......
} else {
for (i=rank; i<=100; i+=(size-1)) {
sum = sum + i;
}
printf("Processer #%d sums %d.\n", rank, sum); //从这一行可以看到
//核心各自的总和
MPI_Send(...);
}
然後要用MPI_Send(...)和MPI_Recv(...)让分段总和可以送到核心总部去加总,
使用这二个函数,参数要传递值和型态,还要指明来源和目标,所以要知道如何用那些
参数. 读手册吧!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.226.95.220
※ 编辑: yauhh 来自: 36.226.95.220 (11/09 21:43)