《高性能科学与工程计算》——1.7 习题

简介:

本节书摘来自华章计算机《高性能科学与工程计算》一书中的第1章,第1.7节,作者:(德)Georg Hager Gerhard Wellein 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.7 习题

1.1 除法的速度。写一段代码对下列函数积分:


ee2e0c98829bb94b7476be0c1c44bb2f77b5b6ac

x从0~1,结果应该是π的近似值。用一个简单的矩形积分就可以实现,即矩形宽为xi,步长Δx,高为f(xi),对面积累加:

<a href=https://yqfile.alicdn.com/11ffab67a981a59cd14a151369a5f6e148d4e87a.png" >

完成程序段,选择合适的Δx,判断结果是不是π的近似值,并计算性能,结果单位为MFlop/s。假设浮点除法不能被流水线运行,试估计延迟为多少时间周期。
1.2 数据依赖。在1.2.3节我们讨论了流水线,请看以下代码:

cf18f880067e10089a39551779cae7dde8ec23d9

s是一个非零的双精度浮点标量,ofs是一个正整数,A是一个长度为N的双精度数组。如果N足够小,能使数组A的元素在L1 cache中都能命中,对于不同的ofs,请预计循环的性能。
1.3 硬件预取。预取是一个有效利用内存接口的重要操作。x86设计的硬件预取通常一次取满整内存页数据。试说明这可能对程序性能产生的负面效应。
1.4 点积和预取。考虑双精度浮点数的点积操作:

<a href=https://yqfile.alicdn.com/25e3361b8572c5b691ce0f1ddcb946c54b36d54d.png" >

N非常大。CPU(时间周期为1ns)能在一个周期内做一次读取(或者存储),一次乘法和一次加法(假设循环计数和分支不产生时间消耗)。存储总线的传输速率为3.2GB/s。假设从存储读取一个cache行的延迟为100个CPU周期,一个cache行的长度为4个双精度浮点数。在以下情况下:
(a)如果没有指令预取,循环的性能怎样?
(b)假设CPU有预取的能力,为了使代码有效利用带宽(隐藏延迟),需要CPU能容忍预取多少条指令?
(c)如果cache行的长度变为以前的2倍、4倍,(b)中算出的数值会怎样变化?
(d)如果我们假设指令预取能隐藏所有的延迟,循环的性能怎样?
相关文章
|
7月前
|
算法 自然语言处理 双11
算法设计_综合练习_编程题
算法设计_综合练习_编程题
37 0
|
自然语言处理 算法
算法设计_综合练习_编程题(上)
算法设计_综合练习_编程题
112 0
|
算法
算法设计_综合练习_编程题(中)
算法设计_综合练习_编程题
95 0
|
算法 双11
算法设计_综合练习_编程题(下)
算法设计_综合练习_编程题
98 0
|
机器学习/深度学习 人工智能 算法
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题(1)
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题
324 0
|
机器学习/深度学习 人工智能 算法
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题(2)
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题
259 0
|
存储 算法 C++
《高性能科学与工程计算》—— 导读
当1941年构建世界上第一台全自动可编程并具备二进制浮点运算能力的计算机时[H129],Konrad Zuse成功地预见了这种革命性设备不仅只应用于科学和工程领域,还将对生活的各个方面产生深远影响[H130]。
1994 0