1
Code | min | max | incre | square |
---|---|---|---|---|
A | 1 | 9 | 8 | 8 |
B | 0 | 1 | 5 | 5 |
C | 1 | 3 | 2 | 2 |
分析:
- A: 循环8次,最后会进1次while判断,max会多调用一次
- B: 循环5次,i 的值最后减到 -1
- C: 循环2次,进入判断,max多调用1次。第一次循环后,i = 3; 第二次循环后,i = 13。
2
3
/*compute prefix sum of vector a*/
void prefixSum(float a[], float p[], long int n){
long int i;
float sum = 0;
for(i = 0; i < n; i++){
sum += a[i];
p[i] = sum;
}
}
4
result += a[i] * xpwr;
xpwr = x * xpwr;
因为浮点数乘法的容量是2(5.12表格),所以这两行程序中的两个浮点数乘法运算可以并行。
同时,流水线上可以将a[i] * xpwr
转移,让加法可以在下一次的迭代时执行。
于是,加法和乘法可以并行。
所以函数的CPE是5。