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

简介:

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

3.7 习题

3.1 非连续访存。如果一个或者多个数组以不定间隔方式读写,3.1节中介绍的代码平衡值和lightspeed应如何修改?对于一个间隔为s的向量操作,可以期望什么样的性能特征?


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

3.2 平衡值的乐趣。计算下面循环内核的代码平衡值,假定所有数组都需要从内存中加载,并且忽略访存延迟的影响(超过计数变量i和j的循环行为是默认的)。
(a) Y(j) = Y(j) + A(i,j) * B(i) (矩阵向量乘)
(b) s = s + A(i) * A(i) (向量范数)
(c) s = s + A(i) * B(i) (标量乘)
(d) s = s + A(i) * B(K(i)) (带间接访问的标量乘)
除数组K存储4字节的整型数外,所有数组都是双精度浮点类型。s是一个双精度标量。根据理论峰值带宽和STREAM实测带宽(MFlop/s),计算这些内核在Xeon 5160处理器单核和1.6节描述的原型向量处理器上的期望性能。Xeon CPU的cache行长度为64个字节。可以假设N足够大从而使数组不能全部加在到cache中。对于(d),请给出在Xeon处理器上最好和最坏的情形。
3.3 性能预测。未来主流微处理器架构的SIMD能力将会得到极大增强。其中一个可能的特征是x86处理器将能够在长度为256位(而不是128位)的寄存器上执行乘法和加法指令,也就是说可同时执行4个双精度浮点数的运算。这将会有效提高峰性能至两倍,如果L1 cache带宽也提高两倍,那么每个时钟周期执行的操作数将从4次提高到8次。假定其他参数如内存带宽和时钟性能保持不变,那么与当前英特尔“Core i7”(有效基于STREAM的机器平衡值为0.12W/F)单核性能相比,评估可以得到的性能提升。假定一个完美的SIMD向量应用程序,其60%的计算时间代码平衡值为0.04 W/F,40%的计算时间代码平衡值为0.5 W/F。如果厂商选择大力提升CPU的SIMD能力,例如,引进更长长度的向量。在这种情况下,什么会成为限制性能的绝对因素。
3.4 优化三维Jacobi算法。概括3.3节介绍的二维Jacobi算法,并考虑三维算法。变换内存循环的长度,你会期望性能特征的哪些改变(图3-6)?参考3.4节介绍的稠密矩阵转置算法的优化,你能否得出消除性能下降的方法?
3.5 重新审视内存循环展开。到目前为止,我们遇到内存循环展开的可能性仅存在于软件流水和SIMD优化中(参见第2章)。内存循环展开在很多情况下是否也能够改进代码平衡值?通过内层循环展开提升Jacobi算子性能需要考虑哪些方面?
3.6 不能循环展开?考虑下面的下三角矩阵向量乘代码:

9309c6e8707c6973860615bbda51bc837056c01c

能否用展开并合并技术作用于外层循环(参见3.5.2节)来减少代码平衡值?尝试编写上面代码的四路展开版本。N没有特定的假设(除了N取值为正),矩阵A下三角(包括对角线)之外的所有元素都不能访问。
3.7 应用程序优化。对于下面的代码,你建议用什么优化策略?尝试修改下面代码,使其能够达到最高性能。

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

对于N没有任何假设。然而,你可以假设这是一段会被频繁调用的子程序,s和v在不同的调用中可能会发生变化,且v的所有元素都为正值。
3.8 TLB的影响。即使最现代的处理器,也没有足够大的快表可以存储驻留在外层cache上所有内存页面的映射。为什么TLB会如此小?这难道不是一个设计中的性能瓶颈吗?使用大页有什么好处?
相关文章
|
8月前
|
程序员 Python
利用Python实现科学式占卜
一直以来,中式占卜都是基于算命先生手工实现,程序繁琐(往往需要沐浴、计算天时、静心等等流程)。准备工作复杂(通常需要铜钱等道具),计算方法复杂,需要纯手工计算二进制并转换为最终的卦象,为了解决这个问题,笔者基于python实现了一套科学算命工具,用于快速进行占卜。 本文的算命方式采用八卦 + 周易+ 梅花易数实现,脚本基于python3.9.0开发。本人对于周易五行研究较浅,如有疏漏请见谅。 最终效果如图,在运行程序之后,会根据当前的运势自动获取你心中所想之事的卦象(本卦、互卦、变卦) 前置知识 基础原理 首先我们需要了解一些最基本的占卜知识,目前我国几种比较主流的占卜方式基本都是基
107 0
|
机器学习/深度学习 人工智能 算法
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题(1)
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题
334 0
|
机器学习/深度学习 人工智能 算法
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题(2)
鄂维南:从数学角度,理解机器学习的“黑魔法”,并应用于更广泛的科学问题
265 0
|
机器学习/深度学习 人工智能 算法
关于机器学习这门炼丹术,理论基础到底有多可靠?
关于机器学习这门炼丹术,理论基础到底有多可靠?
|
机器学习/深度学习 Python
机器学习数学基础篇一:高数基础
在自变量的某个变化过程中,函数f(x)有极限A的充要条件是f(x)=A+a,其中a是同一变化过程中的无穷小。
199 0
机器学习数学基础篇一:高数基础
|
存储 算法 C++
《高性能科学与工程计算》—— 导读
当1941年构建世界上第一台全自动可编程并具备二进制浮点运算能力的计算机时[H129],Konrad Zuse成功地预见了这种革命性设备不仅只应用于科学和工程领域,还将对生活的各个方面产生深远影响[H130]。
1996 0

热门文章

最新文章