精華區beta CSSE 關於我們 聯絡資訊
※ 引述《Eventis (何逸凡)》之銘言: : ※ 引述《ikjhyu (還沒想到)》之銘言: : : 若有一個程式 : : in sum=0; : : for(int i=0; i<20;i++) : : { : : sum=sum+value(sum); : : } : : int value(int)是一個子函數 : : 會回傳一個值, 然後程式會繼續累加(或叫疊代) : : 請問這樣的程式可否平行計算? : : 即每個iteration 算一個值以上? : sum(i+1) = sum(i) + value(sum(i)) : sum(i) : \ \ : \ \ : \ value(sum(i)) : \ / : \ / : sum(i+1) : \ \ : \ \ : \ value(sum(i+1)) : \ / : \ / : sum(i+2) ㄟ...看不懂 為什麼這樣每次iteration 可以算兩次sum的值? 這個問題好像如果多一點value的資訊可以用的話 不知道有沒有辦法.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.211.123
jeunder:如果不知道 value() 的性質, 考慮一般化的結果 61.230.226.190 05/31
jeunder:那就不可能辦到 61.230.226.190 05/31
jeunder:離散動態系統是很難捉摸的, 甚至會出現渾沌現象 61.230.226.190 05/31
Eventis:不是算兩個值喔XD 61.62.49.43 05/31
Eventis:我只是把dependency標出來而已^^ 61.62.49.43 05/31
Eventis:在critical path上有serial特性的話 61.62.49.43 05/31
Eventis:基本上就像樓上的前輩說的,那是不可能辦到的. 61.62.49.43 05/31
Eventis:從上面的圖就知道,把sum(i)拿掉,圖就disconnect 61.62.49.43 05/31
Eventis:因此不可能在未知sum(i)的情況計算sum(i+1) 61.62.49.43 05/31
Eventis:或者更小心地說,在計算sum(i+1)時, 61.62.49.43 05/31
Eventis:也能算出中間的結果sum(i) 61.62.49.43 05/31
Eventis:如果沒辦法把value內部拆開,圖形重建. 61.62.49.43 05/31
Eventis:那就只能在這邊Orz了XD 61.62.49.43 05/31
jeunder:樓上的才是前輩, 我只是小小小咖 61.230.226.190 05/31