[問題] MPI作一維陣列相加

看板C_and_CPP (C/C++)作者 (ggggg)時間14年前 (2012/03/26 23:48), 編輯推噓1(105)
留言6則, 1人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) UNIX g++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) mpi.h 問題(Question): 有無更好寫法?且當我輸入參數>30000多時記憶體就會不夠 配置一個30000的陣列應該不吃啥記憶體才對說 而且伺服器記憶體有3.2G 餵入的資料(Input): 使用者輸入一個正整數 然後動態記憶體配置這個大小 然後A陣列和B陣列填入資料 C陣列為相加之和 預期的正確結果(Expected Output): 記憶體夠的情況下 程式跑出結果都對 只是不知為啥 很容易記憶體不足 錯誤結果(Wrong Output): upper>30000時會出錯 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/rLq6QnxX 第一次學mpi 這我寫來確認看看觀念對不對 不知道為啥做出來後 n明明沒多大就會記憶體不足 想知道是否哪邊寫得不好 有改進的地方 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.1.12

03/28 22:24, , 1F
end = upper;改成upper-1, 不然最後一個node的array會越界
03/28 22:24, 1F

03/28 22:25, , 2F
另外你這邊用MPI_Bcast的目的是什麼我感覺不出來
03/28 22:25, 2F

03/28 22:26, , 3F
如果你的意思是將node0的A,B array中的資料給每一個點的話
03/28 22:26, 3F

03/28 22:27, , 4F
應該是只有node0的A,B array需要做初始化
03/28 22:27, 4F

03/28 22:28, , 5F
而MPI_Bcast原先的1應該為upper也就是Array的總數量
03/28 22:28, 5F

03/28 22:28, , 6F
MPI_Reduce的概念也是一樣
03/28 22:28, 6F
文章代碼(AID): #1FS8-peG (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FS8-peG (C_and_CPP)