Re: [討論] 分散式運算問題
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章