本节课主要介绍点乘的软件实现以及使用Spatial的硬件实现

本节课内容包括

点乘回顾、点乘的软件实现、点乘的硬件设计、点乘的优化以及如何理解性能

点乘就是两个等长序列的累加和,它的几何意义就是计算cos(a,b)

用软件来仿真可以看到比较简单,numpy包提供了自带点乘函数dot来实现功能,它的计算结果和上面写的遍历累加和的结果一致。

用Spatial语言实现更加简单,用zip的方法让矩阵aIn和bIn,先每一项相乘(_*_),再将每一个乘积结果累加(_+_),这样写是scala语言的特性。

用Spatial进行硬件设计该如何设计呢,最直观的方法是:

首先是工作在整型矩阵的T,然后需要实现两个矩阵a和b从片外存储拷贝到片内存储,所以片外存储为a,b,用setMem的方法将aIn和bIn矩阵拷贝到片外存储DRAM a和b中;片内存储为aTile和bTile。从片外DRAM拷贝到片内SRAM需要控制逻辑,这里实现了一个寄存器用来存储累加和accum,先用并行处理的方法将DRAM的每个条目拷贝到片内,然后将片内存储进行累加和处理结果保存到accum寄存器。最后将accum寄存器给result寄存器,用argOut的方法输出给Host处理器。

回想一下我们是不是必须要使用序列控制器来实现点乘?因为点乘可以看做是一个缩减的操作,数据之间使用没有依赖关系,我们可以用流水的方式进行处理。

将sequential语句改成reduce语句

得到硬件设计框图如上图所示。再考虑一下如何对该硬件结果进行优化?

并行处理是一个重要的思路,代价是增加加法器和乘法器的开销。首先是对计算内积进行并行处理,并行度为4

得到的硬件结构为:

可以看到并行执行使用了4套加法器和乘法器逻辑。

也可以对累加缩减进行并行处理,并行度为2,得到硬件结构如下所示

相比于内积并行,累加缩减并行少用了乘法器,但增加了寄存器的用量,并且增加了计算延迟。不过内积并行对于片上存储带宽要求很高,出数宽度等于原始数据宽度乘以并行度,这样会带来一定的开销(线开销,以及存储器面积的变化)

最后思考一下性能分析,我们关心的一个是完成计算的拍数,第二个就是资源利用率

从完成拍数上看,使用reduce流水的方法相比于序列串行实现的提升效果明显,并行能够缩减1倍的延迟是因为并行使用了reduce(2,4)并行,限制在2倍并行。但并行对操作个数提升很大,提升了6倍多

假设使用一个更大的并行度,外层并行度为2,内积并行度为128,tilesize并行度为256

得到的性能如下表所示

如此大的并行度对延迟的减少并不明显,对操作吞吐量的提升很大,但是存储容量也爆炸增长。

从以上实验结果分析可以基本得出:

tilesize的大小和片上BRAM的容量直接相关

并行度和操作吞吐量直接相关

延迟受外层并行度制约。

numpy 点乘_斯坦福CS217(六)Spatial点乘示例相关推荐

  1. 深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答

    深度学习与自然语言处理(4)_斯坦福cs224d 大作业测验1与解答 作业内容翻译:@胡杨(superhy199148@hotmail.com) && @胥可(feitongxiaok ...

  2. 深度学习与自然语言处理(3)_斯坦福cs224d Lecture 3

    原文作者:Rohit Mundra, Richard Socher 原文翻译:@熊杰(jie.xiong.cs@gmail.com) && @王昱森(ethanwang92@outlo ...

  3. 深度学习与自然语言处理(5)_斯坦福cs224d 大作业测验2与解答

    作业内容翻译:@胡杨(superhy199148@hotmail.com) && @面包君 && Fantzy同学 校正与调整:寒小阳 && 龙心尘 时 ...

  4. 莫兰指数stata命令_【第六期】Regional Study 群日报

    本期看点: 一.用MATLAB估计SLX模型 二.各省能源消费结构的计算问题 三.stata中DID共同趋势相关代码讨论 四.公式请教 五.Stata画莫兰指数散点图的命令 六.分析铁路影响的数据查找 ...

  5. 六轴机械臂控制原理图_机械臂——六轴机械臂操作空间运动分析

    机械臂建模分析:https://blog.csdn.net/Kalenee/article/details/81990130 MoveIt规划下的关节空间运动分析:http://www.guyueho ...

  6. 数据湖和传统业务_在十六湖国家公园测量和计算流量

    数据湖和传统业务 介绍(Introduction) Streamflow (or discharge) describes the volume of water moving down a stre ...

  7. oracle 方泽宇_斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱...

    上一讲我们学习了知识图谱的一些基本概念:泽宇:斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱​zhuanlan.zhihu.com 本节课程关于如何构建知识图谱,因为知识图谱的构建 ...

  8. python numpy官网_官网Numpy教程

    一: 简单介绍 numpy 的主要对象是同类型的多维数组.它通常是以表格的形式存在,表格里面的元素具有相同的类型,可以通过含正整数的元组索引到相应的元素.在NumPy中,维度被叫做轴 例如,一个3维的 ...

  9. 深度学习与自然语言处理(2)_斯坦福cs224d Lecture 2

    原文作者:Rohit Mundra, Richard Socher 原文翻译:@熊杰(jie.xiong.cs@gmail.com) && @王昱森 内容调整与校对:寒小阳 & ...

最新文章

  1. java连接mysql数据库(jsp显示和控制台显示)
  2. 热点:3个故事概览突飞猛进的肠道病毒组研究
  3. python之父去面试-Python面试题之Python的Super方法
  4. python 一次编辑
  5. python停用词表_多版本中文停用词词表 + 多版本英文停用词词表 + python词表合并程序...
  6. c#重命名文件 递归_文件结构、文件操作及压缩解压操作
  7. 两本关于sharepoint 2010的书值得参考
  8. Struts迭代器(iterator)遍历List常用的4种例子 - 冯世杰
  9. 自建网易云音乐解锁代理
  10. Python爬取豆瓣电影信息并分析
  11. GO+Selenium批量关注各大网站实战 1 (基础+demo)
  12. 【洛谷T2695 桶哥的问题——吃桶】
  13. ux和ui_UI和UX设计人员的47个关键课程
  14. c#代码串口服务器的无线连接,C# 通过串口读取和发送数据
  15. 社交消费时代到来,趣享付占领社交营销一线
  16. 计算机桌面用什么实木板好,几百块打造属于你的专属实木(硬木)电脑桌
  17. 《平凡的世界》经典语句
  18. 月薪5w的大佬都爱用的SWOT分析法,本文分析透了!
  19. 豆瓣评分9.3,登榜热搜26次!电视剧《觉醒年代》为何能做到深入人心?
  20. HTML5+CSS3+JS实现满屏下雪效果

热门文章

  1. clover configurator_枯木逢春,用Clover让老电脑从NVME SSD启动 再用叁年没问题
  2. CVPR 2018 目标跟踪相关论文
  3. 铺地毯pascal程序
  4. Codeforces 1284E New Year and Castle Building (计算几何)
  5. python定义一个矩形类_创建矩形类
  6. macbook不能进系统 备份数据_外卖骑手,困在系统里;绩效考核与奖惩激励,不能困在数据里...
  7. webpack 图片压缩不起作用_理论|webpack2 终极优化
  8. java布局垂直居中_CSS水平居中和垂直居中解决方案(转)
  9. python 监视图_python获取zabbix监控图
  10. 20211201 二范数的导数小于等于导数的二范数(导数存在情况下)