深入理解计算机系统——课程作业5

深入理解计算机系统——课程作业5

简介

突然要做作业不会做,昨天学了一手,今天开始写

题一:p376家庭作业5.15

A、画关键路径

image-20210524172744364

image-20210524174834951

image-20210524175909779

B、对于float数据类型,关键路径决定的CPE下限是什么

单精度的加法运算的延迟CPE是3

C、整数数据的关键路径决定的CPE的下界是什么

整数的加法运算的延迟CPE是1

D、解释两个浮点版本的CPE为什么都是3,即使乘法需要4-5个周期

因为单精度和双精度的加法运算CPE都是3。

对于乘法运算来说,因为没有数据相关,所以它可以进行流水线式地执行,发射时间是1,不会比3更大。

题二:p376家庭作业5.16

三次循环展开的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void inner5(vec_ptr x, vec_ptr y, data_t *dest) {
long int i;
int length = vec_length(x);
data_t *xdata = get_vec_start(x);
data_t *ydata = get_vec_start(y);
data_t sum = (data_t) 0;
long int limit = length - 2;
for (深入理解计算机系统——课程作业5/i = 0; i < limit; i += 3) {
sum = sum + xdata[i] * ydata[i]
+ xdata[i + 1] * ydata[i + 1]
+ xdata[i + 2] * ydata[i + 2];
}
for (; i < length; i++) {
sum = sum + xdata[i] * ydata[i];
}
*dest = sum;
}

A、解释为什么任何版本的内积过程都不能达到比2更小的CPE

由于加载单元每个时钟周期只能启动一条加载操作。

如果每次计算时要从两个存储器位置中加载数据,就要分两次进行,所以CPE不可能小于2

B、为什么浮点数据的性能不会通过循环展开得到提高。

因为关键路径还是length个浮点加法,虽然迭代次数减半了,但是每次迭代中还是有两个顺序的加法操作。

题三:p376家庭作业5.20

实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
double poly_optimized(double a[], double x, int degree) {
long int i;
double result = a[0];
double xpwr = x;
double x2 = x * x;
double x3 = x2 * x;
double x4 = x3 * x;
double x5 = x4 * x;
double x6 = x5 * x;
int limit = degree - 5;
for (深入理解计算机系统——课程作业5/i = 1; i <= limit; i += 6) {
double result1 = a[i] + a[i + 1] * x;
double result2 = a[i + 2] * x2 + a[i + 3] * x3;
double result3 = a[i + 4] * x4 + a[i + 5] * x5;
result += (rseult1 + result2 + result3) * xpwr;
xpwr *= x6;
}
for (; i <= degree; i++) {
result += a[i] * xpwr;
xpwr *= x;
}
return result;
}

解释:

代码采用的是直接求值的方法,不是Homer法。

优化的方法有:

  1. 消除循环的低效率,limit=degree-5,不用每次都计算degree-5;
  2. 循环展开,展开六次,每次算六个a;
  3. 三路并行,临时变量存储;
  4. 关键路径决定的CPE是双精度乘法延迟的六分之一,但是因为加载操作每个周期一次,所以CPE还是1.
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021 Sung
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信