作者ikjhyu (還沒想到)
看板CSSE
標題Re: accmulation
時間Tue May 31 05:24:21 2005
※ 引述《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
1F:推 jeunder:如果不知道 value() 的性質, 考慮一般化的結果 61.230.226.190 05/31
2F:→ jeunder:那就不可能辦到 61.230.226.190 05/31
3F:→ jeunder:離散動態系統是很難捉摸的, 甚至會出現渾沌現象 61.230.226.190 05/31
4F:推 Eventis:不是算兩個值喔XD 61.62.49.43 05/31
5F:→ Eventis:我只是把dependency標出來而已^^ 61.62.49.43 05/31
6F:→ Eventis:在critical path上有serial特性的話 61.62.49.43 05/31
7F:→ Eventis:基本上就像樓上的前輩說的,那是不可能辦到的. 61.62.49.43 05/31
8F:→ Eventis:從上面的圖就知道,把sum(i)拿掉,圖就disconnect 61.62.49.43 05/31
9F:→ Eventis:因此不可能在未知sum(i)的情況計算sum(i+1) 61.62.49.43 05/31
10F:→ Eventis:或者更小心地說,在計算sum(i+1)時, 61.62.49.43 05/31
11F:→ Eventis:也能算出中間的結果sum(i) 61.62.49.43 05/31
12F:→ Eventis:如果沒辦法把value內部拆開,圖形重建. 61.62.49.43 05/31
13F:→ Eventis:那就只能在這邊Orz了XD 61.62.49.43 05/31
14F:推 jeunder:樓上的才是前輩, 我只是小小小咖 61.230.226.190 05/31