《高性能科学与工程计算》——3.7 习题
本节书摘来自华章计算机《高性能科学与工程计算》一书中的第3章,第3.7节,作者:(德)Georg Hager Gerhard Wellein 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.7 习题
3.1 非连续访存。如果一个或者多个数组以不定间隔方式读写,3.1节中介绍的代码平衡值和lightspeed应如何修改?对于一个间隔为s的向量操作,可以期望什么样的性能特征?
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 不能循环展开?考虑下面的下三角矩阵向量乘代码:
能否用展开并合并技术作用于外层循环(参见3.5.2节)来减少代码平衡值?尝试编写上面代码的四路展开版本。N没有特定的假设(除了N取值为正),矩阵A下三角(包括对角线)之外的所有元素都不能访问。
3.7 应用程序优化。对于下面的代码,你建议用什么优化策略?尝试修改下面代码,使其能够达到最高性能。
https://yqfile.alicdn.com/b1c2d26bdb021f7e721220c6bfcae049bee87b12.png" >
对于N没有任何假设。然而,你可以假设这是一段会被频繁调用的子程序,s和v在不同的调用中可能会发生变化,且v的所有元素都为正值。
3.8 TLB的影响。即使最现代的处理器,也没有足够大的快表可以存储驻留在外层cache上所有内存页面的映射。为什么TLB会如此小?这难道不是一个设计中的性能瓶颈吗?使用大页有什么好处?
《高性能科学与工程计算》——3.7 习题相关推荐
- 《高性能科学与工程计算》—— 导读
前 言 当1941年构建世界上第一台全自动可编程并具备二进制浮点运算能力的计算机时[H129],Konrad Zuse成功地预见了这种革命性设备不仅只应用于科学和工程领域,还将对生活的各个方面产生深远 ...
- matlab广泛用于什么,目前,Matlab已成为世界上最受欢迎的科学和工程计算软件工具....
目前,Matlab已成为世界上最受欢迎的用于科学和工程计算的软件工具. 它是一种新型的计算机高级编程语言,具有广阔的应用前景. 有人将其称为"第四代"计算机语言. 就影响而言,仍然 ...
- AI+超算:AI赋能基于网格离散的科学与工程计算
国防科技大学计算机学院刘杰今天为大家带来的主题是:AI赋能基于网格离散的科学与工程计算,它主要分五个方面: 第一方面:研究背景 第二方面:基于AI的网格质量判别 ...
- Julia语言:让高性能科学计算人人可用
摘要:一群科学家对现有计算工具感到不满:他们想要一套开源系统,有C的快速,Ruby的动态,Python的通用,R般在统计分析上得心应手,Perl的处理字符串处理,Matlab的线性代数运算能力--易学 ...
- 控制科学对计算机能力的要求,0811控制科学与工程基本要求.pdf
. 0811 控制科学与工程 博士.硕士学位基本要求 第一部分 学科概况和发展趋势 控制科学与工程以控制论.系统论.信息论为基础,以 工程系统为主要对象,以数学方法和计算机技术为主要工 具,研究各种控 ...
- Numpy:高性能科学计算和数据分析的基础包
Numpy:高性能科学计算和数据分析的基础包 概述 基础数据类型:ndarray数组 为什么引入ndarray数组 案例1:实现a+1的计算 案例2:实现c=a+b的计算 创建ndarray数组 查看 ...
- 工程计算和数据科学中常用的9种测量距离
很多算法中,无论是自动驾驶算法还是人工智能算法,都会涉及到距离测量的内容.例如:欧氏距离或者cos相似度,在KNN.UMAP.HDBSCAN等算法中很常见. 理解这些距离测量使用的具体领域,对于我们理 ...
- 帝国理工应用计算机科学与工程理学硕士,帝国理工学院应用计算科学与工程硕士...
帝国理工学院应用计算科学和工程理科硕士将培养未来计算科学领域的专家.本课程将扩展学生对数值方法.计算科学以及如何应用新的科学和工程方法解决大规模问题的知识.适用于数学与物理科学.地球物理与工程.计算机 ...
- 如何用Python一门语言通吃高性能并发、GPU计算和深度学习
[CTO讲堂]如何用Python一门语言通吃高性能并发.GPU计算和深度学习 发表于2016-01-04 15:11| 4374次阅读| 来源CSDN| 4 条评论| 作者蒲婧 CTO俱乐部CTOCT ...
最新文章
- 发布本人汉化最后一个CommunityServer的版本,blog名称也改为 Asp.net源码交流中心...
- 即将毕业的你,做好当一个社会人的准备了吗?
- Win API记录点滴
- jq画布插件_超炫HTML 5开发的jQuery进度条插件
- GraphQL的query只返回所请求的字段的实现原理
- 前端技术之_CSS详解第五天
- hbase filter原理_HBase应用|HBase在移动广告监测产品中的应用
- scala 去除重复元素_Scala程序从列表中删除重复项
- zynq文档阅读pg144-axi-gpio之AXI GPIO IP核
- ubuntu安装配置ssmtp
- 南通市城管局推动“数字化城管”向“智慧城管”升级
- AutoJs学习-获取QQ群消息
- 青龙脚本--联通领话费流量等
- [WinError 3] 系统找不到指定的路径。: ‘./flower_data/train‘ 问题解决
- 如何用PS制作一寸照片
- DDR中bank,die,rank,channel的概念
- 怎么从 Java8 升到 Java11?
- 安静且高效一点就好3
- 千兆网络PHY芯片 RTL8211E的实践应用(自我总结篇)
- lftp和sftp区别联系