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

看板C_and_CPP (C/C++)作者 (ggggg)時間14年前 (2012/03/31 17:48), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《NEWG5 (ggggg)》之銘言: : 標題: [問題] MPI作一為陣列相加 : 時間: Mon Mar 26 23:48:01 2012 : : 開發平台(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 : 推 cywec:end = upper;改成upper-1, 不然最後一個node的array會越界 03/28 22:24 : → cywec:另外你這邊用MPI_Bcast的目的是什麼我感覺不出來 03/28 22:25 : → cywec:如果你的意思是將node0的A,B array中的資料給每一個點的話 03/28 22:26 : → cywec:應該是只有node0的A,B array需要做初始化 03/28 22:27 : → cywec:而MPI_Bcast原先的1應該為upper也就是Array的總數量 03/28 22:28 : → cywec:MPI_Reduce的概念也是一樣 03/28 22:28 謝謝 我的確是要將node0廣播到全體結點 再問個問題 假如是動態二維陣列 int x[N][N] 要怎樣廣播呢 MPI_Bcast(&x, N*N, MPI_INT, 0, MPI_COMM_WORLD); 這樣嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.71.178.35

04/01 01:13, , 1F
是的
04/01 01:13, 1F

04/06 22:54, , 2F
謝謝
04/06 22:54, 2F
文章代碼(AID): #1FTjBTNc (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1FTjBTNc (C_and_CPP)