相对论:浅析可重构计算立足点

news/2024/11/16 0:05:33/文章来源:https://www.cnblogs.com/devil-sx/p/18411963

“FPGA vs ASIC,孰强孰弱?” 这是在我心中埋藏很久的一个疑问。因为听到有言论说在 DNN 上,FPGA 被 ASIC 完爆,能耗和面积都不占优势;而又听到 FPGA 在其他比如量化领域仍有重要的应用空间。我好奇究竟什么情况下 FPGA 会更有优势呢?FPGA 相比 ASIC 的区别无非便是可重构能力,没有数据无法结合具体场景自顶向底推,便从底出发整理可重构计算的特点。

时空域的划分

《可重构计算》[1] 中对可重构计算定义如下:

img

时空域并行计算 这个名词总结很 high-level 描述非常符合硬件思维,毕竟处理是数据沿着时间流过空间,处理器就是能执行处理的硬件,在之前blog中也提到 pipeline 是一种时域并行技术[2]。但具体如何严谨定义时域空域呢?查询文献无果,我尝试结合自己理解对其重定义。

结合上图,我们可以看到时空域的划分和时域硬件高度相关。也就是说我要先定义一个时域处理器,然后才能对计算划分时空域,这是一个相对的概念。比如图中传统处理器是时域计算,对于 \(y=A\times x\times x+B\times x+C\) 这个计算,划分成 5 条指令,在时间上用 5 个周期执行。那么这里计算的最小粒度就是如(a)的指令,(b)可以同时执行多个最低粒度计算,那么便是空域计算。假设问题1我计算2次,那么(b)处理器也需要俩个周期,此时若把问题1的粒度设置为最低粒度,那么(b)也成了时域计算了。

所以:时空域是相对的概念,由指定的一个时域处理器所定义。该时域处理器每时刻处理的计算粒度便是时域计算的粒度, 再换言之,定义时空域一定需要一个 baseline。

“横看成岭侧成峰,远近高低各不同。”

不同计算分类

定义时空域后,还有一个概念没有解释清楚,什么是并行?并行脑海中直观想多多个处理器同时处理的画面,从一个变多个(一定要有 baseline),这是很直观的空域并行。但又提到 pipeline 是一种时域并行技术,这又怎么理解呢?

接下来考虑三种情况

  • 单线程 CPU -> 多线程 CPU / GPU
  • 非流水线硬件 -> 流水线硬件
  • 非可重构计算硬件 -> 可重构计算硬件

第一个情形好理解,但注意这并不是一个无脑叠规格的情形,变换前后的面积开销可以保持不变 [3]而增加处理器数量。第二个的 baseline 应当是该有的硬件还存在,比如经典的五级流水线该有的功能都在,但不是 pipeline 执行,同一时刻只有一级单元激活。情形三中存在俩种不同的算力需求算力A和算力B,非可重构硬件中存在一个硬件A和一个硬件B来分别处理,而可重构硬件后只有一个硬件 C ,通过重构执行算力计算 A 和 B,即上图中(b)到(c)中的变化。

我们把情形1,2变换前的 baseline 定义为时域处理器,情形3中 AB 的计算粒度定义为时域粒度(为何这么定义后面解释),那么三种计算范式变换如下:

  • 单线程 CPU -> 多线程 CPU / GPU (时域 -> 空域)
  • 非流水线硬件 -> 流水线硬件 (时域 -> 空域)
  • 非可重构计算硬件(1个A一个B) -> 可重构计算硬件(一个C) (时域/空域 -> 时域)

因为选择的 baseline 不一样,此时的可重构计算定义从时空域变成了时域计算。

为什么非可重构计算硬件是时域 或 空域呢,这和具体的数据相关关系有关。因为我们是以A或B的粒度定义为时域最小粒度,假如 A 和 B 相关,B 必须等 A 执行完,那么可以想象在非重构计算硬件上硬件A和硬件B的调度时间不重叠,是时域处理器;假如二者可以同时执行,那么该硬件便成了空域处理器了。而可重构硬件由于只有一个硬件 C,必须时间上隔开分别执行 A、B 计算,是时域处理器。

进一步分析,如果原本非可重构硬件是时域计算,变为可重构计算后,面积减少,性能不变;而若非可重构计算是空域计算,变为可重构计算后,面积减少,性能减少。再进一步考虑 scale-up,如果将可重构硬件扩展到俩个C,那么对于前者是面积不变,性能增加;后者是面积不变,性能不变。以上情形假设重构成本为0,进一步修正则要将其考虑进来重新评估。

  • 非可重构计算硬件(一个A一个B) -> 可重构计算硬件(俩个C,但同时配置成俩个A或俩个B)
    • 时域 -> 时空域:面积不变,性能增加
    • 空域 -> 空域:面积不变,性能不变(考虑重构时空成本,则是面积增加,性能减少)

以上分析可见,可重构计算只当原本硬件 utilization 很低的情况下有一定优势,如果原本硬件 utilization 很高,考虑重构带来的额外成本此时反而性能更差

比如有一个场景要训 Transformer 模型,那么集群全部都是 Transformer-ASIC,因为对 Transformer 特殊优化,utilization 非常高,此时硬件便没有可重构介入的空间。如果一个场景有 Transformer、CNN 以及一些乱七八糟的模型,导致此时硬件虽然可以计算,但执行其他模型时 utilization 就不高了,便可让可重构发光发热了。

以上分析还是很笼统,实际上即使相同模型对算力的需求也不一样的,模型规格和拓扑也会影响在硬件上的具体实现。但可以看出,utilization 很低来自于场景的复杂性,而原本硬件没有处理复杂性能力,导致 utilization 退化。所以想要挖掘可重构计算能力,一是要找到某个复杂场景,而是 profile 该场景下 utilization 到底退化多少,接着才是评估是否可重构以及重构的成本。

软硬件协同设计——软件为主硬件为次

上文解释了什么情况下可重构会有优势,但还没有解释什么时候能够可重构,这要可以从软件角度做更多挖掘分析。

我把软件定义为一些算子按照相关/依赖关系组成的计算图。这有俩个概念,一是基础粒度是算子,其次是依赖关系,这个概念也是相对概念,一些小算子可以合成一个大算子考虑,取决思考的坐标系。

那么可重构首先就要保证算子功能之间的切换是合理的,这和具体重构粒度以及算子之间的相似度有关,需要具体分析,假设已经分析得到结论。

接下来是依赖关系,如果原本在时域上执行的软件划分到空域执行,就要考虑解耦依赖关系,才能并行计算。所以单线程到多线程的时空域变换依赖于 Amdahl's 定律中并行部分占比,非 pipeline 到 pipeline 取决于同一指令不同 stage 之间的依赖关系,不同 stage 的依赖固然存在引发冒险,但 RISC 指令集就比 CISC 更好解耦依赖从而流水化。

对于可重构硬件,发挥优势有俩种可能,一是维持硬件规格,单纯减少面积维持性能,时域->时域,此时只需考虑算子功能的约束;二是增大硬件规格,面积不变增大性能,时域->时空域,此时需同时考虑算子和依赖关系的约束。

我之前一直持有一个观点,即并行和依赖这俩个概念是相互依存的 [4],如果用时空域的概念解释,便是从时域计算到空域计算范式的变化。


  1. https://books.google.com.hk/books/about/可重构计算.html?id=i0bHsgEACAAJ&redir_esc=y ↩︎

  2. https://www.cnblogs.com/devil-sx/p/18376977 ↩︎

  3. 来自 polloack's rule, 详情见以往 blog https://www.cnblogs.com/devil-sx/p/18299200 ↩︎

  4. 见以往 blog https://www.cnblogs.com/devil-sx/p/18351623 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/796478.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins远程启动任务--启用远程触发构建

一:前言 在执行Jenkins的项目构建的时候,一般都是通过web管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建。二:设置用户token 打开当前登录用户…

2024年9月中国数据库流行度排行榜:TiDB重回前三,GoldenDB问鼎前五

9月墨天轮排行榜解读新鲜出炉!本月榜单前五变动较大,TiDB时隔半年重归第三,GoldenDB再次攀升跻身第五,此外亦有部分产品表现不俗,一起来看更多排名情况与解读!9月墨天轮数据社区的中国数据库流行度排行榜如约而至。除了冠亚两位,排名第三至第五的数据库产品均经历了位次…

7、Linux文件和目录管理

常规命令的格式注意:调侃删库操作,请勿执行! 命令规范命令:使用正确的命令名称。 空格:命令与选项、参数之间需要空格分隔。 大小写:大部分命令对大小写不敏感,但部分命令和参数敏感,需要注意。 顺序:大部分情况下顺序无影响,但少数命令有顺序要求。详细命令选项参考…

Unity开源技能编辑器

https://www.bilibili.com/video/BV19Z421i7rs/?spm_id_from=333.788&vd_source=106601ca71b1d910c1ac4aa2466b744chttps://github.com/ancientElement/AE_SkillEditor_Plus 开源地址 https://github.com/ancientElement/AE_SkillEditor_Plus

降维算法 0基础小白也能懂(附代码)

在互联网大数据场景下,我们经常需要面对高维数据,在对这些数据做分析和可视化的时候,我们通常会面对「高维」这个障碍。在数据挖掘和建模的过程中,高维数据也同样带来大的计算量,占据更多的资源,而且许多变量之间可能存在相关性,从而增加了分析与建模的复杂性。我们希望…

倍福twincat2变量变化监控方法

使用场景 使用twincat2 scopeview工具对程序中快速变化的变量进行监控并分析程序异常点 监控设置打开TwincatScopeView软件新建示波器并添加Channel填写AMS地址插入需要监控的变量(此处可将需要监控的变量赋值,置顶,方便添加)调整窗口显示范围选择固定时间监视/持续监控对图…

SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT

SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT编辑:ll SBT20100VFCT-ASEMI低压降肖特基二极管SBT20100VFCT 型号:SBT20100VFCT 品牌:ASEMI 封装:ITO-220AB 安装方式:插件 批号:最新 恢复时间:35ns 最大平均正向电流(IF):20A 最大循环峰值反向电压(VRRM):100V…

阿里云 云盘扩充

挂载实例 /dev/vdc 要操作的主分区是 /dev/vdc1,这个盘只有一个分区,先卸载主分区: umount /dev/vdc1df -h 来查看是否卸载成功。如果在输出的结果中看不到 /dev/vdc1 的信息,则表示卸载成这一步,我们使用 fdisk 命令删除原来的分区并创建新分区,步骤如下:首先运行 fd…

Linux复习之安装

不过现在不推荐自己安装了,推荐使用云服务器,因为现在云服务很便宜,而且有各种优惠 安装虚拟机手动进行磁盘分区安装成功的界面虚拟机的克隆快照的设置与管理迁移与删除远程登录-Xshell,远程传输数据-Xftp6解决xftp6中文乱码的问题vim-3中模式vim的快捷键关机重启运行级别 …

Java常见报错

NoSuchElementException: 一般都是数组或者集合的索引越界 ConCurrentCheck(并发修改异常): 因为集合中有自己的修改次数记录的变量,还有另一个记录地变量,一般这2个变量不一致,则会报错!mapkey is required怎么解决:说明: MyBatis查询一些记录,数据涉及到两个表里的数据…

智能监控技术揭秘:思通数科AI系统值班行为分析

思通数科的AI视频识别预警系统是一个集成了先进人工智能技术的监控解决方案,旨在通过实时视频分析提高安全监控的效率和准确性。该系统利用深度学习算法,能够识别和分析视频中的各种行为模式,从而实现对特定事件的快速响应。AI技术在值班离岗、脱岗等行为监控方面的主要实际…

将美术馆装进手机,艺术融入生活。《Arrrt》入选华为应用市场“匠心奖”

随身美术馆,多维探索艺术世界 你看过梵高笔下的玫瑰吗?你知道莫奈画中的女孩是谁吗?你知道艺术史上有哪些知名的猫奴吗?想不想探索更多艺术大师的作品与背后的故事?《Arrrt》将美术馆装进手机,化作一间随身美术馆。从巴洛克到抽象主义,从学院派到印象派,从文人画到浮世…