在研究并行計算的基本算法時,有以下簡單模型問題:
用計算機求n個不同的數(shù)v
1,v
2,…,v
n的和
n |
|
i=1 |
vi=v1+v2+v3+…+vn.計算開始前,n個數(shù)存貯在n臺由網(wǎng)絡連接的計算機中,每臺機器存一個數(shù),計算開始后,在一個單位時間內,每臺機器至多到一臺其他機器中讀數(shù)據(jù),并與自己原有數(shù)據(jù)相加得到新的數(shù)據(jù),各臺機器可同時完成上述工作.為了用盡可能少的單位時間,使各臺機器都得到這n個數(shù)的和,需要設計一種讀和加的方法.比如n=2時,一個單位時間即可完成計算,方法可用下表表示:
機器號 |
初始時 |
第一單位時間 |
第二單位時間 |
第三單位時間 |
被讀機號 |
結 果 |
被讀機號 |
結 果 |
被讀機號 |
結 果 |
1 |
v1 |
2 |
v1+v2 |
|
|
|
|
2 |
v2 |
1 |
v2+v1 |
|
|
|
|
(Ⅰ)當n=4時,至少需要多少個單位時間可完成計算?把你設計的方法填入下表
機器號 |
初始時 |
第一單位時間 |
第二單位時間 |
第三單位時間 |
被讀機號 |
結 果 |
被讀機號 |
結 果 |
被讀機號 |
結 果 |
1 |
v1 |
|
|
|
|
|
|
2 |
v2 |
|
|
|
|
|
|
3 |
v3 |
|
|
|
|
|
|
4 |
v4 |
|
|
|
|
|
|
(Ⅱ)當n=128時,要使所有機器都得到
n |
|
i=1 |
vi,至少需要多少個單位時間可完成計算?(結論不要求證明)