設萬維讀者為首頁 廣告服務 聯繫我們 關於萬維
簡體 繁體 手機版
分類廣告
版主:
萬維讀者網 > 靈機一動 > 帖子
並行處理計算根號2問題解答(修改版)
送交者: 粱遠聲 2010年10月23日17:47:55 於 [靈機一動] 發送悄悄話
並行處理計算根號2問題解答(修改版)

假設你有N台機器. 如何能最快地計算出根2 的小數部分. 假設每台機
器可以執行M條指令每秒 (64位機器), 請估計一下, 如果要計算出sqr2小數
點後面T位的時間.

解:

現在假設N>11,每台機器計算一次乘法的時間為 d,加減法時間 d/4,
機器的通訊時間忽略。機器編號從0排到N。

用N-1進制計算小數點後面T位

(N-1)^p = 10^T

P = T/lg(N-1)

也就是說,N-1進制計算小數點後P位等於10進制計算小數點後T位

機器N早已算出根的第一位,我們就把它叫作“商”,也算出“餘數”。
算出 c = (N-1)*(N-1)
機器N把商送給其它機器。

其它機器 k 做如下操作:

x = (2*(N-1)*商 + k)*k,
耗時 2d + d/4
接受機器N傳來的餘數
商 = 商*(N-1) + k
耗時3d + d/2( 常數 2*(N-1),(N-1) 早已存在 機器 k 中)
餘數 = 餘數-x,
耗時3d + 3d/4
如果餘數大於等於0,向機器k-1發送一個“比你好”的信息

餘數大於等於0且沒有接到“比我好”的信息的機器把 商 和 餘數
送給機器N。

其它機器 N 做如下操作:

機器N把某個機器k送來的商 和 餘數作為新 商 和 餘數。
把商傳給機器 k
餘數 = 餘數*c
耗時d
把餘數傳給機器 k

下一位的計算是類似的。循環P次後,總時間是

3.75dT/lg(N-1)
0%(0)
0%(0)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制
一周點擊熱帖 更多>>
一周回復熱帖
歷史上的今天:回復熱帖
2009: 華爾街的數學(9)四兩撥千斤
2006: 也來個數字題
2006: 圓問題:OA不一定等於OB