各位大大能否幫忙小弟...........
就是我想要把一組資料,切割成四份一一平行化去給不同的電腦做處理,
求出我要的average、max、min。
指的是例如四台電腦在做平行處理,其中一台是master,其他三台是
slave,那我把資料切割成四份分給這四台電腦去做,而這四台電腦
分別找出自己所做的部分的average、max、min,然後傳回給master,
做最後的average、max、min,並呈現出來。
還有另一個問題是要怎樣讀text檔阿??.........會的大大交一下小弟.........
小弟不才................
PS:這兩個問題都是要用C++做的,會的大大提示一下小弟................感謝~~
2006-11-10 12:24:45 · 1 個解答 · 發問者 ? 2 in 電腦與網際網路 ➔ 程式設計
MPI 的做法大致如下:(做法很多,這只是比較好說明的一種,並不是最好的一種)1. 你要會用 malloc();2. MPI_Status status; 取得 process 的編號,id 取得 process 的數量,#(id) 取得 nData; // 資料總數,如 A[n]的n, 不用 * sizeof(*A) 取得 lData = nData / #(id); // Local Data 陣列指標 = malloc(lData * sizeof(*A)); if (!id) // master process { 陣列指標0 = malloc(lData * sizeof(*A)); // 讀資料用 for (j=0; j<#(id); j++) { 讀入 lData 那麼多的資料; if (j) MPI_Send(陣列指標0, lData, MPI_資料型態, j, 1, MPI_COMM_WORLD); else memcpy(陣列指標0, 陣列指標, lData * sizeof(*A)); } free(陣列指標0); } else MPI_Recv(陣列指標, lData, MPI_資料型態, 0, 1, MPI_COMM_WORLD, &status); for (i=0; i
2006-11-11 01:17:13 補充:
fin >> 讀入的變數; // 通常是變數
那列打錯了!
fin >> 讀入的變數; // 通常是陣列
2006-11-10 20:16:15 · answer #1 · answered by ? 7 · 0⤊ 0⤋