墨竹工卡| 灵石| 微山| 广安| 揭西| 新化| 扶沟| 鲁甸| 麦盖提| 乌拉特后旗| 平鲁| 连州| 岳阳县| 衢州| 团风| 济源| 博山| 鹤山| 邓州| 昌宁| 昭苏| 相城| 天池| 黎城| 盐边| 龙游| 宿州| 信宜| 安国| 浙江| 彭州| 汉南| 易门| 潘集| 汉中| 仁怀| 浦城| 柘城| 北流| 长兴| 桦南| 江孜| 景宁| 呼玛| 营山| 色达| 宁德| 灵丘| 隆子| 垦利| 嘉兴| 万年| 道真| 三江| 畹町| 荥经| 长沙| 乐陵| 罗山| 开鲁| 安溪| 沂南| 凌源| 鄂伦春自治旗| 横峰| 乌审旗| 溆浦| 福清| 吉利| 遂平| 南平| 安乡| 双流| 华池| 台中市| 昌邑| 汝城| 大洼| 聂拉木| 钦州| 塘沽| 盐津| 无棣| 农安| 冠县| 杞县| 湖州| 融安| 铁山| 万山| 疏勒| 金湖| 高陵| 方正| 铁岭县| 颍上| 会东| 北仑| 麦积| 浦城| 饶河| 西盟| 和政| 定日| 修水| 南宁| 习水| 阜新市| 博爱| 玛多| 湘潭市| 桃园| 乌兰浩特| 盐亭| 猇亭| 肃宁| 固安| 富顺| 马关| 博罗| 勉县| 淳化| 巨野| 蛟河| 黑山| 砀山| 志丹| 贞丰| 玛曲| 大足| 梅里斯| 桦川| 五大连池| 金堂| 平遥| 将乐| 宝清| 昭平| 孟津| 西山| 郓城| 廊坊| 岑巩| 黄骅| 南阳| 禄丰| 仁寿| 桦川| 紫阳| 韶山| 新建| 红古| 临颍| 什邡| 镇赉| 北仑| 德安| 柘城| 伊吾| 台前| 海口| 雁山| 江西| 木垒| 西峰| 永平| 修文| 新安| 索县| 彭水| 长海| 新源| 礼县| 北辰| 东山| 竹溪| 策勒| 苍梧| 紫金| 富锦| 桦川| 东沙岛| 富顺| 双城| 龙山| 文安| 紫阳| 玉门| 民丰| 梨树| 米林| 井研| 宾川| 石家庄| 武功| 廊坊| 沂水| 怀仁| 嵊州| 竹山| 阿城| 新河| 新荣| 万山| 兰考| 黟县| 富民| 曲江| 柞水| 栾城| 临澧| 讷河| 郎溪| 莱西| 班戈| 岳普湖| 通城| 沙县| 白碱滩| 木兰| 深圳| 乡宁| 博爱| 范县| 大方| 大埔| 孟州| 红安| 遂溪| 鹰潭| 毕节| 苍山| 白沙| 汤阴| 门源| 莱州| 个旧| 小金| 陇南| 磴口| 西畴| 高平| 沙洋| 梧州| 尤溪| 吴起| 延庆| 南漳| 肥乡| 乃东| 砚山| 高港| 天祝| 海门| 麻山| 永平| 岑巩| 新青| 普格| 安丘| 松原| 盈江| 泊头| 德庆|

“扶贫茶”引出暖心建议 基层代表委员上会

2019-11-17 20:48 来源:39健康网

  “扶贫茶”引出暖心建议 基层代表委员上会

  市级机关各部门单位机关党组织书记、专职副书记,各区委分管领导及区级机关工委书记、江北新区党工委党群工作部相关负责同志,部分市级机关基层党支部书记代表等参加了会议。因为有信仰,生命更加从容。

李晓岚对2017年工委信息化建设和信息办工作给与了充分肯定,要求信息化建设要紧扣工作需要,重视服务对象的使用感受,信息办要根据项目的轻重缓急,稳步推进,各项工作要再上新台阶。(作者系河南省委副秘书长、省委省直机关工委书记)

  在新时代的长征路上,曙光可见、胜利在望,但前方的路也布满荆棘、沟深壑险,需要全体中华儿女团结一心、砥砺前行,形成齐心共筑中国梦的磅礴伟力。  制度韧性:中国特色社会主义的特点和优点中国特色社会主义制度具有韧性,这是其特点和优点。

  会议要求,要把党的建设摆在首要位置,坚决维护以习近平同志为核心的党中央权威和集中统一领导,把学习贯彻习近平新时代中国特色社会主义思想作为党的建设根本任务,深入学习贯彻党的十九大精神,树牢“四个意识”。市委组织部部务委员、办公室主任阎晓东、市直机关工委领导班子成员参加会议。

调研中,大家结合省直机关实际,围绕如何保障目标任务落实、如何推动问题解决、如何反“四风”改作风、如何激发党员干部内生动力和如何谋划安排主题教育的具体工作举措等五个方面,深入总结近年来开展党内集中教育的做法经验,认真查找机关党员干部在政治思想、作风能力等方面存在的突出问题,特别是聚焦形式主义、官僚主义的新表现,研究提出了针对性和可操作性强的工作举措,为在省直机关开展主题教育提供了宝贵的建议意见。

  来源:天津机关党建网

  习近平总书记的重要讲话,总揽全局、高瞻远瞩、情真意切、语重心长,既充分体现了对山东的信任和殷切期望,对山东发展的高度重视和巨大支持,又从战略和全局高度,提出了新时代山东工作的总要求。党支部要担负好直接教育党员、管理党员、监督党员和组织群众、宣传群众、凝聚群众、服务群众的职责,引导广大党员发挥先锋模范作用”。

  要在严明纪律转变作风上走在前、作表率。

  工委机关第一党支部率先为党员魏巍同志,过了入党17年来的一个政治生日,重温入党誓词,回顾入党时的情形和历史背景,分享入党以来的心路历程,许下了“政治心愿”。长征路上一名军需处长的故事感动了很多人。

  要在发挥机关党支部职能作用上走在前、作表率。

  该剧自2015年9月首演以来,在全国各地已演出110多场,获得社会各界广泛赞誉。

  从党的十八大以来管党治党成效和经验来看,全面从严治党是一场伟大的自我革命,我们党要实现新时代历史使命,必须毫不动摇坚持和完善党的领导,毫不动摇推进党的建设新的伟大工程。按照党的十九大提出的坚持无禁区、全覆盖、零容忍,坚持重遏制、强高压、长震慑等要求,深化标本兼治,坚定不移惩治腐败,奋力夺取反腐败斗争压倒性胜利。

  

  “扶贫茶”引出暖心建议 基层代表委员上会

 
责编:

新闻中心

EEPW首页 > 设计应用 > PYNQ中实现SoftMax函数加速器

“扶贫茶”引出暖心建议 基层代表委员上会

作者:孙齐伟时间:2019-11-17来源:电子产品世界收藏
深入开展理想信念教育,教育引导广大机关党员干部牢记党的宗旨,挺起共产党人的精神脊梁,自觉做共产主义远大理想和中国特色社会主义共同理想的坚定信仰者和忠实实践者。

  孙齐伟

本文引用地址:
http://www-eepw-com-cn.rhycq.tw/article/201905/401026.htm

  (西南交通大学 信息科学与技术学院,四川 成都 611756)

  摘要:函数通常在深度学习中作为激活函数使用,但其计算涉及自然指数和除法运算,传统PC机上计算较慢,拖累了一个神经网络的训练。本文针对自然指数运算的特点,提出了一种名为基底拆分法的新方法。该方法将函数中自然指数计算拆分为多个由查找表实现的特定基底上,通过这种方法,一个复杂的自然指数计算过程即可由查找表过程和乘法过程实现。这种方法有效的降低了硬件复杂度以及逻辑传播延时。由于该方法中使用了自定义的数据结构,因此本文采用了CPU + FPGA的架构,通过合理分工,加速函数计算。同时,本文将基于这种方法设计的IP核在-Z2开发板上进行了板级调试。

  关键词:,SoftMax,

  * 本作品获得第二届“全国大学生集成电路创新创业大赛”全国一等奖

  0 引言

  Xilinx推出的系列FPGA中嵌入了一颗双核ARM,既能发挥FPGA的定制特性,也能发挥处理器的通用特性,而且两个部分之间接口丰富、官方文档齐全,可玩性极高。同时相应的开发板也很多。传统的开发板(Zedboard等)需要结合vivado和SDK两大工具分别对PL、PS端进行硬件和软件开发。本次我介绍的平台为开发板可使用Python将软件操作和硬件控制进行无缝衔接,目前已经出到Z2版本,由依元素进行代理销售,999块极具性价比。

1.png

  PYNQ是Xilinx一项旨在使用Python和一些lib让SoC开发更加简单的开源项目,以我的理解其本质是Python的一些第三方库,是对PS端操作的封装。传统的ZYNQ开发板也能使其变为PYNQ开发板,当引入Python后就可以使用一些Python中强大的第三方库了例如Numpy、Matplotlib等。

  1 SoftMax函数介绍及计算方案介绍

  SoftMax 函数是神经网络中的一种输出层函数,计算输出层的值,主要用于神经网络最后一层。其表达式如下所示:

2.png

  设计中的关键问题是 自然指数的计算 ,传统的方案有:

  (1)查表法:同等规格定点数下精度极高,但若要在较大范围上计算需要消耗大量资源。

  (2)CORDIC:利用迭代特性,资源复用,占用资源极小,常用于计算器中,但在大规模计算中需要进行流水线化改造,且需要想办法克服最大旋转角度限制的问题。

  (3)泰勒级数展开:也即多项式拟合,该法较为灵活,多项式次数越高精度越高,划分区间越细精度越高,是较为常用的方法。

  本文针对指数计算的特性,设计了一种原理简单的计算方案,并且通过了板级测试。根据其计算特性称其为基底查表法。

1559616708925171.jpg

1559616708645912.jpg

5.png

  在十进制中,若要计算3.68的自然指数我们可以通过公式(1)分别计算e3,e0.6,e0.08,所以可以事先将需要的自然指数值存在ROM表中,计算时将待计算数字通过基底拆分分别得到个位、十分位、百分位,并作为ROM的寻址地址,最后将查表得到的值进行乘法操作即可得到最终结果。但数字电路中实现十进制取整取余操作时较为复杂的,因此实际使用时对二进制情况进行了优化。

  图2为基于二进制移位操作的基底拆分示意图,待计算的16bit数据,高三位表示的是小数点的位置信息,低十三位为数据位。经过左移并按照人为设计的格式输出即可还原数据。这种方法仅采用移位操作进行基底划分,因此硬件结构简单、传播延时小。

  工程中设计的IP核内部结构,见图3。

  其中的关键流水线如图4。

  大致原理就是如此,可以看出这种方法也是很灵活的,可以通过简单地增加ROM和乘法器数量即可扩大计算范围,而且精度可以通过增减ROM表存储的定点数位宽进行改变,乘法器可以使用ZYNQ中的DSP资源来提高性能。本次设计的范围针对[-10,10]。

  2 误差结果

  测试时分别使用[-10,10],[-5,5]两个区间中4096个点进行误差分析,大致过程如图5。

  最后得到的绝对误差图,见图6。

  误差在10^-7数量级上,可以说是很小了。

  3 IP核接口介绍

  深度学习又被称为炼丹,究其原因就是其训练速度较慢,因此考虑深度学习中的加速问题十分有意义。FPGA由于其定制特性,可以通过逻辑门电路十分高效的完成计算过程。

1559616546480625.jpg

  本次我使用FPGA实现了一款AXI接口的激活函数softmax的加速器,并且通过PYNQ开发板对其进行验证同时完成了精度测试。输入输出均为形式,内部采用了一个AXI_S和一个AXI_M,其中,输入AXI_S用于ARM端向ip核传递写地址、读地址、数据个数、输出数据16/8bit切换,AXI_M完成对PS端DDR的读写操作,这样设计的目的是为了最大化减小ARM端的工作量,使整个系统更加高效,因为AXI_M可以主动的读写AXI_S并且AXI_S只能被动的被AXI_M进行读写,这个过程设计好后无需ARM端干预。其结构图如图7所示。

  因此涉及的操作为 GPIO口操作,AXI写操作,DDR操作。这里原本设计采用ZYNQ上的AXI-HP端口,但是调试时发现该端口在数据格式配置为32 bit时仍采用的64bit数据位,估计是个bug,因此不得不换成AXI-GP端口了。

  (1)从ARM引出的两个GPIO一个作为复位信号,另一个作为触发信号

  (2)AXI_M接口,用于配置ip核的一些信息。

  4 任务划分

  为了充分发挥ARM对通用任务的处理特性以及PL的定制特性,本次设计的系统中PS完成了读取数据、数据的定点化和数据移动任务,PL端利用其定制化特性完成计算的加速。整体结构框图如图8。

  图中的CPU即为ARM,工作时将模拟输入的数据写入DDR,并且完成定点化工作。图中硬件即为PL端设计的加速器,其工作分为两个阶段,一是计算元素的自然指数值并对其进行求和,二是利用第一个阶段的自然指数值和和做除法求得每个元素的softmax值。

  5 PYNQ平台的优势

  我的设计在曾在传统的ZYNQ开发板上进行过调试。设计好硬件后需要结合SDK工具对ARM核进行C语言开发,结果最后需要通过串口返回PC机进行处理。

  在SDK中返回的数据,返回的数据经过上位机的处理才能得到想要的误差数据,较为繁琐。

  但PYNQ不一样,PYNQ上使用了Jupyter可以使用浏览器进行在线Pyhthon编程,而且Python中numpy科学计算库可以只使用3句话就实现softmax的高精度计算,结合pynq的相应库可以实现软件处理和硬件控制的无缝衔接,PL端加载bit文件、PL端控制、软件计算、matplotlib绘制均使用Python完成,最后的结果都可以在网页中显示出来,极其方便。

  图中我使用了matplotlib库将软件计算结果与硬件计算结果进行了绝对误差计算,可直接在网页中显示出图像,更加形象化。本次我的设计中,使用PYNQ完成了 从SD卡中读入数据,数据定点化,数据写入DDR,控制PL端进行加速计算,读DDR,将软件结果与硬件结果对比通过误差散点图来测试设计的IP核的精度。

  ZYNQ与PYNQ平台的差异可通过对比两个平台的系统框图得到

  可以看出,传统ZYNQ通常为裸机开发,而且PYNQ一般为在自身运行的Ubuntu上进行Python开发,因此PYNQ相对而言上手简单加上一些强大的第三方库的支持使用起来也十分方便、有趣。

  6 PYNQ使用方法

  一些基础操作可以参考官方Get Start我总结有如下步骤:

1560412924331554.jpg

  (1)vivado中设计PL端的硬件结构--PC操作,如图13。

  (2)vivado导出设计tcl文件和bit文件--PC操作

  write_bd_tcl -force C:/Users/Administrator/Desktop/test.tcl

  (3)将tcl文件和bit文件放入PYNQ中--PC操作,如图14。

  windows上运行 \\pynq 即可通过sdb功能连接PYNQ开发板,进行文件移动

  (4)使用Overlay将bit文件进行加载--PYNQPython操作

  overlay = Overlay('/home/xilinx/pynq/overlays/softmax/design_1.bit')

  至此设计就初始化在PL端,使用Python控制相应外设即可。

  7 Python中相关lib的基本使用

  1.Overlay

  from pynq import Overlayov

  overlay = Overlay('/home/xilinx/pynq/overlays/softmax/design_1.bit')

  用于加载比特流文件至PL端

  2.GPIO

  from pynq import GPIO

  rst = GPIO(GPIO.get_gpio_pin(0), 'out')

  triggle = GPIO(GPIO.get_gpio_pin(1), 'out')

  triggle.write(1)

  rst.write(1)

  rst.write(0)

  rst.write(1)

  操作PS端的GPIO口,操作的是64bit的PS-PL端的EMIO

  3.Xlnk

  from pynq import Xlnk

  xlnk = Xlnk()

  buf = xlnk.cma_array(shape=(num,), dtype=np.uint32, cacheable=0)

  addr = buf.physical_address

  结合numpy在DDR中分配空间,用于PL端AXI_M使用其中physical_address可以得到DDR中的物理地址在分配空间时,有个cacheable属性,由于PS和PL端都要对DDR进行操作,所以为了防止PS的cache导致读到的数据未被更新,所以通常需要关闭缓存功能。

  4.AXI从端操作

  myip = overlay.axi_s_control_0

  myip.write(0x00,addr)

  myip.write(0x04,addr)

  myip.write(0x08,num)

  myip.write(0x0c,bool_16)

  myip.read(0x08)

  其中axi_s_control_0是我AXI_S的模块名称,这个是python从导出的原理图tcl文件读出的,因此需要保证tcl和bit文件的一致性,而且需要两者同名

  注:这些信息都在上文提到的Get Start连接中可以找到,具体请参考官方的说明。

  8 结论

  此次借助“全国大学生集成电路创新创业大赛”契机,我们分别在传统ZYNQ和PYNQ平台上完成了SoftMax函数的加速,获得了比较好的效果。

  在传统的ZYNQ平台上开发SoC需要具备数字电路和ARM嵌入式开发知识,比较偏向于底层。反观PYNQ平台,利用Python这一优美的语言对ZYNQ操作的封装极大的降低了开发难度,同时结合Python强大的第三方库,可玩性极高。

  当今数字电路工程师仅仅掌握数字集成电路的知识是远远不够的,项目开发更加需要复合型人才。我在项目中采用Verilog作为硬件开发语言,使用HLS做雏形开发,同时使用Python及Matlab进行建模及数据分析,使用的软件工具有Xilinx的VIVADO、ISE,以及Synopsys的DC,ICC,Synplify。可以看出仅仅掌握一门技能是远远不够支撑一个项目的。时代在进步,科技在发展,因此数字IC工程师应该保持住学习的状态,就比如说近几年大火的深度学习,十几年前这个领域还是没有人愿意去碰的,但现在该领域已经让很多停滞不前的方向又迎来新春。

  世界上还是存在很多机会的,但机会都是留给有准备的人。

  附件:本文设计的softmax ip核在PYNQ运行所需的所有文件https://pan.baidu.com/s/1OuaoS34nIp4Ci96gMCEmug 密码:ifme

  本文来源于科技期刊《电子产品世界》2019年第6期第69页,欢迎您写论文时引用,并注明出处




评论


相关推荐

技术专区

关闭
坪山镇 迎风道迎风里 三亚市市辖区 新马桥镇 东莞市
小天竺街道 和庄乡 徐州市青年路小学 惠民南 西河下 广安门内街道 桃源湾 慈云寺 七台河 敖龙布拉格镇 马王乡 丈头村 鲸鱼峡谷 鸭鸽营乡 呼衍王 五间厅 甘坑林场 四海路 岔科镇 脑沟 祖务村 者桑乡