如何写出运行速度更快的代码:硬件篇

介绍

这门课会学到OpenMP、CUDA、Hadoop的使用,想想真是激动,一门课要学这么多东西。

为什么需要更高效的代码

我们使用高效代码,一般需要两部分进行考虑:平台+技巧。平台就有多核平台、多处理器平台、云平台。技术需要考虑数据结构、算法、软件架构。这些都会在后续章节谈到,这一次主要说的是硬件平台的内容。
这里写图片描述

这里写图片描述

是应用驱动了这一需求,而不是平台决定了你需要写更高效的代码。因为目前火热的RMS(Recognition Mining Synthesis)需要大量的计算,那么高效的代码使得这些应用可以更快实现,甚至达到可以与人类进行交互的地步。

对于RMS这里需要介绍一下:识别就是对世界的翻译,比如视觉上的目标检测、声音上的语音识别。就是要知道这是一个什么东西。对目标进行建模。挖掘就是对这个东西隐藏的模式进行挖掘,找到其中的内在联系。就是分析模型的特性。分析就是对世界进行一些预测,使用模型进行预测。比如买股票、买期货。
这里写图片描述

在有了以上运用之后呢,我们就有了特定的平台做加速。但是呢我们如何评估一个系统的性能呢?系统状态和性能很难评估,所以有个叫做Norman的人提出了Gulf of evaluation 他把计算机的系统评估和人的感知评估模型相结合起来,获取计算机系统的状态、并对这个进行解释。
这里写图片描述

现在又回到刚才说的RMS,RMS是未来的趋势。那么RMS最重要的是什么呢?
这里写图片描述
那就是数据,数据非常重要。比如目前火热的深度学习,就是在大数据和高速平台的驱动下,使得很多算法得以真正发挥它的效果。

总结一下这部分RMS的东西就是:RMS驱动着未来的运用。
这里写图片描述

加速的意义

这里写图片描述
使得很多应用的交互性增强,效率提高。

平台相关:
这里写图片描述

技术相关:
这里写图片描述

硬件平台

当你可以回答以下问题的话,说明你对硬件平台还是知道不少的。

这里写图片描述

multicore vs manycore

这里写图片描述
multicore是每个核都可以独当一面,能力十分强。manycore是数量很多,但是每个处理器的能力十分有限。

multicore和manycore有相似点和不同点。它们都在优化同样的东西,但是优化的方向不同。都是发挥着自己的架构的优势。multicore更多的是在核内进行加速,manycore是数量更多的核进行加速。
这里写图片描述

两者进行对比:
这里写图片描述

Instruction level parallelism

先是super scalar,然后是out-of-order。
这里写图片描述
super scalar是获取一个batch的指令,然后尽量减少其中的相关。在执行阶段,多条指令可以一起执行。这是在执行阶段,资源增加,使得一个周期可以执行多条指令。

这里写图片描述
out-of-order是增加了一个减少指令间的依赖关系的东西。依赖关系越少,在执行并行指令的时候就可以提高资源利用率。

ILP没有改变指令的顺序流,在软件层面不需要什么修改就对代码加速。但是在处理器层面就需要做很多修改。功耗大于一般的顺序处理器。

SIMD

SIMD: single instruction multiple data.
这里写图片描述
之前的整数是32,64位。那么我们设计更长位的加法,比如128位,那么不就可以对4个32bit的数据进行加法。

这里写图片描述
从上图可以发现CPU时间很大一部分是在寄存器的读写上,所以使用SIMD就可以对这块进行加速。

x86系列的SIMD的发展:
这里写图片描述

使用SMID可以跑的指令越多是不是就越有效(功耗、吞吐量的一个均衡)呢?功耗会上升、资源利用率下降。
这里写图片描述

为了提高资源利用率,那么可以优化编译器发挥它的作用。
这里写图片描述

SIMD增加了资源利用率,但是在使用的时候需要在软件层面手动做不少优化。

Simultaneous Multithreading

当我们有多个指令流的时候,我们可以使用这种方法做加速。它比superscalar、mutlprocessing更有效地解决问题。
这里写图片描述

这种多线程的方法可以提高资源利用率,但是没有加快每个线程的延时,需要在多个指令流的时候才可使用、在使用cache的时候会涉及数据同步的问题。

Memory Hierarchy

减少cache miss可以加快速度,这里的原则使用的是局部性原则。空间和时间局部性。
这里写图片描述

cache miss的类型:
这里写图片描述

使用memory hierarchy进行优化的时候,只是在多线程情况下,cache同步是一个很大的问题。

System Architecture

这里就是涉及我们应该采用哪一种平台,这里要考虑很多因素了。
这里写图片描述

这里写图片描述

整个设计需要综合考虑平台、算法、软件架构、成本。
这里写图片描述

PS:以上ppt截图来自于JikeChong和Ian Lane的CMU 18-645课程。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值