买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:湖南大学
摘要:本申请公开了一种基于SVE指令集的池化层函数的高性能实现方法,其针对支持SVE指令集的Armv8、Armv9架构平台,采用interface接口‑driver驱动‑kernel汇编核心代码三层代码设计框架,使用循环展开,汇编级别流水线指令重排,SIMD向量化指令,双向循环展开等技术手段,实现了汇编级别的优化手段,并且提供了多线程的接口和可用于多线程的逻辑实现来获取线程化的优化。面对NHWC数据类型的池化操作,解决了编译器无法获得最佳性能的问题,提高了硬件的性能表现,与传统形式NHWC深度优先的池化相比,在x86上创建的Armv8.2虚拟机上仍可以达到2.67倍加速比。
主权项:1.一种基于SVE指令集的池化层函数的高性能实现方法,其特征在于,支持SVE指令集的Armv8、Armv9架构平台是基于富岳超级计算机使用的富士通A64FXSoc或者倚天710的X2架构进行设计,使用interface接口代码-driver驱动运行代码-kernel汇编核心代码的三层代码设计框架,主要是针对NHWC存储格式的数据的优化实现,因此针对的是通道优先的池化操作,具体实现如下:(1)interface接口层函数:其面向所有池化函数类型的调用,判断是否是通用池化操作的策略设定;在interface接口层中会有设定多个参数的设计,主要用于检查是否是支持使用优化版本的设计;在driver驱动层中会进行判断来确认是否执行优化版本的高性能池化函数,并且对于interface接口层利用c++语言的继承多态特性提供拓展性;(2)driver驱动层函数:其在interface接口层通过不同的参数设定配置好结构体之后调用,由于interface接口层参数的确认,在driver驱动层处得到策略的确认,确定真正的池化参数会进行的具体特征,在这一步,面对不同的填充情况,不同的池化区域的跨度大小还有池化区域大小进行具体的计算;在driver驱动层的参数处理函数之后是主要的外部逻辑调用区域,将池化区域覆盖计算的区域看作为池化片,并以一整行的输出池化片作为一个内部计算调用,并将纵向的循环进行多线程的优化,在多线程的情况,在通用的池化计算中,每个线程将单独负责一行结果的计算,将采用对于输出的纬度进行反向的获取输入范围,并且需要对于填充的处理需要有不同,主要区分考虑顶部和底部的填充;(3)kernel汇编层函数:其作为内核层函数,被driver驱动层进行反复调用,kernel汇编层函数利用直接编写汇编指令的形式,基于ARMv8Armv9架构特征,在汇编级别利用SIMD技术、流水线技术、循环展开技术进行性能调优,通过重新排布取数据写回的IO指令和计算指令的排布顺序,尝试使用计算指令掩盖访存延迟,保证kernel汇编层函数时CPU中较高的计算时间与总时间的比。
全文数据:
权利要求:
百度查询: 湖南大学 一种基于SVE指令集的池化层函数的高性能实现方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。