CN114217807B - 一种基于异构众核架构的直接内存访问编译优化方法 - Google Patents

一种基于异构众核架构的直接内存访问编译优化方法 Download PDF

Info

Publication number
CN114217807B
CN114217807B CN202110381660.9A CN202110381660A CN114217807B CN 114217807 B CN114217807 B CN 114217807B CN 202110381660 A CN202110381660 A CN 202110381660A CN 114217807 B CN114217807 B CN 114217807B
Authority
CN
China
Prior art keywords
dispatching
primitive
copy
local memory
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110381660.9A
Other languages
English (en)
Other versions
CN114217807A (zh
Inventor
周文浩
王飞
沈莉
肖谦
武文浩
李斌
赵美佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN202110381660.9A priority Critical patent/CN114217807B/zh
Publication of CN114217807A publication Critical patent/CN114217807A/zh
Application granted granted Critical
Publication of CN114217807B publication Critical patent/CN114217807B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开一种基于异构众核架构的直接内存访问编译优化方法,包括以下步骤:S1、通过调度原语cache_read,将张量数据由主存搬移到局存;S2、通过调度原语pragma,将S11中的数据搬移操作改写为DMA GET操作;S3、通过调度原语double_buffer,将S2中的DMA GET操作优化为双缓冲模式;S4、通过调度原语pragma,在局存副本AA使用位置前插入回答字判断操作;S5、通过调度原语cache_write,将结果张量B的局存副本BB由局存搬移至主存。本发明充分利用硬件资源,最大程度实现算子的计算访存操作的重叠,从而提升深度学习负载在异构众核平台上的性能。

Description

一种基于异构众核架构的直接内存访问编译优化方法
技术领域
本发明涉及一种基于异构众核架构的直接内存访问编译优化方法,属于编译优化技术领域。
背景技术
当前深度学习模型越来越复杂,计算数据量暴增,访存逐渐成为性能优化的瓶颈,直接内存访问(DMA)方式可以很好解决该问题。直接内存访问(DMA)是一种无需CPU的参与就可以让外部设备与系统内存之间进行双向数据传输的硬件机制,完全由硬件执行I/O交换任务,数据不经过运算控制核心而直接在内存和运算核心之间进行,减少了大批量数据传输的开销,从而大大提高系统的吞吐率。
深度学习编译器的作用是将深度学习工作负载部署在特定硬件平台以高效完成训练和推理任务,其能够充分挖掘人工智能领域算法特点和模式化特征,将多种典型深度学习框架的模型转化为统一的计算图,再通过一系列领域算法指导的编译优化技术和体系结构相关的底层优化技术,生成面向不同硬件平台的高效代码,用以加速深度学习中的推理过程。TVM(Tensor Virtual Machine)是当今非常流行的一款深度学习编译器,它针对不同的深度学习框架和硬件平台,实现了统一的软件栈,以尽可能高效的方式,将不同框架下的深度学习模型部署到硬件平台。
国产异构众核处理器采用新型直接内存访问(DMA)机制,该机制不同于现有的CPU/GPU架构,采用“DMA操作+回答字判断“相结合的方式完成异步数据交换,完全由硬件执行I/O交换任务,数据不经过运算控制核心而直接在内存和运算核心之间进行,减少了大批量数据传输的开销,具有编程灵活,使用便捷的特点。但是,目前深度学习编译器TVM并不支持针对国产异构众核处理器的DMA调度优化。
发明内容
本发明的目的是提供一种基于异构众核架构的直接内存访问编译优化方法,其充分利用硬件资源,最大程度实现算子的计算访存操作的重叠,从而提升深度学习负载在异构众核平台上的性能。
为达到上述目的,本发明采用的技术方案是:提供一种基于异构众核架构的直接内存访问编译优化方法,包括以下步骤:
S1、通过调度原语cache_read,将张量数据由主存搬移到局存,具体如下:
S11、对结果张量B计算过程所依赖的张量数据A,为其定义局存副本AA,并通过调度原语cache_read将张量数据A由主存搬移到局存副本AA;
S12、将局存副本AA绑定到结果张量B计算过程的循环x的位置;
S2、通过调度原语pragma,将S11中的数据搬移操作改写为DMA GET操作,具体如下:对于局存副本AA,将其数据搬移方式由循环load改写为DMA GET操作;
S3、通过调度原语double_buffer,将S2中的DMA GET操作优化为双缓冲模式,具体如下:
S31、如果不进行双缓冲优化,则使用基本的异步DMA操作,则跳转S4;
S32、如果需要进行双缓冲优化,则在S2中调度原语pragma的基础上,将局存副本AA的DMA GET操作优化为双缓冲模式;
S4、通过调度原语pragma,在局存副本AA使用位置前插入回答字判断操作,具体如下:
S41、对于S31的情况,在局存副本AA使用位置前插入基本回答字判断操作;
S42、对于S32的情况,在局存副本AA使用位置前插入双缓冲回答字判断操作;
S5、通过调度原语cache_write,将结果张量B的局存副本BB由局存搬移至主存,具体如下:
S51、对结果张量B,为其定义局存副本BB,并且通过调度原语cache_write将局存副本BB搬移到结果张量B;
S52、将局存副本BB绑定到结果张量B计算过程的循环y的位置。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明提供了一种基于异构众核架构的直接内存访问编译优化方法,基于国产异构众核处理器的深度学习编译器TVM,通过一系列调度原语,将串行的访存操作变换为异步DMA方式,并且提供了双缓冲模式以支持具有依赖关系的计算访存优化,充分利用硬件资源,最大程度实现算子的计算访存操作的重叠,从而提升深度学习负载在异构众核平台上的性能。
附图说明
附图1为本发明编译优化方法流程图。
具体实施方式
实施例:本发明提供一种基于异构众核架构的直接内存访问编译优化方法,具体包括以下步骤:
S1、通过调度原语cache_read,将张量数据由主存搬移到局存,具体如下:
S11、对结果张量B计算过程所依赖的张量数据A,为其定义局存副本AA,并通过调度原语cache_read将张量数据A由主存搬移到局存副本AA;
S12、考虑到局存容量的限制,将局存副本AA绑定到结果张量B计算过程的循环x的位置;
S2、通过调度原语pragma,将S11中的数据搬移操作改写为DMA GET操作,具体如下:对于局存副本AA,将其数据搬移方式由循环load改写为DMA GET操作;
S3、通过调度原语double_buffer,将S2中的DMA GET操作优化为双缓冲模式,具体如下:
S31、如果不进行双缓冲优化,仅使用基本的异步DMA操作,则跳转S4;
S32、如果需要进行双缓冲优化,则在S2中调度原语pragma的基础上,将局存副本AA的DMA GET操作优化为双缓冲模式;
S4、通过调度原语pragma,在局存副本AA使用位置前插入回答字判断操作,具体如下:
S41、对于S31的情况,在局存副本AA使用位置前插入基本回答字判断操作;
S42、对于S32的情况,在局存副本AA使用位置前插入双缓冲回答字判断操作;
S5、通过调度原语cache_write,将结果张量B的局存副本BB由局存搬移至主存,具体如下:
S51、对结果张量B,为其定义局存副本BB,并且通过调度原语cache_write将局存副本BB搬移到结果张量B;
S52、考虑到局存容量的限制,将局存副本BB绑定到结果张量B计算过程的循环y的位置。
对上述实施例的进一步解释如下:
本发明提出一种基于异构众核架构的直接内存访问编译优化方法,具体流程如图1所示,主要包括将张量数据由主存搬移到局存、将数据搬移操作改写为DMA GET操作、在数据使用位置前插入回答字判断操作、将DMA GET操作优化为双缓冲模式、以及将局存数据搬移到主存五个步骤,具体如下:
S1、首先,通过调度原语cache_read,将张量数据由主存搬移到局存,具体如下:
S11、对结果张量B计算过程所依赖的张量数据A,为其定义局存副本AA,并通过调度原语cache_read将张量数据A由主存搬移到局存副本AA,相应的DSL如下:AA = s.cache_read(A, “local”, [B]);
S12、考虑到局存容量的限制,将局存副本AA绑定到结果张量B计算过程的循环x的位置,相应的DSL如下:s[AA].compute_at(s[B], x);
S2、其次,通过调度原语pragma,将S11中的数据搬移操作改写为DMA GET操作,具体如下:
S21、对于局存副本AA,将其数据搬移方式由循环load改写为DMA GET操作,相应的DSL如下:s[AA].pragma(s[AA].op.axis[0], “dma_copy”);
S3、再次,如果需要进行双缓冲优化,则通过调度原语double_buffer,将S21中的DMA GET操作优化为双缓冲模式,具体如下:
S31、如果不进行双缓冲优化,仅使用基本的异步DMA操作,则跳转S4;
S32、如果需要进行双缓冲优化,则在S2中调度原语pragma的基础上,将局存副本AA的DMA GET操作优化为双缓冲模式,相应的DSL如下:s[AA].double_buffer();
S4、再次,通过调度原语pragma,在局存副本AA使用位置前插入回答字判断操作,具体如下:
S41、对于S31的情况,在局存副本AA使用位置前插入基本回答字判断操作,相应的DSL如下:s[AA].pragma(s[AA].op.axis[0], “barrier_default 1”);
S42、对于S32的情况,在局存副本AA使用位置前插入双缓冲回答字判断操作,相应的DSL如下:s[AA].pragma(s[AA].op.axis[0], “barrier_double_buffer 1”);
S5、最后,通过调度原语cache_write,将结果张量B的局存副本BB由局存搬移至主存,具体如下:
S51、对结果张量B,为其定义局存副本BB,并且通过调度原语cache_write将局存副本BB搬移到结果张量B,相应的DSL如下:BB = s.cache_write(B, “local”);
S52、考虑到局存容量的限制,将局存副本BB绑定到结果张量B计算过程的循环y的位置,相应的DSL如下:s[BB].compute_at(s[B], y)。
采用上述一种基于异构众核架构的直接内存访问编译优化方法时,其基于国产异构众核处理器的深度学习编译器TVM,通过一系列调度原语,将串行的访存操作变换为异步DMA方式,并且提供了双缓冲模式以支持具有依赖关系的计算访存优化,充分利用硬件资源,最大程度实现算子的计算访存操作的重叠,从而提升深度学习负载在异构众核平台上的性能。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
编译:将源程序(高级语言)翻译成目标程序(低级语言或机器语言)的过程。
异构众核:采用新型的片上异构融合体系结构。
深度神经网络:有很多隐藏层的神经网络,又称为深度前馈网络或多层感知机。
TVM:Tensor Virtual Machine,亚马逊公司推出的一款深度学习编译器,能够将深度学习工作负载部署在特定硬件平台以高效完成推理任务。
直接内存访问:Direct Memory Access,由硬件执行I/O交换任务,数据不经过CPU,直接由源地址批量搬运到目的地址。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (1)

1.一种基于异构众核架构的直接内存访问编译优化方法,其特征在于,包括以下步骤:
S1、通过调度原语cache_read,将张量数据由主存搬移到局存,具体如下:
S11、对结果张量B计算过程所依赖的张量数据A,为其定义局存副本AA,并通过调度原语cache_read将张量数据A由主存搬移到局存副本AA;
S12、将局存副本AA绑定到结果张量B计算过程的循环x的位置;
S2、通过调度原语pragma,将S11中的数据搬移操作改写为DMA GET操作,具体如下:对于局存副本AA,将其数据搬移方式由循环load改写为DMA GET操作;
S3、通过调度原语double_buffer,将S2中的DMA GET操作优化为双缓冲模式,具体如下:
S31、如果不进行双缓冲优化,则使用基本的异步DMA操作,则跳转S4;
S32、如果需要进行双缓冲优化,则在S2中调度原语pragma的基础上,将局存副本AA的DMA GET操作优化为双缓冲模式;
S4、通过调度原语pragma,在局存副本AA使用位置前插入回答字判断操作,具体如下:
S41、对于S31的情况,在局存副本AA使用位置前插入基本回答字判断操作;
S42、对于S32的情况,在局存副本AA使用位置前插入双缓冲回答字判断操作;
S5、通过调度原语cache_write,将结果张量B的局存副本BB由局存搬移至主存,具体如下:
S51、对结果张量B,为其定义局存副本BB,并且通过调度原语cache_write将局存副本BB搬移到结果张量B;
S52、将局存副本BB绑定到结果张量B计算过程的循环y的位置。
CN202110381660.9A 2021-04-09 2021-04-09 一种基于异构众核架构的直接内存访问编译优化方法 Active CN114217807B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110381660.9A CN114217807B (zh) 2021-04-09 2021-04-09 一种基于异构众核架构的直接内存访问编译优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110381660.9A CN114217807B (zh) 2021-04-09 2021-04-09 一种基于异构众核架构的直接内存访问编译优化方法

Publications (2)

Publication Number Publication Date
CN114217807A CN114217807A (zh) 2022-03-22
CN114217807B true CN114217807B (zh) 2024-04-30

Family

ID=80695900

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110381660.9A Active CN114217807B (zh) 2021-04-09 2021-04-09 一种基于异构众核架构的直接内存访问编译优化方法

Country Status (1)

Country Link
CN (1) CN114217807B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116484947B (zh) * 2023-06-25 2023-09-08 上海燧原科技有限公司 算子的自动生成方法、装置、设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487911A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种基于编译指导的众核数据分片方法
CN112527262A (zh) * 2019-09-19 2021-03-19 无锡江南计算技术研究所 深度学习框架编译器宽度非一致自动向量优化方法
CN112558977A (zh) * 2019-09-25 2021-03-26 无锡江南计算技术研究所 面向异构众核后端基于代价模型的多面体优化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487911A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种基于编译指导的众核数据分片方法
CN112527262A (zh) * 2019-09-19 2021-03-19 无锡江南计算技术研究所 深度学习框架编译器宽度非一致自动向量优化方法
CN112558977A (zh) * 2019-09-25 2021-03-26 无锡江南计算技术研究所 面向异构众核后端基于代价模型的多面体优化方法

Also Published As

Publication number Publication date
CN114217807A (zh) 2022-03-22

Similar Documents

Publication Publication Date Title
CN112465108B (zh) 一种面向存算一体平台的神经网络编译方法
CN107844294B (zh) 一种高可用的合约执行方法及系统
CN113139648B (zh) 执行神经网络模型的pim架构的数据布局优化
CN107169563A (zh) 应用于二值权重卷积网络的处理系统及方法
CN104067225B (zh) 对用于图形处理单元的具有相关联的纹理加载指令的控制流指令的判定
CN104965761A (zh) 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法
WO2021000971A1 (zh) 操作数据的生成方法、装置及相关产品
CN113031966B (zh) 一种智能选择编译加速库的深度学习编译优化方法
CN114217807B (zh) 一种基于异构众核架构的直接内存访问编译优化方法
CN112506523A (zh) Bert模型的优化方法及系统、电子设备及存储介质
CN101021831A (zh) 面向科学计算的64位流处理器芯片体系结构
CN102004662A (zh) 嵌入式可裁剪式虚拟机
CN111831285B (zh) 一种面向内存计算平台的代码转换方法、系统及应用
CN116822600A (zh) 一种基于risc-v架构的神经网络搜索芯片
CN201237713Y (zh) 嵌入式一体化工控机
Lin et al. swFLOW: A dataflow deep learning framework on sunway taihulight supercomputer
CN110399596A (zh) 一种文件格式转换方法、系统及相关组件
Chen Distributed intelligence for user-oriented computing
WO2022078400A1 (zh) 一种对多维数据进行处理的设备、方法和计算机程序产品
CN114253545A (zh) 一种基于编译的神经网络异构众核多层次资源映射方法
Joyner et al. Iterators in chapel
CN112906877A (zh) 用于执行神经网络模型的存储器架构中的数据布局有意识处理
CN115061693B (zh) 存内计算代码与微体系结构优化方法、装置及计算设备
US11809849B1 (en) Global modulo allocation in neural network compilation
TWI776338B (zh) 應用於圖形處理器的編譯器及非暫態電腦可讀式儲存媒體

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant