在研究并行计算的基本算法时,有以下简单模型问题:用计算机求
n 个不同的数
v1,
v2,
⋯,
vn 的和
∑i=1nvi=v1+v2+⋯+vn. 计算开始前,
n 个数存贮在由网络连接的
n 台计算机中,每台机器存一个数. 计算开始后,在一个单位时间内,每台机器至多到一台其他机器中读数据,并与自己原有数据相加得到新的数据,各台机器可同时完成上述工作. 为了用尽可能少的单位时间,即可完成计算,方法可用下表表示:
\begin{array}{c}
\hline
机器号 & 初始时 & \multicolumn{2}{c|}{第一单位时间} & \multicolumn{2}{c|}{第二单位时间} & \multicolumn{2}{c|}{第三单位时间} \\
\cline{3-8}
& & 被读机号 & 结果 & 被读机号 & 结果 & 被读机号 & 结果 \\
\hline
1 & $v_{1}$ & 2 & $v_{1}+v_{2}$ & & & & \\
\hline
2 & $v_{2}$ & 1 & $v_{2}+v_{1}$ & & & & \\
\hline
\end{array}
(1) 当
n=4 时,至少需要多少个单位时间可完成计算?把你设计的方法填入下表:
\begin{array}{c}
\hline
机器号 & 初始时 & \multicolumn{2}{c|}{第一单位时间} & \multicolumn{2}{c|}{第二单位时间} & \multicolumn{2}{c|}{第三单位时间} \\
\cline{3-8}
& & 被读机号 & 结果 & 被读机号 & 结果 & 被读机号 & 结果 \\
\hline
1 & $v_{1}$ & & & & & & \\
\hline
2 & $v_{2}$ & & & & & & \\
\hline
3 & $v_{3}$ & & & & & & \\
\hline
4 & $v_{4}$ & & & & & & \\
\hline
\end{array}
(2) 当
n=128 时,要使所有机器都得到
∑i=1nvi,至少需要多少个单位时间可完成计算?