预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN114239669A(43)申请公布日2022.03.25(21)申请号202110398219.1(22)申请日2021.04.14(71)申请人无锡江南计算技术研究所地址214038江苏省无锡市滨湖区山水东路699号(72)发明人林蓉芬尉红梅袁欣辉王飞郑岩尹万旺魏迪孙浩男孙强史俊达王丹云(74)专利代理机构苏州创元专利商标事务所有限公司32103代理人王健(51)Int.Cl.G06K9/62(2022.01)G06F9/30(2006.01)G06F15/16(2006.01)权利要求书1页说明书3页附图2页(54)发明名称一种异构众核架构上基于算子融合的数据复用方法(57)摘要本发明公开一种异构众核架构上基于算子融合的数据复用方法,将DNN算子库中依次调用的至少两个算子A、B进行功能融合,获得融合算子C,执行以下操作:S1、融合算子C从主存中读取数据到局存中,并将读取的数据作为算子A的输入;S2、算子A将获取的数据作为输入,进行相应的运算,完成算子A的功能计算,此时算子A将结果保留在局存中不写回主存;S3、算子A将局存中的计算结果传递给算子B,作为算子B的输入;S4、算子B将来自算子A的数据作为输入;S5、算子B完成运算后,将最终的计算结果从局存写回主存;S6、算子C运算结束。本发明极大减少了内存访问次数,提高了数据的复用率,综合提升了可融合算子的效率。CN114239669ACN114239669A权利要求书1/1页1.一种异构众核架构上基于算子融合的数据复用方法,其特征在于,将DNN算子库中依次调用的至少两个算子A、B进行功能融合,获得融合算子C,执行以下操作:S1、融合算子C从主存中读取数据到局存中,并将读取的数据作为算子A的输入;S2、算子A将获取的数据作为输入,进行相应的运算,完成算子A的功能计算,此时算子A将结果保留在局存中不写回主存;S3、算子A将局存中的计算结果传递给算子B,作为算子B的输入;S4、算子B将来自算子A的数据作为输入,进行相应的运算,完成算子B的功能运算;S5、算子B完成运算后,将最终的计算结果从局存写回主存;S6、算子C运算结束。2CN114239669A说明书1/3页一种异构众核架构上基于算子融合的数据复用方法技术领域[0001]本发明涉及一种异构众核架构上基于算子融合的数据复用方法,属于深度学习技术领域。背景技术[0002]近年来,人工智能的迅速发展将深刻改变世界发展模式和人类生活方式,为抢抓人工智能发展重大战略机遇,各国均在构筑先发优势。DNN算子库是针对人工智能的底层算力支撑库,是针对人工智能深度学习的基础,算子虽然已众核化加速,但每调用一个算子,都需将算子的输入数据从内存中读入LDM,完成运算后再将此算子的计算结果从LDM写回内存,这样每个算子调用就需要两次内存访问。现实中的AI应用需要对各种算子按需进行不断地调用,对于异构众核架构,频繁的内存访问势必会影响整体性能的提升。基于此况,如何减少内存的访问次数,提升数据复用率,对众核化背景下的AI应用具有重大的意义。[0003]目前,DNN算子库算子已被众核化加速,虽然单个算子已经有了较大的性能提升,但是在异构众核架构下,带宽资源是系统的瓶颈,如何减少算子与内存不必要的交互才是优化性能的关键所在。如果只是单个算子的加速,虽然在计算速度上有了很大性能提升,但是对于现实的AI应用,需要对不同的算子进行不断的调用,单纯的算子调用并不能得到进一步的性能提升。虽然AI应用对算子的调用具有一定的规律性,前后相邻两个算子有如下关系:前一个算子的输出是后续算子的数据输入,如果只是单纯的调用已有算子,每个算子又不断地从内存中读取写入数据,会对内存造成很大的压力,目前还没有一项技术能够减少访存,节约带宽资源。发明内容[0004]本发明的目的是提供一种异构众核架构上基于算子融合的数据复用方法,其极大减少了内存访问次数,缓解了访存压力,提高了数据的复用率,综合提升了可融合算子的效率。[0005]为达到上述目的,本发明采用的技术方案是:提供一种异构众核架构上基于算子融合的数据复用方法,将DNN算子库中依次调用的至少两个算子A、B进行功能融合,获得融合算子C,执行以下操作:S1、融合算子C从主存中读取数据到局存中,并将读取的数据作为算子A的输入;S2、算子A将获取的数据作为输入,进行相应的运算,完成算子A的功能计算,此时算子A将结果保留在局存中不写回主存;S3、算子A将局存中的计算结果传递给算子B,作为算子B的输入;S4、算子B将来自算子A的数据作为输入,进行相应的运算,完成算子B的功能运算;S5、算子B完成运算后,将最终的计算结果从局存写回主存;S6、算子C运算结束。[0006]由