CN112214304A - 内存调度方法及装置 - Google Patents

内存调度方法及装置 Download PDF

Info

Publication number
CN112214304A
CN112214304A CN201910615139.XA CN201910615139A CN112214304A CN 112214304 A CN112214304 A CN 112214304A CN 201910615139 A CN201910615139 A CN 201910615139A CN 112214304 A CN112214304 A CN 112214304A
Authority
CN
China
Prior art keywords
memory space
core
target
target task
subtask
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.)
Withdrawn
Application number
CN201910615139.XA
Other languages
English (en)
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910615139.XA priority Critical patent/CN112214304A/zh
Publication of CN112214304A publication Critical patent/CN112214304A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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

Landscapes

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

Abstract

本公开涉及一种内存调度方法及装置。所述装置包括控制模块,所述控制模块包括:指令缓存子模块、指令处理子模块和存储队列子模块;所述指令缓存子模块,用于存储所述人工神经网络运算关联的计算指令;所述指令处理子模块,用于对所述计算指令解析得到多个运算指令;所述存储队列子模块,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。通过以上方法,本公开可以提高相关产品在进行神经网络模型的运算时的运算效率。

Description

内存调度方法及装置
技术领域
本公开涉及计算机技术领域,尤其涉及一种内存调度方法及装置。
背景技术
内存(Memory)是计算机中存储程序以及数据的地方,它是诸如中央处理器(CPU,Central Processing Unit)等通用处理器,以及诸如GPU(图形处理器,GraphicsProcessing Unit)、IPU(图像处理器,Image Processing Unit)等人工智能处理器之间的沟通的桥梁,计算机中几乎所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。相关技术中,电子设备为了提高人工智能处理器的性能和吞吐率多采用多核设计,然而,人工智能处理器的各核访问内存时,各核之间会出现访问竞争,导致各核访问内存效率低下,访问数据的安全性受到威胁。
发明内容
有鉴于此,本公开提出了一种内存调度方法及装置。
根据本公开的一方面,提供了一种内存调度方法,所述方法应用于具备多核人工智能处理器的电子设备中,所述方法包括:
在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间;
在执行完毕所述目标任务后,释放所述对应的内存空间。
根据本公开的另一方面,提供了一种内存调度装置,所述装置包括:
确定模块,用于在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间;
释放模块,用于在执行完毕所述目标任务后,释放所述对应的内存空间。
根据本公开的另一方面,提供了一种内存调度装置,所述装置应用于具备多核人工智能处理器的电子设备中,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
本公开实施例通过在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行目标任务所需内存空间的大小,从目标内存空间中为目标任务分配对应的内存空间;在执行完毕目标任务后,释放对应的内存空间,由此可以根据任意一核执行任务时实际使用的内存空间大小,动态的为该核分配内存空间,提高了内存空间的利用率,有效减少了内存空间的浪费,此外,本公开实施例还可以使任意一核在执行任务时可以具有独立访存的内存空间,有效减少核与核访问内存冲突,确保了任意一核访问数据的安全性和准确性,无需额外指令为每个核申请和释放内存,提升人工智能处理器访问内存的效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的组合处理装置的框图。
图2示出根据本公开一实施例的板卡的结构示意图。
图3是根据一示例性实施例示出的一种内存调度方法的流程图。
图4是根据一示例性实施例示出的一种内存调度方法的流程图。
图5是根据一示例性实施例示出的一种内存调度方法的流程图。
图6是根据一示例性实施例示出的一种内存调度装置的框图。
图7是根据一示例性实施例示出的一种内存调度装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
应当理解,本公开的“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
由于神经网络算法在图像识别、语音识别、自然语言处理等领域中的使用越来越广泛,使得神经网络算法的复杂度越来越高,所涉及的数据运算种类和数量不断增大。人工智能处理器在利用神经网络算法进行数据运算的过程中需要频繁的为人工智能处理器的各个核锁定和释放内存资源,以保证各核对内存资源的合理利用。相关技术中,编程人员会为每个核固定的分配一块内存,这使得人工智能处理器对内存资源进行锁定和释放的方式、速度和效率,难以与数据运算过程中的内存资源锁放需求相匹配,锁放速度慢、效率低。
图1示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图1所示,该组合处理装置可以包括人工智能处理器(该人工智能处理器可以为多核人工智能处理器)、通用处理器以及存储装置,人工智能处理器可以通过通用互联接口与通用处理器连接,通用处理器可以向人工智能处理器的每个核下发任务,人工智能处理器的每个核可以执行接收到任务,并将执行结果返回至通用处理器。存储装置可以分别与人工智能处理器和通用处理器连接,该存储装置可以用于保存人工智能处理器和通用处理器的数据,尤其适用于所需要运算的数据在人工智能处理器或通用处理器的内部存储中无法全部保存的数据。
在一种可能的实现方式中,通用处理器可以通过执行上述内存调度方法,为人工智能处理器的任意一个核分配存储资源。
在另一中可能的实现方式中,人工智能处理器可以通过执行上述内存调度方法,为该人工智能处理器自身的任意一个核分配存储资源。需要说明的是,本公开实施例对上述内存调度方法的执行主体不做限定。
通用处理器可以例如包括CPU等硬件处理器,本公开实施例对通用处理器的类型不做限定。
人工智能处理器可以例如包括NPU(Neural-Network Processing Unit,神经网络处理单元)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片、控制器、微控制器、微处理器中的一种或多种。本公开实施例对人工智能处理器的具体结构和型号不做限定。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,Wi-Fi接口。
本公开提供一种机器学习芯片,该芯片包括上述组合处理装置。
本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
本公开提供一种板卡,图2示出根据本公开一实施例的板卡的结构示意图。如图2所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392。
存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是DDR SDRAM(Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。
在一个实施例中,存储器件390可以包括4组存储单元393。每一组存储单元393可以包括多个DDR4颗粒(芯片)。在一个实施例中,机器学习芯片389内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组存储单元393中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组存储单元393包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在机器学习芯片389中设置控制DDR的控制器,用于对每个存储单元393的数据传输与数据存储的控制。
接口装置391与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)电连接。接口装置391用于实现机器学习芯片389与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置391可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至机器学习芯片289,实现数据转移。优选的,当采用PCIE 3.0 X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置391还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
控制器件392与机器学习芯片389电连接。控制器件392用于对机器学习芯片389的状态进行监控。具体的,机器学习芯片389与控制器件392可以通过SPI接口电连接。控制器件392可以包括单片机(Micro Controller Unit,MCU)。如机器学习芯片389可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,机器学习芯片389可以处于多负载和轻负载等不同的工作状态。通过控制器件可以实现对机器学习芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
本公开提供一种电子设备,该电子设备包括上述机器学习芯片或板卡。
电子设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。交通工具可以包括飞机、轮船和/或车辆。家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机。医疗设备可以包括核磁共振仪、B超仪和/或心电图仪。
图3是根据一示例性实施例示出的一种内存调度方法的流程图。该方法可以应用于具备多核人工智能处理器的电子设备中,如图3所示,该方法可以包括:
步骤300,在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间。
步骤301,在执行完毕所述目标任务后,释放所述对应的内存空间。
在本公开实施例中,人工智能处理器的任意一个核可以针对接收到的任务启动核计算(launch kernel),其中,核计算可以表示该人工智能处理器核执行接收到的任务的过程。
作为本实施例的一个示例,通用处理器可以在人工智能处理器的任意一核针对接收到的目标任务启动核计算之前(例如,核启动核计算之前可以表示为,该核接收到目标任务,且该核处于空闲状态),确定该核执行目标任务所预计需要占用的内存空间大小(例如,调度器可以根据待执行的目标任务所涉及的数据规模,估算得到该核执行该目标任务所需要占用的内存空间大小),通用处理器可以根据人工智能处理器的任意一核核执行目标任务所预计需要占用的内存空间大小,从目标内存空间中申请用于该核执行该目标任务时访问的内存空间,通用处理器可以在任意一核执行完毕接收到目标任务时(例如,核执行完毕接收到目标任务可以表示为,该核执行完毕目标任务,且没有接收新的任务),释放该核执行该目标任务时访问的内存空间。
例如,若目标内存空间大小为100MB,且通用处理器确定人工智能处理器的某个核执行待执行的目标任务预计需要占用50MB内存空间,则通用处理器可以从100MB目标内存空间中为该核申请50MB内存空间,该核可以在执行该目标任务时访问该50MB内存空间。通用处理器可以在判断该核执行完毕该目标任务时,释放该50MB内存空间。
本公开实施例通过在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行目标任务所需内存空间的大小,从目标内存空间中为目标任务分配对应的内存空间;在执行完毕目标任务后,释放对应的内存空间,由此可以根据任意一核执行任务时实际使用的内存空间大小,动态的为该核分配内存空间,提高了内存空间的利用率,有效减少了内存空间的浪费,此外,本公开实施例还可以使任意一核在执行任务时可以具有独立访存的内存空间,有效减少核与核访问内存冲突,确保了任意一核访问数据的安全性和准确性,无需额外指令为每个核申请和释放内存,提升人工智能处理器访问内存的效率。
在一种可能的实现方式中,在步骤300之前,通用处理器可以初始化人工智能处理器,并为人工智能处理器的每个核分配目标内存空间,作为该核的固定的私有内存空间,换言之,通用处理器可以预先为每个核分配固定的私有内存空间,每个核在执行接收到的任务时,可以独立的访问对应的目标内存空间。例如,若人工智能处理器有32个核,内存空间大小为4GB(吉字节,Gigabyte),则通用处理器可以预先为每个核分配100MB(兆字节,Mbyte)大小的目标内存空间,作为该核的固定的私有内存空间。接着,通用处理器在任意一核开始执行目标任务时,可以根据执行目标任务所需内存空间的大小,从该核专有的100MB内存空间中,为目标任务分配对应的内存空间。
需要说明的是,可以根据经验值来确定分配给各个核的目标内存空间的大小。各个核的目标内存空间大小可以相同也可以不同。本公开实施例对人工智能处理器的每个核对应的目标内存空间的大小不做限定。
由于人工智能处理器的多个核协作工作的状态下,每个核的工作状态可以在执行运算和数据交换之间往复切换,因此本公开实施例的通用处理器为每个核分配固定的私有目标内存空间,可以有效避免核与核待分配的内存空间发生访问内存冲突,进一步确保了每个核访问数据的安全性和准确性。
在另一种可能的实现方式中,在步骤300之前,通用处理器可以从各核共享的内存空间中,为任意一个执行任务的核分配所述目标内存空间,作为该核执行目标任务时的私有内存空间,在该核执行完毕所述目标任务后,释放所述目标内存空间。例如,若人工智能处理器有32个核,各核共享的内存空间大小为4GB,则通用处理器可以在任意一个核执行目标任务之前,为该核分配100MB大小的目标内存空间,接着,通用处理器在该核开始执行目标任务时,可以根据执行所述目标任务所需内存空间的大小,从该核专有的100MB内存空间中,为目标任务分配对应的内存空间。通用处理器可以在该核执行完毕该目标任务之后,释放该100MB的目标内存空间。
这样,本公开实施例可以在人工智能处理器的任意一个核执行任务时,为该核分配独立的内存空间,既可以有效避免核与核待分配的内存空间发生访问内存冲突,确保数据的安全性和准确性,又能够在该核执行完任务时,释放该目标内存空间,节省内存资源,使得内存的分配更加灵活的适应任意一个核的实时工作状态,由此进一步提升人工智能处理器访问内存的效率。
在另一种可能的实现方式中,目标内存空间也可以为各核共享的内存空间。
在一种可能的实现方式中,可以将为人工智能处理器的每个核分配的内存空间的物理地址映射到虚拟地址空间,并在任意一核执行接收到的任务前,将该映射关系配置到人工智能处理器的寄存器中。该核在执行任务时可从寄存器中读取地址,采用寄存器间接访问所分配的内存空间。需要说明的是,本公开实施例对人工智能处理器的各核访问内存的方式不做限定。
在一种可能的实现方式中,所述目标任务包括多个顺序执行的子任务。
图4是根据一示例性实施例示出的一种内存调度方法的流程图。如图4所示,图4与图3之间的区别在于,步骤300可以包括:
步骤400,确定执行各所述子任务所需内存空间中的最大值。
步骤401,根据所述最大值,从目标内存空间中为所述目标任务分配对应的内存空间。
举例来讲,目标任务可以包括多个子任务,接收该目标任务的核在执行该目标任务的过程中,可以顺序执行该目标任务所包含的各个子任务。通用处理器可以在该核执行目标任务之前,确定该核执行目标任务所包含的各子任务所需内存空间中的最大值。通用处理器可以从目标内存空间中,为目标任务分配容量与最大值相同的内存空间,作为该核执行目标任务时独立访问的内存空间。例如,若核的目标内存空间的大小为100MB,目标任务表示为指示该核根据x=a,函数y=k*x+b,计算y的值(其中,x可以为变量,a可以为x的取值,y可以为x的函数,k、b可以为常量),则该核在执行该目标任务时可以先执行第一子任务,计算得到k*a的值c,其中c可以为目标任务的中间值,接着,该核可以执行第二子任务,计算得到c+b的值得到y。若通用处理器在该核执行目标任务之前,确定该核执行第一子任务时预计占用的内存空间为20MB,该核执行第二子任务时预计占用的内存空间为10MB,则通用处理器可以从该核对应的100MB目标内存空间中为目标任务分配20MB的内存空间。通用处理器可以在判断该核执行完毕该目标任务时,释放该20MB内存空间。
在本公开实施例中,将目标任务包含的各子任务所需内存空间中的最大值,作为分配给目标任务的内存空间,使得任意一核在执行目标任务的各个子任务的过程中所需内存空间均不会超出分配给该核的内存空间,由此避免出现内存不够用的现象,这样,本公开实施例既可以根据任意一核运行时实际使用的内存空间大小,动态的为该核分配内存空间,又可以避免出现分配给该核的内存空间不够用的现象发生。
图5是根据一示例性实施例示出的一种内存调度方法的流程图。所述目标任务包括多个子任务,如图5所示,图5与图1之间的区别在于,
步骤300可以包括:
步骤500,针对每个子任务,确定执行该子任务所需内存空间的大小。
步骤501,根据执行该子任务所需内存空间的大小,从所述目标内存空间中为该子任务分配对应的内存空间。
步骤301还可以包括:
步骤502,在执行完毕该子任务后,释放该子任务对应的内存空间。
举例来讲,通用处理器可以在任意一核执行目标任务之前,确定该核执行目标任务所包含的各子任务所需内存空间大小。通用处理器可以在该核执行每个子任务之前,从该核对应的目标内存空间中,申请容量与确定的该核执行该子任务所需内存空间大小相同的内存空间,作为该核执行该子任务时访问的内存空间。通用处理器可以在该核执行完毕该子任务时,释放该核执行该子任务时访问的内存空间。在该核执行目标任务的各子任务的过程中,通用处理器可以重复上述步骤,直至判断该核执行目标任务完毕。例如,若目标任务为指示核根据x=a,函数y=k*x+b,计算y的值(其中,x可以为变量,a可以为x的取值,y可以为x的函数,k、b可以为常量),则该核在执行该目标任务时可以先执行第一子任务,计算得到k*a的值c,其中c可以为目标任务的中间值,接着,该核可以执行第二子任务,计算得到c+b的值得到y,若通用处理器在该核执行目标任务之前确定,该核执行第一子任务时预计占用的内存空间为20MB,该核执行第二子任务时预计占用的内存空间为10MB,则通用处理器可以在该核执行第一子任务之前,从该核对应的100MB目标内存空间中为该核申请20MB内存空间,该核可以在执行第一子任务时访问该20MB内存空间。通用处理器可以在判断该核执行完毕第一子任务时,释放该20MB内存空间。通用处理器可以在该核执行第二子任务之前,从该核对应的100MB目标内存空间中为该核申请10MB内存空间,该核可以在执行第二子任务时访问该10MB内存空间。通用处理器可以在判断该核执行完毕第二子任务时,释放该10MB内存空间。
本公开实施例根据任意一核执行各子任务时实际使用的内存空间大小,动态的为任意一核执行子任务分配内存空间,可以使得针对该核的动态内存分配,更贴近于该核执行任务所占用的内存空间的变化,既能够避免出现分配给该核的内存空间不够用的现象发生,又能够进一步减少内存空间的浪费,提高内存空间的利用率。
在一种可能的实现方式中,所述目标任务对应的内存空间的内存地址连续排列。
由于人工智能处理器的任意一核在访问一块连续的内存地址时,无需跨越多个地址来往存取,节省了访存时间,因此,为目标任务分配内存地址连续排列的内存空间可以进一步提高核访问内存的效率。
在一种可能的实现方式中,各所述子任务对应的内存空间的内存地址连续排列。
由于人工智能处理器的任意一核在访问一块连续的内存地址时,无需跨越多个地址来往存取,节省了访存时间,因此,为各个子任务分配内存地址连续排列的内存空间可以进一步提高核访问内存的效率。
在一种应用示例中:
人工智能处理器可以具有32个核,本地内存空间大小可以为4GB。
通用处理器可以在初始化人工智能处理器的过程中,为人工智能处理器的每个核分配100MB大小的目标内存空间,作为每个核的固定的私有内存空间。
若目标任务表示为指示一个核根据x=a,函数y=k*x+b,计算y的值(其中,x可以为变量,a可以为x的取值,y可以为x的函数,k、b可以为常量),则这个核在执行该目标任务时可以先执行第一子任务,计算得到k*a的值c,其中c可以为目标任务的中间值,接着,这个核可以执行第二子任务,计算得到c+b的值得到y,通用处理器确定这个核执行第一子任务(计算得到k*a的值c)所需内存空间大小为的20MB,这个核执行第二子任务(计算c+b的值y)所需内存空间大小为的10MB,则通用处理器可以在这个核执行第一子任务之前,从该这个核对应的100MB目标内存空间中为这个核申请20MB内存空间,这个核可以在执行第一子任务时访问该20MB内存空间,通用处理器可以在判断这个核执行完毕第一子任务时,释放该20MB内存空间;通用处理器可以在这个核执行第二子任务之前,从该这个核对应的100MB目标内存空间中为该这个核申请10MB内存空间,这个核可以在执行第二子任务时访问该10MB内存空间。通用处理器可以在判断该这个核执行完毕第二子任务时,释放该10MB内存空间。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图6是根据一示例性实施例示出的一种内存调度装置的框图。该装置可以应用于具备多核人工智能处理器的电子设备中,如图6所示,该装置可以包括:
确定模块61,用于在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间;
释放模块62,用于在执行完毕所述目标任务后,释放所述对应的内存空间。
图7是根据一示例性实施例示出的一种内存调度装置的框图。为了便于说明,在图7中仅展示出了与本实施例相关的部分。图7中标号与图6相同的组件具有相同的功能,为了简明起见,省略对这些组件的详细说明。如图所示,
在一种可能的实现方式中,所述目标任务包括多个顺序执行的子任务,所述确定模块61包括:
第一确定子模块611,用于确定执行各所述子任务所需内存空间中的最大值;
第一分配子模块612,用于根据所述最大值,从目标内存空间中为所述目标任务分配对应的内存空间。
在一种可能的实现方式中,所述目标任务包括多个顺序执行的子任务,所述确定模块61包括:
第二确定子模块613,用于针对每个子任务,确定执行该子任务所需内存空间的大小;
第二分配子模块614,用于根据执行该子任务所需内存空间的大小,从所述目标内存空间中为该子任务分配对应的内存空间;
所述释放模块62包括:
释放子模块621,用于在执行完毕该子任务后,释放该子任务对应的内存空间。
在一种可能的实现方式中,所述目标任务对应的内存空间的内存地址连续排列。
在一种可能的实现方式中,各所述子任务对应的内存空间的内存地址连续排列。
在一种可能的实现方式中,所述装置还包括:
第一分配模块63,用于为人工智能处理器的每个核分配所述目标内存空间,作为该核的固定的私有内存空间;或者
第二分配模块64,用于从各核共享的内存空间中为执行所述目标任务的核分配所述目标内存空间,作为该核执行所述目标任务时的私有内存空间,在该核执行完毕所述目标任务后,释放所述目标内存空间。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在本公开所提供的实施例中,应该理解到,所揭露的系统、装置,可通过其它的方式实现。例如,以上所描述的系统、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
依据以下条款可更好地理解前述内容:
条款A1,提供了一种内存调度方法,所述方法包括:
在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间;
在执行完毕所述目标任务后,释放所述对应的内存空间。
条款A2,根据条款A1所述的方法,所述目标任务包括多个顺序执行的子任务,根据执行目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间,包括:
确定执行各所述子任务所需内存空间中的最大值;
根据所述最大值,从目标内存空间中为所述目标任务分配对应的内存空间。
条款A3,根据条款A1所述的方法,所述目标任务包括多个顺序执行的子任务,根据执行目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间,包括:
针对每个子任务,确定执行该子任务所需内存空间的大小;
根据执行该子任务所需内存空间的大小,从所述目标内存空间中为该子任务分配对应的内存空间;
在执行完毕所述目标任务后,释放所述对应的内存空间,包括:
在执行完毕该子任务后,释放该子任务对应的内存空间。
条款A4,根据条款A1所述的方法,所述目标任务对应的内存空间的内存地址连续排列。
条款A5,根据权利要求A2或A3所述的方法,各所述子任务对应的内存空间的内存地址连续排列。
条款A6,根据条款A1所述的方法,所述方法还包括:
为人工智能处理器的每个核分配所述目标内存空间,作为该核的固定的私有内存空间;或者
从各核共享的内存空间中为执行所述目标任务的核分配所述目标内存空间,作为该核执行所述目标任务时的私有内存空间,在该核执行完毕所述目标任务后,释放所述目标内存空间。
条款A7,一种内存调度装置,其特征在于,所述装置包括:
确定模块,用于在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间;
释放模块,用于在执行完毕所述目标任务后,释放所述对应的内存空间。
条款A8,根据条款A7所述的装置,所述目标任务包括多个顺序执行的子任务,所述确定模块包括:
第一确定子模块,用于确定执行各所述子任务所需内存空间中的最大值;
第一分配子模块,用于根据所述最大值,从目标内存空间中为所述目标任务分配对应的内存空间。
条款A9,根据条款A7所述的装置,所述目标任务包括多个顺序执行的子任务,所述确定模块包括:
第二确定子模块,用于针对每个子任务,确定执行该子任务所需内存空间的大小;
第二分配子模块,用于根据执行该子任务所需内存空间的大小,从所述目标内存空间中为该子任务分配对应的内存空间;
所述释放模块包括:
释放子模块,用于在执行完毕该子任务后,释放该子任务对应的内存空间。
条款A10,根据条款A7所述的装置,所述目标任务对应的内存空间的内存地址连续排列。
条款A11,根据条款A8或条款A9所述的装置,各所述子任务对应的内存空间的内存地址连续排列。
条款A12,根据条款A7所述的装置,所述装置还包括:
第一分配模块,用于为人工智能处理器的每个核分配所述目标内存空间,作为该核的固定的私有内存空间;或者
第二分配模块,用于从各核共享的内存空间中为执行所述目标任务的核分配所述目标内存空间,作为该核执行所述目标任务时的私有内存空间,在该核执行完毕所述目标任务后,释放所述目标内存空间。
条款A13,一种内存调度装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
执行条款A1至条款A5中任意一项所述的方法。
条款A14,一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现条款A1至5中任意一项所述的方法。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。

Claims (14)

1.一种内存调度方法,所述方法应用于具备多核人工智能处理器的电子设备中,其特征在于,所述方法包括:
在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间;
在执行完毕所述目标任务后,释放所述对应的内存空间。
2.根据权利要求1所述的方法,其特征在于,所述目标任务包括多个顺序执行的子任务,根据执行目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间,包括:
确定执行各所述子任务所需内存空间中的最大值;
根据所述最大值,从目标内存空间中为所述目标任务分配对应的内存空间。
3.根据权利要求1所述的方法,其特征在于,所述目标任务包括多个顺序执行的子任务,根据执行目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间,包括:
针对每个子任务,确定执行该子任务所需内存空间的大小;
根据执行该子任务所需内存空间的大小,从所述目标内存空间中为该子任务分配对应的内存空间;
在执行完毕所述目标任务后,释放所述对应的内存空间,包括:
在执行完毕该子任务后,释放该子任务对应的内存空间。
4.根据权利要求1所述的方法,其特征在于,所述目标任务对应的内存空间的内存地址连续排列。
5.根据权利要求2或3所述的方法,其特征在于,各所述子任务对应的内存空间的内存地址连续排列。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为人工智能处理器的每个核分配所述目标内存空间,作为该核的固定的私有内存空间;或者
从各核共享的内存空间中为执行所述目标任务的核分配所述目标内存空间,作为该核执行所述目标任务时的私有内存空间,在该核执行完毕所述目标任务后,释放所述目标内存空间。
7.一种内存调度装置,所述装置应用于具备多核人工智能处理器的电子设备中,其特征在于,所述装置包括:
确定模块,用于在所述多核人工智能处理器的任意一核开始执行目标任务时,根据执行所述目标任务所需内存空间的大小,从目标内存空间中为所述目标任务分配对应的内存空间;
释放模块,用于在执行完毕所述目标任务后,释放所述对应的内存空间。
8.根据权利要求7所述的装置,其特征在于,所述目标任务包括多个顺序执行的子任务,所述确定模块包括:
第一确定子模块,用于确定执行各所述子任务所需内存空间中的最大值;
第一分配子模块,用于根据所述最大值,从目标内存空间中为所述目标任务分配对应的内存空间。
9.根据权利要求7所述的装置,其特征在于,所述目标任务包括多个顺序执行的子任务,所述确定模块包括:
第二确定子模块,用于针对每个子任务,确定执行该子任务所需内存空间的大小;
第二分配子模块,用于根据执行该子任务所需内存空间的大小,从所述目标内存空间中为该子任务分配对应的内存空间;
所述释放模块包括:
释放子模块,用于在执行完毕该子任务后,释放该子任务对应的内存空间。
10.根据权利要求7所述的装置,其特征在于,所述目标任务对应的内存空间的内存地址连续排列。
11.根据权利要求8或9所述的装置,其特征在于,各所述子任务对应的内存空间的内存地址连续排列。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一分配模块,用于为人工智能处理器的每个核分配所述目标内存空间,作为该核的固定的私有内存空间;或者
第二分配模块,用于从各核共享的内存空间中为执行所述目标任务的核分配所述目标内存空间,作为该核执行所述目标任务时的私有内存空间,在该核执行完毕所述目标任务后,释放所述目标内存空间。
13.一种内存调度装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
执行权利要求1至6中任意一项所述的方法。
14.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至6中任意一项所述的方法。
CN201910615139.XA 2019-07-09 2019-07-09 内存调度方法及装置 Withdrawn CN112214304A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910615139.XA CN112214304A (zh) 2019-07-09 2019-07-09 内存调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910615139.XA CN112214304A (zh) 2019-07-09 2019-07-09 内存调度方法及装置

Publications (1)

Publication Number Publication Date
CN112214304A true CN112214304A (zh) 2021-01-12

Family

ID=74048443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910615139.XA Withdrawn CN112214304A (zh) 2019-07-09 2019-07-09 内存调度方法及装置

Country Status (1)

Country Link
CN (1) CN112214304A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141315A (zh) * 2007-10-11 2008-03-12 上海交通大学 网络资源调度仿真系统
CN101799773A (zh) * 2010-04-07 2010-08-11 福州福昕软件开发有限公司 并行计算的内存访问方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141315A (zh) * 2007-10-11 2008-03-12 上海交通大学 网络资源调度仿真系统
CN101799773A (zh) * 2010-04-07 2010-08-11 福州福昕软件开发有限公司 并行计算的内存访问方法

Similar Documents

Publication Publication Date Title
CN110119807B (zh) 运算方法、装置、计算机设备和存储介质
CN111079909B (zh) 运算方法、系统及相关产品
CN112214304A (zh) 内存调度方法及装置
CN111078284B (zh) 运算方法、系统及相关产品
CN111078291B (zh) 运算方法、系统及相关产品
CN111340202A (zh) 运算方法、装置及相关产品
CN113326118A (zh) 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备
CN111353595A (zh) 运算方法、装置及相关产品
CN111382850A (zh) 运算方法、装置及相关产品
CN111381872A (zh) 运算方法、装置及相关产品
CN111079910B (zh) 运算方法、装置及相关产品
CN111079907B (zh) 运算方法、装置及相关产品
CN111275197B (zh) 运算方法、装置、计算机设备和存储介质
CN111078283B (zh) 运算方法、装置及相关产品
CN111078282B (zh) 运算方法、装置及相关产品
CN111079912B (zh) 运算方法、系统及相关产品
CN111078125B (zh) 运算方法、装置及相关产品
CN111399905B (zh) 运算方法、装置及相关产品
CN111124497B (zh) 运算方法、装置、计算机设备和存储介质
CN111078280B (zh) 运算方法、装置及相关产品
CN111079915B (zh) 运算方法、装置及相关产品
CN111079913B (zh) 运算方法、装置及相关产品
CN111723919A (zh) 数据处理方法、装置及相关产品
CN111047027A (zh) 运算方法、装置及相关产品
CN111045729A (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
WW01 Invention patent application withdrawn after publication

Application publication date: 20210112

WW01 Invention patent application withdrawn after publication