[問題] mpi程式數列總和

看板C_and_CPP (C/C++)作者 (羽嵐)時間15年前 (2010/11/15 16:49), 編輯推噓1(1017)
留言18則, 5人參與, 最新討論串1/1
我現在開始在寫平行程式 現在想要寫一個從1到n的連續正整數的5次方的和 n是自己輸入的數 現在問題來了 我自己先用非平行程式寫出來 可是計算出的和後面會有好幾個0 這應該是溢位吧? 我按照老師說的 幾乎整支程式都是用double宣告變數 然後我把程式寫平行程式後 計算出來的數字和雖然不會有很多個0 但是我用不同cpu數目下去跑 居然同樣的n會有不同的值出現 真是見鬼了! 希望有人可以幫我看一下 程式的問題出在哪= = (我們是遠端連線到linux下面去執行的) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.118.144

11/15 17:37, , 1F
Σk^5 = ( n^2 * (n+1) * (2n^3+4n^2+n-1) ) / 12
11/15 17:37, 1F

11/15 17:38, , 2F
偷偷用這個 XD
11/15 17:38, 2F

11/15 17:40, , 3F
printf("sum=%.0f\n",sum); 你的零是不是指小數點後的零?
11/15 17:40, 3F

11/15 17:42, , 4F
不是喔 我說的零是像這樣156464456100000.00000
11/15 17:42, 4F

11/15 17:45, , 5F
照理說 sum後面應該不可能會有那麼多連續的0才對啊
11/15 17:45, 5F

11/15 20:36, , 6F
為什麼不會?你的照理說是什麼理呢?
11/15 20:36, 6F

11/16 04:12, , 7F
你的n雖然是double,但它其實是整數對吧? 看到很多0都只是
11/16 04:12, 7F

11/16 04:13, , 8F
printf函數的格式處理而已.你可以試試一些數值比對的assert
11/16 04:13, 8F

11/16 04:23, , 9F
哦哦,我沒看清楚你的問題,抱歉.
11/16 04:23, 9F

11/16 04:28, , 10F
你的平行程式39行i+=numprocs,當然是不同CPU數目不同結果了
11/16 04:28, 10F

11/16 11:34, , 11F
我個意思是說 用不同數目的CPU下去跑會有不同的SUM
11/16 11:34, 11F

11/16 11:34, , 12F
可是解應該只有一種吧!
11/16 11:34, 12F

11/16 14:47, , 13F
真是蠻怪的,將各CPU數字印出手動加起來,跟預期的值也不一樣
11/16 14:47, 13F

11/16 14:48, , 14F
雖然總值不一樣,但跟預期值只有誤差千位以內的數,不是溢位.
11/16 14:48, 14F

11/16 14:49, , 15F
可能是mantissa部份超過的精確範圍了..
11/16 14:49, 15F

11/16 14:50, , 16F
喔對了,我輸入的n是1111,誤差都是幾百幾百而已.
11/16 14:50, 16F

11/16 18:08, , 17F
若在windows上架設並測試正常嗎?
11/16 18:08, 17F

11/16 19:25, , 18F
不清楚,我也是登入超級電腦去跑的
11/16 19:25, 18F
※ 編輯: kuro44776 來自: 111.254.119.117 (11/16 23:48)
文章代碼(AID): #1CuFGaMA (C_and_CPP)
文章代碼(AID): #1CuFGaMA (C_and_CPP)