[問題] MPI的相關問題

看板C_and_CPP (C/C++)作者 (翎)時間16年前 (2010/05/10 01:12), 編輯推噓4(4011)
留言15則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) 遇到的問題: (題意請描述清楚) 我的程式是用R語言去呼叫C語言,所以寫的C檔案都是副函數 而我想在C裡面加上MPI的語法,很多本書介紹的MPI幾乎都是寫在主程式上面 例如: int main ( argc, argv) int argc; char **argv; { MPI_Init(&argc, &argv); ... MPI_Finalize(); } 如果在副函數加上MPI的語法,就不太確定是如何使用 在R的某個package上有看到一種寫法是 void function() { int flag; MPI_Initialized(&flag); MPI_Init((void *)0,(void *)0); ... } 使用上述語法發現在MPI_Init((void *)0,(void *)0);這行開始出錯 *** caught segfault *** address (nil), cause 'memory not mapped' 後來我試著在副函數上改成 void function() int argc; char **argv; { int flag; MPI_Initialized(&flag); MPI_Init(&argc, &argv); ... } 發現也是在MPI_Init(&argc, &argv);這行開始出錯 xm_18813: p4_error: Command-line arguments are missing: 0 *** caught segfault *** address 0x4, cause 'memory not mapped' 麻煩板上的高手幫我解答或者有別種在副函數上呼叫MPI的例子可以使用,謝謝! 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) linux,mpicc ※ 編輯: yinling89 來自: 114.37.137.37 (05/10 01:14)

05/10 01:47, , 1F
你給MPI_Init NULL 當然會出錯啊 囧
05/10 01:47, 1F

05/10 11:01, , 2F
請問樓上的大大,如果要使用mpi在副函數要怎麼宣告才恰
05/10 11:01, 2F

05/10 11:02, , 3F
當?
05/10 11:02, 3F
※ 編輯: yinling89 來自: 140.113.114.213 (05/10 11:26)

05/10 13:37, , 4F
我不懂什麼是R語言 不過就我了解 MPI_Init 的輸入就是
05/10 13:37, 4F

05/10 13:38, , 5F
當初你執行程式所下的command ex: mpirun -np 4 aa.exe
05/10 13:38, 5F

05/10 13:38, , 6F
他必須要知道有幾個node 然後不同process之間去溝通
05/10 13:38, 6F

05/10 23:09, , 7F
你應該自己存好argc跟argv
05/10 23:09, 7F

05/10 23:12, , 8F
這個argc跟argv得從main取得
05/10 23:12, 8F

05/11 00:27, , 9F
不好意思可能是我說明有錯誤,我的程式都只有副程式,沒
05/11 00:27, 9F

05/11 00:28, , 10F
有main程式,所以不能用原本MPI呼叫的方法去執行,想問
05/11 00:28, 10F

05/11 00:29, , 11F
這樣的狀況下,MPI如何順利執行?
05/11 00:29, 11F

05/11 02:57, , 12F
沒有誤,沒有誤解 justdemon講很清楚了
05/11 02:57, 12F

05/11 03:01, , 13F
你可以嘗試寫個小函式 呼叫MPI主程式 參數用shell傳
05/11 03:01, 13F

05/11 03:05, , 14F
你就暫且分成兩個執行檔 用檔案溝通吧
05/11 03:05, 14F

05/11 19:59, , 15F
嗯嗯,那我在試試看,謝謝!!
05/11 19:59, 15F
文章代碼(AID): #1Bvkpz20 (C_and_CPP)
文章代碼(AID): #1Bvkpz20 (C_and_CPP)