CN113515483A - 一种数据传输方法及装置 - Google Patents

一种数据传输方法及装置 Download PDF

Info

Publication number
CN113515483A
CN113515483A CN202010277567.9A CN202010277567A CN113515483A CN 113515483 A CN113515483 A CN 113515483A CN 202010277567 A CN202010277567 A CN 202010277567A CN 113515483 A CN113515483 A CN 113515483A
Authority
CN
China
Prior art keywords
coprocessor
subtask
processor
data
storage address
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.)
Pending
Application number
CN202010277567.9A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010277567.9A priority Critical patent/CN113515483A/zh
Priority to EP21783757.4A priority patent/EP4123467A4/en
Priority to PCT/CN2021/085798 priority patent/WO2021204147A1/zh
Publication of CN113515483A publication Critical patent/CN113515483A/zh
Priority to US17/961,790 priority patent/US20230038051A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

本申请提供一种数据传输方法及装置,用以提升协处理器之间的数据传输效率,从而匹配AI系统算力。该方法应用于包括至少两个协处理器的计算机系统,比如包括第一协处理器和第二协处理器。第一协处理器和第二协处理器之间部署共享内存,用于存储各自执行子任务产生的数据。进一步的,该共享内存还存储有执行子任务产生的数据的存储地址、各个子任务以及执行子任务的协处理器之间的映射关系。从而,协处理器所要读取的数据的存储地址可以通过该映射关系查找到,进而可以直接在共享内存中读取数据,无需通过系统总线拷贝数据,提高协处理器之间的数据传输效率。

Description

一种数据传输方法及装置
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种数据传输方法及装置。
背景技术
人工智能(artificial intelligence,AI)在语音识别和计算机视觉等应用领域均取得重大突破。这也促使传统的由中央处理器(central processing unit,CPU)组成的AI系统被由CPU+加速器(比如图像处理器(graphics processing units,GPU)和/或神经网络处理器(neural-network processing unit,NPU))组成的AI系统所取代。在AI系统中,CPU与加速器之间通过系统总线建立连接。如果加速器需要获取另一个加速器的数据,需要借助CPU通过系统总线进行多次的数据拷贝,比如先将数据从一个加速器拷贝到CPU,再从CPU拷贝到另一个加速器。由于系统总线支持的带宽的增长速度较缓慢,导致加速器与加速器之间数据的传输效率无法匹配AI系统的算力(即计算能力)的提升。
因此,实现高速数据传输来匹配AI系统算力的增长,进而提升AI系统整体性能是急需解决的问题。
发明内容
本申请实施例提供一种数据传输方法及装置,用以提升数据传输效率,从而匹配AI系统算力。
下面通过不同的方面介绍该方法以及应用该方法的装置等。以下各个方面的实现方式和有益效果可以互相参考。
第一方面,本申请提供一种数据传输方法,该方法应用于包括至少两个协处理器的计算机系统。比如包括第一协处理器和第二协处理器。第一协处理器在执行第一子任务过程中,需要获取第二协处理器在执行第二子任务过程中产生的第一数据时,根据映射关系确定用于存储第一数据的第一存储地址,该映射关系中包括第二协处理器的标识、第二协处理器所执行的第二子任务的标识与第一存储地址的关联关系;然后第一协处理器可以从第一存储地址对应的第一存储空间中读取第一数据;其中,第一存储空间位于第一协处理器与第二协处理器的共享内存中。
本申请涉及的协处理器(比如上述第一协处理器或第二协处理器)通常是用于加速的加速设备,加速设备包括用于加速的处理器(简称为加速器)。加速器可以为GPU、NPU、可编程逻辑门阵列(field programmable gate array,FPGA)、专用集成电路(applicationspecific integrated circuit,ASIC)或数字信号处理器(digital signal processor,DSP)中的一项或多项。加速器通常属于专用处理器,本申请提供的协处理器中还包括CPU、微处理单元(microcontroller unit,MCU)、应用处理器(application processor,AP)等通用处理器。
现有技术中加速器之间交互数据的时候,通过系统总线从一个加速器的内存拷贝到另一个加速器的内存,导致AI系统的整体性能依赖系统总线的传输能力。本申请中通过在协处理器之间部署共享内存,共享内存用于存储各个协处理器执行子任务产生的数据,也可以说是协处理器之间(或者说加速器之间)需要交互的数据,各个协处理器执行子任务产生的数据在共享内存中的存储地址可以映射关系查找到。基于此,第一协处理器要读取的第二协处理器的数据可以根据映射关系确定存储地址,进而可以直接根据该数据的存储地址在共享内存中读取数据。无需通过系统总线拷贝数据,提高协处理器之间的数据传输效率。
在一种可能的设计中,上述第一协处理器可以包括第一处理器和第二处理器;第一处理器可以是上述提及的加速器。第二处理器可以是上述提及的通用处理器。第一协处理器中第一处理器执行第一子任务。第一处理器在执行第一子任务过程中,向第二处理器发送第一获取请求,第一获取请求用于请求获取第二协处理器在执行第二子任务过程中产生的第一数据;然后第二处理器接收到第一获取请求后,根据映射关系确定用于存储第一数据的第一存储空间的第一存储地址,可以将第一存储地址发送给第一处理器;最后,第一处理器从第一存储地址对应的第一存储空间中读取第一数据。
在一种可能的设计中,第一协处理器可以包括任务调度引擎(task scheduleengine,TSE)。所述任务调度引擎存储有程序代码;第一协处理器在执行根据映射关系确定用于存储第一数据的第一存储地址时,可以通过运行所述任务调度引擎中存储的程序代码,来执行根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址。
一种示例中,第一协处理器包括第一处理器和第二处理器的情况下,可以由第二处理器运行所述任务调度引擎中存储的程序代码,来执行根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址。
另一种示例中,第一协处理器中包括第一处理器和任务调度引擎,任务调度引擎中包括第二处理器,以及存储有程序代码。第二处理器运行所述程序代码来实现来执行根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址。或者,任务调度引擎由硬件电路实现。
又一种示例中,第一协处理器中包括第一处理器、第二处理器和任务调度引擎。任务调度引擎中也部署有处理器,为了便于区分可以称为第三处理器。在第二处理器和第三处理器的协同下来执行根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址。
需要说明的是,本申请并不限定第一协处理器中包括的第一处理器以及第二处理器的数量。
在一种可能的设计中,上述映射关系可以存储在共享内存中。映射关系可以是预先建立好的。如果需要存储某个协处理器执行子任务产生的数据,可以根据映射关系存储。
比如,第一协处理器执行第一子任务过程中产生第二数据。需要存储该第二数据,可以根据映射关系确定用于存储该第二数据的第二存储地址。映射关系中包括第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系;第二存储地址对应于共享内存中的第二存储空间,第二存储空间用于存储第一协处理器执行第一子任务过程中产生的第二数据;进一步,第一协处理器可以将第二数据存储在第二存储地址对应的第二存储空间中。因此如果其它的协处理器需要获取该第二数据时,可以根据映射关系获取到用于存储该第二数据的第二存储空间的第二存储地址,从而无需通过系统总线来拷贝数据,提高协处理器之间的数据传输效率。
在一种可能的设计中,可以由第一协处理器运行任务调度引擎中的程度代码来执行根据映射关系确定用于存储该第二数据的第二存储地址。
在一种可能的设计中,上述映射关系可以在协处理器执行子任务的过程中建立。可以在存储子任务的数据后,根据数据的存储地址增加映射关系项。比如,第一协处理器执行第一子任务过程中产生第二数据,在共享内存确定第二存储空间,并将第二数据存储在第二存储空间,第二存储空间对应第二存储地址;然后,在映射关系添加第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系。因此如果其它的协处理器需要获取该第二数据时,可以根据映射关系获取到用于存储该第二数据的第二存储空间的第二存储地址,从而无需通过系统总线来拷贝数据,提高协处理器之间的数据传输效率。
在一种可能的设计中,可以由第一协处理器运行任务调度引擎中的程度代码来执行在映射关系添加第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系。
在一种可能的设计中,第一协处理器接收主处理器下发的第一子任务,并启动执行第一子任务。上述协处理器(包括第一协处理器和第二协处理器)包含在AI系统中。AI系统还可以包括主处理器。这里的主处理器可以是CPU。主处理器可以用于执行任务的拆分,将拆分后的子任务下发给协处理器,从而协处理器辅助主处理器执行任务,来提升AI系统的算力。上述设计中,由主处理器下发子任务给协处理器,即触发协处理器执行子任务。
在一种可能的设计中,主处理器可以在向协处理器下发子任务时,将子任务的启动条件发送给协处理器。以第一协处理器为例,第一协处理器接收主处理器下发的第一子任务以及第一子任务的启动条件;在达到第一子任务的启动条件时,第一协处理器启动执行第一子任务。上述设计,由主处理器将启动条件下发给协处理器,从而由协处理器来确定是否满足启动条件,确定满足启动条件时,再启动执行子任务。
启动条件,也可以称为启动时机。例如,启动条件可以但不仅限于包括如下条件中的一项或多项:
1)、接收子任务的时长达到预设时长。
2)、达到预设时间点。
3)、任务启动对应的计时器超时。
4)、串行执行的上一子任务执行完毕。
第二方面,本申请提供一种协处理器(例如前述第一方面中的第一协处理器或第二协处理器)。该协处理器也可以认为是一个独立的芯片或一个芯片中的部分结构。该协处理器在某些场景下也可以称之为协处理设备或加速设备等。
因为涉及多个协处理器,为描述的时候方便区分,该方面中将该协处理器称为第一协处理器。具体的,该第一协处理器至少包括第一处理器和第二处理器。第一处理器可以用于执行子任务。第二处理器可以用于管理第一处理器。比如,该第一处理器可以是加速器;第二处理器可以是CPU或其它类型的通用处理器。
第一处理器,用于在执行第一子任务过程中,需要获取第二协处理器在执行第二子任务过程中产生的第一数据时,向第二处理器发送第一获取请求,第一获取请求用于请求获取第二协处理器在执行第二子任务过程中产生的第一数据;第二处理器,用于根据映射关系确定用于存储第一数据的第一存储空间的第一存储地址,并将第一存储地址发送给第一处理器;其中,映射关系中包括第二协处理器的标识、第二协处理器所执行的第二子任务的标识与第一存储地址的关联关系;第一处理器,用于从第一存储地址对应的第一存储空间中读取第一数据;其中,第一存储空间位于第一协处理器与第二协处理器的共享内存中。
在一种可能的设计中,第一协处理器还可以包括任务调度引擎。所述任务调度引擎存储有程序代码。上述第二处理器,具体用于运行任务调度引擎中存储的程序代码,以执行根据映射关系确定用于存储第一数据的第一存储空间的第一存储地址,并将第一存储地址发送给第一处理器。在其他一些可能的设计中,任务调度引擎也可以由硬件电路实现。
在一种可能的设计中,第一处理器,还用于存储执行第一子任务过程中产生的第二数据时,向第二处理器发送第二获取请求,第二获取请求用于请求存储第二数据的存储空间;
第二处理器,还用于在接收到第二获取请求后,根据映射关系确定第二存储地址,并将第二存储地址发送给第一处理器;
其中,映射关系中还包括第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系;第二存储地址对应于第二存储空间,第二存储空间用于存储第一协处理器执行第一子任务过程中产生的第二数据;
第一处理器,还用于将第二数据存储在第二存储地址对应的第二存储空间中。
在一种可能的设计中,第二处理器具体用于运行任务调度引擎中存储的程序代码,以执行根据映射关系确定第二存储地址,并将第二存储地址发送给第一处理器。
在一种可能的设计中,第一处理器,还用于存储执行第一子任务过程中产生的第二数据时,向第二处理器发送第三获取请求,第三获取请求用于请求存储第二数据的存储空间;
第二处理器,还用于在接收到第二获取请求后,为第一处理器分配第二存储空间,第二存储空间对应第二存储地址,向第一处理器通知第二存储地址,并在映射关系中添加第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系;
第一处理器,还用于将第二数据存储在第二存储地址对应的第二存储空间中。
在一种可能的设计中,第二处理器具体用于运行任务调度引擎中存储的程序代码,以执行在映射关系中添加第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系。
在一种可能的设计中,第二处理器,还用于接收主处理器下发的第一子任务,并向第一处理器发送第一子任务;第一处理器,还用于在接收到第一子任务时,启动执行第一子任务。
在一种可能的设计中,第二处理器,还用于接收主处理器下发的第一子任务以及第一子任务的启动条件,并将第一子任务发送给第一处理器,在确定达到第一子任务的启动条件时,触发第一处理器执行第一子任务;第一处理器,还用于接收第一子任务,在第二处理器触发下启动执行第一子任务。
上述第二方面和第二方面的任一设计的有益效果可以参见第一方面和第一方面的任一设计的有益效果,此处不再赘述。
第三方面,本申请提供一种计算机系统。计算机系统也可以称为AI系统。计算机系统中至少包括第一协处理器和第二协处理器。计算机系统中可以包括其它的协处理器。本申请对计算机系统包括的协处理器的数量不作限定。
具体的,第一协处理器,用于执行第一子任务;第二协处理器,用于执行第二子任务;第一协处理器,还用于在执行第一子任务过程中,需要获取第二协处理器在执行第二子任务过程中产生的第一数据时,根据映射关系确定用于存储第一数据的第一存储地址,从第一存储地址对应的第一存储空间中读取第一数据。上述映射关系中包括第二协处理器的标识、第二协处理器所执行的第二子任务的标识与第一存储地址的关联关系;其中,第一存储空间位于第一协处理器与第二协处理器的共享内存中。
第一协处理器和第二协处理器可以部署于一个芯片中,也可以部署于不同的芯片中。当部署在同一芯片中时,该计算机系统也可以理解为该芯片系统。
在一种可能的设计中,第一协处理器,还用于执行第一子任务过程中产生第二数据,根据映射关系确定第二存储地址;其中,映射关系中还包括第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系;第二存储地址对应于第二存储空间,第二存储空间用于存储第一协处理器执行第一子任务过程中产生的第二数据;将第二数据存储在第二存储地址对应的第二存储空间中。
在一种可能的设计中,第一协处理器,还用于执行第一子任务过程中产生第二数据,将第二数据存储在第二存储空间,第二存储空间对应第二存储地址;在映射关系添加第一协处理器的标识、第一协处理器所执行的第一子任务的标识与第二存储地址的关联关系。
在一种可能的设计中,计算机系统中还包括主处理器。主处理器用于对待处理的任务进行拆分,比如拆分为两个子任务,分别为第一子任务和第二子任务,从而主处理器向第一协处理器下发第一子任务,以及向第二协处理器下发第二子任务。
在一种可能的设计中,主处理器,可以与第一协处理器和第二协处理器,部署在不同的芯片中。比如,计算机系统中包括两个芯片,一个芯片包括主处理器,另一个芯片包括至少两个协处理器,例如上述第一协处理器和第二协处理器。
在一种可能的设计中,主处理器,还用于向第一协处理器下发第一子任务的启动条件,以及向第二协处理器下发第二子任务的启动条件;
第一协处理器,具体用于确定达到第一子任务的启动条件时,启动执行第一子任务;
第二协处理器,具体用于确定达到第二子任务的启动条件时,启动执行第二子任务。
在一种可能的设计中,第一协处理器包括第一处理器和第二处理器。第一处理器用于执行子任务,第二处理器用于管理第一处理器。
第二处理器,用于接收来自主处理器的第一子任务,以及第一子任务的启动条件,并将第一子任务发送给第一处理器;第二处理器,还用于在确定达到第一子任务的启动条件时,触发第一处理器执行第一子任务;第一处理器,用于在第二处理器的触发下执行第一子任务。
上述设计中,协处理器中设置至少两个处理器,一个处理器具有控制功能,其它处理器用来执行子任务。可以减少与主处理器的交互,提高通信性能。
在一种可能的设计中,第一处理器,还用于执行第二方面或者第二方面的任一设计中第一处理器所执行的操作。第二处理器,还用于执行第二方面或者第二方面的任一设计中第二处理器所执行的操作。具体参见第二方面或者第二方面的任一设计中描述,此处不再赘述。
第四方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码被协处理器运行时,使得协处理器执行上述第一方面或第一方面的任意可能的实现方式中的任一方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有程序,程序使得协处理器执行上述第一方面或第一方面的任意可能的实现方式中的任一方法。
第六方面,本申请实施例提供了一种计算机程序,该计算机程序在某一计算机上执行时,将会使得计算机实现上述第一方面或第一方面的任意可能的实现方式中的任一方法。
第七方面,本申请实施例提供了一种芯片系统,该芯片系统包括一个或多个第二方面或第二方面的任意可能的设计所述的协处理器。
第二方面至第七方面可以达到的技术效果可以参见上述针对第一方面以及第一方面中各个可能设计的分析描述,此处不再赘述。
附图说明
图1为本申请实施例中GPU direct技术实现方法示意图;
图2为本申请实施例中NVlink技术实现方法示意图;
图3为本申请实施例中Direct GPU技术实现方法示意图;
图4为本申请实施例中一种计算机系统架构示意图;
图5为本申请实施例中另一种计算机系统架构示意图;
图6为本申请实施例中数据传输方法流程示意图;
图7为本申请实施例中又一种计算机系统架构示意图;
图8为本申请实施例中神经网络任务执行流程示意图。
具体实施方式
首先,对本申请中的部分用语进行解释说明,以便使本领域技术人员理解。
1)共享虚拟内存(shared virtual memory,SVM)。
共享虚拟内存的方式就是将一份物理内存映射到不同进程各自的虚拟地址空间上,这样每个进程都可以读取同一份数据,从而实现进程通信。因为是通过内存操作实现通信,因此是一种最高效的数据交换方法。
2)进程(Process)。
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是程序的基本执行实体,程序是指令、数据及其组织形式的描述。
3)缓存(cache)一致性。缓存也称为高速缓冲存储器。cache一致性是指在采用层次结构存储系统的计算机系统中,保证高速缓冲存储器中数据与主存储器中数据相同的机制。
为了提高现有AI系统中加速器之间的数据传输效率,有两种可能的解决方案,一种方案是采用GPU直连(direct)和NVlink技术,另一种方案是采用直连(Direct)GPU/FPGA技术。GPU direct和NVlink技术所部署的AI系统中采用的加速器为GPU。Direct GPU/FPGA技术所部署的AI系统中采用的加速器为GPU和FPGA。
在没有GPU direct技术之前,GPU作为独立的设备,为了完成GPU之间的通信,需要进行3次数据拷贝。参见图1中的(a)所示,3次数据拷贝分别如下:CPU先将GPU1的内存数据拷贝到系统缓存1,再从系统缓存1拷贝到系统缓存2,最后再拷贝到对端GPU2的内存。系统缓存1对应于GPU1,系统缓存2对应于GPU2。这种频繁的数据拷贝较大的限制了GPU的计算能力,原因是GPU需要花很长时间等待对端拷贝数据过来。而GPU direct技术中,多个GPU通过串行计算机扩展总线(peripheral component interconnect express,PCIe)直接与CPU相连。GPU支持通过PCIe共享CPU侧的内存的方式,从而实现了GPU之间的数据通信。参见图1中的(b)所示,GPU direct仅仅只需要2次数据拷贝:CPU先从GPU的内存拷贝到系统缓存,再从系统缓存通过PCle拷贝到对端的GPU内存中。GPU direct通过串行计算机扩展总线来提高传输数据的速率。
PCIe本身存在双向带宽限制,为了提升多GPU之间的数据传输速率,产生了NVlink技术。NVlink技术是带宽高于PCIe的一种总线及其传输协议,NVlink提供的带宽能够达到20GB/s。参见图2所示,NVlink技术在GPU之间增加双向NVlink总线通道,GPU之间的数据拷贝可以通过NVlink总线通道来实现,从而不需要经过CPU来进行数据拷贝。
Direct GPU/FPGA技术中,GPU与FPGA之间通过PCIe总线与CPU相连,通过PCIe总线实现GPU与FPGA之间的数据交换。参见图3所示,如果GPU需要从FPGA的双数据倍率存储器(double data rate memory,DDR memory)中拷贝数据时,可以直接通过PCIe总线从FPGA的DDR memory中拷贝数据,无需通过CPU。
从上可以看出,以上两种技术中,虽然在一定程度上可以提高加速器(例如GPU或其它类型的加速设备)的计算能力,但是上述两种方案均需要通过系统总线(比如PCIe总线或者NVlink总线)来实现加速器之间的数据交换。而系统总线支持的带宽有限制,AI系统计算能力还是会受限于系统总线所支持的带宽,进一步地导致加速器之间数据传输能力无法匹配AI系统的计算能力的增长。
基于此,本申请实施例提供一种数据传输方法及装置,具体采用加速器之间直通方案,绕开总线对加速器计算能力的限制。
参见图4所示,为本申请实施例提供的一种计算机系统架构示意图。计算机系统中包括主处理器、M个协处理器,M为大于1的整数。本申请实施例中涉及的协处理器至少包括加速器。主处理器和协处理器位于不同的芯片中。M个协处理器可以部署于不同的芯片中,或者可以部署于同一个芯片中,或者还可以是M个协处理器部署于X个芯片中,X为小于M且大于1的整数。主处理器与协处理器之间通过系统总线连接。系统总线负责设备间通信,比如,可以是PCIe,还可以其它类型的总线,本申请实施例对此不作具体限定。示例性地,图4中以主处理器与协处理器,以及各个协处理器之间通过PCIe switch芯片来连接。PCIeswitch芯片为提供PCIe连接的转换(switch)芯片。处理器与协处理器之间可以通过保证缓存(cache)一致性的快速总线相连。快速总线可以是华为缓存一致性系统(huawei cachecoherent system,HCCS)、先进可扩展接口(advanced eXtensible interface,AXI)、超传输快速通道互联(Hyper transport and quick path interconnect,Hyper transportand QPI)或者高级微控制器总线架构(advanced microcontroller bus architecture,AMBA)。图4中以M=4,即4个协处理器为例,分别为协处理器1-协处理器4。
每个协处理器均对应有在计算机系统中全局唯一的设备标识(ID)。该设备ID可以通过配置实现,或者可以由主处理器为各个协处理器分配。比如在计算机系统启动后,由主处理器为各个协处理器分配设备ID,并通过系统总线将各个协处理器对应的设备ID同步给各个协处理器。也就是说主处理器将协处理器1-协处理器4分别对应的设备ID发送协处理器1-协处理器4,从而每个协处理器均能获得计算机系统中各个协处理器的设备ID。
主处理器在获得计算任务后,将计算任务分成N个子任务,N小于或者等于M。一种示例中,该N个子任务并行执行,则主处理器根据各个协处理器的设备ID选择N个协处理器,将N个子任务分别分发给N个协处理器来处理。另一种示例中,该N个子任务中的一部分子任务并行执行,一部分子任务需要在其它子任务执行完再执行,即串行执行。在该情况下,可以根据需求选择几个协处理器来处理,并分别分发给选择的协处理器。
N个协处理器之间存在共享内存。共享内存可以用于存储协处理器在执行子任务的过程中产生的数据。一种方式中,该共享内存可以由主处理器采用SVM技术为各个协处理器配置。另一种方式中,协处理器之间存在共享存储器。该共享存储器包括上述共享内存。共享存储器可以由一个或者多个内存实现。一种示例中,一个或者多个内存可以独立于各个协处理器设置在计算机系统中。另一种示例中,各个协处理器中设置有内存,各个协处理器中包括的内存之间通过保证cache一致性的快速总线相连,通过SVM技术实现共享,构成共享内存。
协处理器在执行子任务的过程中,将执行子任务产生的数据保存在共享内存中。一个协处理器在执行子任务过程中,若需要其他协处理器执行子任务过程中产生的数据,可以根据映射关系获取其它协处理器的设备ID所处理的子任务的数据的存储地址,然后从存储地址对应的存储空间中读取数据。协处理器在从存储地址对应的存储空间中读取数据时,可以采用直接存储器访问(direct memory access,DMA)技术实现,或者其它数据读取技术来实现。针对DMA技术的相关说明参见现有技术,本申请不作赘述。
上述映射关系中包括每个协处理器的设备ID、每个协处理器所执行的子任务的标识,以及用于存储每个协处理器执行子任务过程中的数据存储空间的存储地址。映射关系可以保存在共享内存中。映射关系所保存的存储空间的存储地址可以在配置映射关系时通知给各个协处理器。映射关系具体的配置方式以及维护方式,后续会详细说明,此处不进行赘述。
以协处理器1用于执行子任务1,协处理器2用于执行子任务2为例。以协处理器1在执行子任务1过程中,需要获取协处理器2在执行子任务2过程中产生的第一数据为例。比如,第一数据存储在共享内存的第一存储空间中。第一存储空间的存储地址为第一存储地址。在映射关系中包括协处理器2的设备ID、协处理器2所执行的子任务2的标识,与第一存储地址的关联关系。进而,协处理器1可以根据映射关系确定用于存储第一数据的第一存储地址,从该第一存储地址对应的第一存储空间中读取该第一数据。该第一存储空间为共享内存中的存储空间。
下面针对映射关系具体的配置方式以及维护方式进行说明。
映射关系可以采用表的方式配置,还可以采用数组的方式配置,当然还可以采用其它的方式配置,本申请对此不作具体限定。后续配置时,以表的方式配置映射关系为例进行说明。为了描述方便,将配置映射关系得到的表称为地址信息表。以表的方式配置映射关系时,映射关系可以通过一个或者多个表的方式配置,也就是说地址信息表可以由一个或者多个表来构成。
例如,协处理器1执行子任务1,协处理器2用于执行子任务2,协处理器3用于执行子任务3,协处理器4用于执行子任务4。协处理器1的设备ID为ID1,协处理器2的设备ID为ID2,协处理器3的设备ID为ID3,协处理器4的设备ID为ID4。子任务1的标识为A1,子任务2的标识为A2,子任务3的标识为A3,子任务4的标识为A4。
一种示例中,映射关系采用一个表的方式配置,即地址信息表由一个表组成。参见表1所示,表1用于描述协处理器设备ID、每个协处理器所执行的子任务的标识,以及子任务执行过程产生的数据的存储地址之间的关联关系。这里所说的数据的存储地址可以为存储数据的存储空间的物理地址、或者为物理地址对应的虚拟地址,或者可以包括数据的虚拟地址与物理地址之间的关联关系。虚拟地址与物理地址之间的关联关系即为地址转换表描述的关系。还可以换句话说,映射关系用于描述协处理器设备ID、每个协处理器所执行的子任务的标识,以及子任务执行过程产生的数据对应的地址转换表,该三者之间的关联关系。地址转换表的建立可以是静态配置,或者动态生成,具体与现有的虚拟地址以及物理地址的分配和映射类似,本申请不作过多描述。
表1
Figure BDA0002445384310000091
另一种示例中,映射关系采用多个表的方式配置。以两个表实现为例,参见表2所示,表2用于描述协处理器设备ID、每个协处理器所执行的子任务的标识之间的关联关系。参见表3所示,表3用于描述每个子任务的标识对应的地址转换表。地址转换表用于描述虚拟地址与物理地址的映射关系。
表2
设备ID 子任务标识
ID1 A1
ID2 A2
ID3 A3
ID4 A4
表3
Figure BDA0002445384310000101
又一种示例中,参见表4所示,表4用于描述协处理器设备ID、每个协处理器所执行的子任务的标识,以及用于存储地址转换表的存储地址之间的关联关系。参见表5所示,用于描述每个协处理器上存储的数据对应的地址转换表。
表4
设备ID 子任务标识 存储地址
ID1 A1 地址1
ID2 A2 地址2
ID3 A3 地址3
ID4 A4 地址3
表5
Figure BDA0002445384310000102
Figure BDA0002445384310000111
在一种可能的实施方式中,映射关系可以由主处理器建立,也可以由协处理器建立,或者可以是主处理器和协处理器协同建立。
一种示例中,映射关系由主处理器建立,并通知给各个协处理器。比如,以表1所示的映射关系为例,可以由主处理器在启动后为各个协处理器分配设备ID以及分配子任务后,创建表1所示的映射关系,然后可以通知给各个协处理器。
另一种示例中,映射关系由协处理器建立。具体由哪个协处理器来建立,可以由主处理器指示,或者预先配置。
上述两种示例中,映射关系在协处理器执行子任务之前建立好。如果协处理器在执行子任务过程中产生数据,可以根据映射关系来确定存储数据的存储地址。此处还以协处理器1用于执行子任务1,协处理器2用于执行子任务2为例。如前所述,协处理器1在执行子任务1过程中,需要获取协处理器2在执行子任务2过程中产生的第一数据,协处理器1可以根据映射关系确定用于存储第一数据的第一存储地址,从该第一存储地址对应的第一存储空间中读取该第一数据。
若协处理器1在执行子任务1过程中产生第二数据时,可以根据所述映射关系确定用来存储第二数据的存储地址。
以表1所示的映射关系为例。协处理器1根据映射关系确定存储第二数据的存储地址,比如,虚拟地址为V1、物理地址为V2,V2对应共享内存中的第二存储空间,即该第二存储空间用于存储协处理器1执行子任务1过程中产生的第二数据。进而,协处理器1将所述第二数据存储在V2对应的第二存储空间中。
又一种示例中,映射关系由主处理器和协处理器协同建立,映射关系可以在主处理器的协助下由协处理器在执行子任务的过程中建立并更新。比如,每个协处理器的设备ID与子任务的标识,由主处理器发送给各个协处理器。地址转换表可以由各个协处理器在执行子任务的过程中,创建并更新。映射关系采用多个表的方式存储时,多个表中的一部分表可以由主处理器建立并通知给各个协处理器,另一部分表可以由协处理器在执行子任务的过程中建立并更新。比如,上述表2或表4由主处理器创建并通知给各个协处理器,表3或表5中的内容由各个协处理器执行子任务的过程中创建并更新。
上述示例中,映射关系在协处理器执行子任务之前未提前建立好。如果协处理器在执行子任务过程中产生数据后,协处理器可以在共享内存中获取用于存储该数据的存储空间,然后将数据存储到该存储空间,并将在映射关系中增加该存储空间的地址与协处理器以及子任务的关联关系。
还以协处理器1用于执行子任务1,协处理器2用于执行子任务2为例。
若协处理器1在执行子任务1过程中产生第二数据时,在所述共享内存确定第二存储空间。该第二存储空间为共享内存中一块空闲内存。然后将该第二数据存储在第二存储空间,该第二存储空间对应第二存储地址。比如第二存储地址对应V2-P2。从而协处理器1可以在所述映射关系添加第一协处理器的标识(ID1)、第一协处理器所执行的第一子任务的标识(A1)与所述第二存储地址(V2-P2)的关联关系。
在一种可能的实施方式中,协处理器在启动执行子任务时,比如在主处理器的触发下启动执行,还可以自身确定满足启动条件时,再启动执行子任务。
以上述协处理器1为例。一种示例中,主处理器将子任务1下发给协处理器1,协处理器1接收到该子任务1后,并启动执行该子任务。另一种示例中,主处理器向协处理器1下发子任务1以及子任务1的启动条件,从而协处理器1在确定达到子任务1的启动条件时,再启动执行第一子任务。
启动条件,也可以称为启动时机。例如,启动条件可以但不仅限于包括如下条件中的一项或多项:
1)、接收子任务的时长达到预设时长。
2)、达到预设时间点。
3)、任务启动对应的计时器超时。
4)、串行执行的上一子任务执行完毕。
本申请中,各个协处理器之间通过保证cache一致性的快速总线相连,然后通过该快速总线结合映射关系来读取执行子任务所需的数据,无需通过系统总线或通过CPU进行数据拷贝。另外,快速总线相比PCIe总线来说,带宽更高且时延较小,可以进一步提高计算机系统的数据传输能力。
参见图5所示,以计算机系统中包括两个协处理器为例,结合具体应用场景对本申请实施例提供的方案进行详细说明。计算机系统也可以称为AI系统。计算机系统中的主处理器中可以包括主处理单元和存储单元。比如主处理单元可以由一个或者多个处理器来实现。比如由CPU来实现,该主处理单元的CPU称为主(Host)CPU。存储单元可以为DDR。协处理器可以包括处理单元和存储单元,处理单元可以由一个或者多个处理器(或者称为加速器)来实现,比如由CPU、GPU、FPGA、NPU或者数字信号处理器(digital signal processor,DSP)中的一种或多种来实现。协处理器还可以包括管理单元,用于对协处理器中的处理单元和存储单元进行管理。协处理器中的管理单元可以由一个或者多个处理器来实现,比如CPU。协处理器中的存储单元可以是DDR。图5中以计算机系统包括两个协处理器为例,分别为协处理器1和协处理器2。以协处理器的处理单元为NPU,管理单元为CPU为例进行说明。具体的,协处理器1包括CPU1、NPU1以及DDR1。协处理器2包括CPU2、NPU2以及DDR2。主处理器与协处理器之间可以通过保证缓存一致性的快速总线相连。可以理解为:Host CPU、CPU1、CPU2、NPU1以及NPU2通过快速总线相连,来构成缓存一致性系统。DDR1、DDR2和DDR构成共享的内存系统。
参见图6所示,为基于上述图5所示的计算机系统,本申请所提供的数据传输方法流程示意图。主处理器上待处理的任务被分为子任务1和子任务2存储在主处理器的DDR中。
S601a,所述Host CPU向所述协处理器1下发所述子任务1。即,子任务1由主处理器的Host CPU从DDR中迁移到DDR1中。
S601b,所述Host CPU向所述协处理器2下发所述子任务2。即,子任务2由主处理器的HostCPU从DDR中迁移到DDR2中。
S601a和S601b,两个步骤可以并行实现。
S602a,协处理器1中的CPU1接收到子任务1后,将子任务1发送给NPU1。
S603a,NPU1启动执行子任务1的流程,并将产生的数据存储在共享内存中。
协处理器1在执行子任务1的过程中,产生中间数据,比如数据1和数据2。数据1存储在存储地址1对应的存储空间,数据2存储在存储地址2对应的存储空间。数据1是子任务2运行过程中所需要的。
S602b,协处理器2中的CPU2接收到子任务2后,将子任务2发送给NPU2。
例如,协处理器2将子任务2发送给NPU2,具体可由CPU2将子任务2存储在DDR2中,然后将存储地址通知给NPU2,从而NPU1根据CPU2通知的存储地址读取子任务2并执行。
S603b,NPU2启动执行子任务2的流程,并将产生的数据存储在共享内存中。
协处理器2在执行子任务2的过程中,也会产生中间数据,比如数据3和数据4。数据3存储在存储地址3对应的存储空间,数据4存储在存储地址4对应的存储空间。该数据3是子任务1运行过程中所需要的。
S604a,NPU1在执行子任务1过程中,需要获取NPU2在执行子任务2过程中产生的数据3时,向所述CPU1发送第一获取请求,所述第一获取请求用于请求获取所述协处理器2在执行子任务2过程中产生的数据3。
S605a,所述CPU1根据映射关系确定用于存储所述数据3的存储空间的存储地址3,并将存储地址3发送给所述NPU1。
S606a,所述NPU1从所述存储地址3对应的存储空间中读取所述数据3。然后根据数据3继续执行子任务1。
S604b,NPU2在执行子任务2过程中,需要获取NPU1在执行子任务1过程中产生的数据1时,向所述CPU2发送第二获取请求,所述第二获取请求用于请求获取所述协处理器1在执行子任务1过程中产生的数据1。
S605b,所述CPU2根据映射关系确定用于存储所述数据1的存储空间的存储地址1,并将存储地址1发送给所述NPU2。
S606b,所述NPU2从所述存储地址1对应的存储空间中读取所述数据1。然后根据数据1继续执行子任务。
关于映射关系的建立,如前所述,此处不再赘述。
在一种可能的实施方式中,NPU启动执行子任务,可以由主处理器来触发,或者由协处理器中的处理单元来触发。以NPU1为例。
一种示例中。Host CPU向CPU1发送子任务1;CPU1在接收到子任务1时,即启动执行子任务1。
另一种示例中,CPU1接收主处理器下发的子任务1以及子任务1的启动条件,并将子任务1发送给NPU1,在确定达到子任务1的启动条件时,触发NPU1执行子任务1。NPU1接收到子任务1后,在CPU1触发下启动执行子任务1。
参见图7所示,主处理器中可以设置任务调度引擎(task schedule engine,TSE)服务(service)。TSE service可以采用软件形式运行在主处理器上,也可以采用硬件电路的方式部署在主处理器上,或者可以采用软件和硬件结合的方式部署在主处理器上。协处理器上均部署有TSE。TSE可以采用软件形式运行在协处理器的CPU上,也可以采用硬件电路的方式部署协处理器上,或者可以采用软件和硬件结合的方式运行在协处理器上。以主处理器为host CPU为例,TSE service采用软件形式运行在host CPU上时,TSE service可以是运行在Host CPU上的一个服务进程,用于对协处理器上的TSE进行管理。协处理器上的TSE负责数据拷贝的决策、配置和启动,并决定NPU1(或NPU2)的通信方式。比如,主处理器为host CPU,TSE service采用软件和硬件结合的方式运行在host CPU上时,TSE service可以是运行于主处理器中的一个固件(firmware)。固件一般是存储于设备中的电可擦除只读存储器(electrically erasable programmable read-only memory,EEPROM)或闪存(flash)芯片中。固件的程序一般是无法被用户直接读出或修改的。再比如,TSE可以采用软件形式运行在协处理器上,TSE可以是一个线程或者进程。又比如,TSE采用软件和硬件结合的方式运行在协处理器上时,TSE可以是运行协处理器上的一个固件。本申请实施例中对TSE service和TSE的部署形式不作限定。
为了后续描述方便,将协处理器1的TSE称为TSE1,将协处理器2的TSE称为TSE2。
当计算机系统启动或者初始化时,启动主处理器上的操作系统,主处理器通过操作系统启动TSE service,随后TSE service通过PCIe switch芯片启动计算机系统的各个协处理器上的TSE。TSE service为计算机系统中的各个协处理器配置全局唯一的设备ID,并将该设备ID发送给各个协处理器的TSE。比如,协处理器1的设备ID为ID1,协处理器2的设备ID为ID2。
TSE service在接收到用户触发的待处理的任务时,将待处理器任务分成两个子任务,两个子任务分别为任务(Task)A和Task B。Task A被分配给NPU1,Task B被分配给NPU2。
一种可能的实施方式中,以主处理器创建地址信息表为例,对NPU1以及NPU2执行子任务以及获取数据的过程进行说明。
由TSE service预先创建虚拟地址与物理地址的映射关系,并根据各个协处理器的设备ID,所处理的子任务的标识,已经创建的虚拟地址与物理地址的映射关系,来创建地址信息表。创建地址信息表后,一种方式是,TSE service可以将创建的地址信息表存储在共享的内存系统中。并将存储地址信息表的存储地址通知给各个协处理器的TSE。另一种方式是,TSE service可以将创建的地址信息表分别发送给各个协处理器的TSE。
TSE service将待处理器任务分成Task A和Task B后,将Task A发送给协处理器1的TSE1,将Task B发送给协处理器2的TSE2。TSE1完成接收Task A后,向NPU1发送用于触发NPU1执行Task A的触发指令,具体可以在触发指令中携带Task A对应的虚拟地址(比如,V1)发送给NPU1,NPU1可以根据V1向TSE1查询要执行的Task A的数据和执行指令的物理地址。TSE1根据TSE1管理的地址转换表查询Task A的数据和执行指令的物理地址,比如P1,并发送给NPU1。从而NPU1根据从P1对应的存储空间中读取Task A的数据和执行指令,从而执行TaskA。同理,NPU1读取TaskB的数据和执行指令,从而执行TaskB。
NPU1在执行Task A的过程中,在每一轮执行Task A产生中间数据时,向TSE1查询存储该中间数据的存储地址。TSE1查询地址信息表获得存储该中间数据的存储地址,比如为P1,将P1发送给NPU1,从而NPU1将中间数据存储在该P1对应的存储空间中。同样,NPU2在执行TaskB的过程中,在每一轮执行Task B产生中间数据时,向TSE2查询存储该中间数据的存储地址。TSE2查询地址信息表获得存储中间数据的存储地址,比如为P4,将P4发送给NPU2,从而NPU2将中间数据存储在该P4对应的存储空间中。
如果,NPU2在继续执行TaskB的过程中,如果需要用到NPU1执行TaskA产生的中间数据时,NPU2通过TSE2查询地址信息表,确定用于存储地址转换表1的地址1。然后TSE2从地址1对应的第一内存空间存储的地址转换表1,确定用于存储NPU1执行TaskA产生的中间数据的物理地址。之后,TSE2从该物理地址中读取NPU1执行TaskA产生的中间数据。
另一种可能的实施方式中,以协处理器在执行子任务的过程中来分配存储空间,并维护地址信息表为例,对NPU1以及NPU2执行子任务以及获取数据的过程进行说明。比如地址信息表为表4和表5所示的形式。
TSE service为各个协处理器分别分配一块存储空间,用于各个协处理器存储自身对应的地址转换表(表5)。TSE service可以创建表4,然后将创建的表4的存储地址通知给各个协处理器。进而每个协处理器均能够确定其它协处理器的地址转换表的存储地址。
比如,参如表4所示,TSE service将共享内存中的第一内存空间分配给协处理器1,将第二内存空间分配给协处理器2。第一内存空间的存储地址为地址1,第二内存空间的存储地址为地址2。TSE service将地址1和地址2通知给协处理器1的TSE1和协处理器2的TSE2。进而协处理器1和协处理器2上的TSE分别创建自身的地址转换表,并存在TSEservice分配的地址所对应内存空间。
协处理器1上的TSE1在地址1对应的第一内存空间建立地址转换表1。协处理器2的TSE在地址2对应的第二内存空间建立地址转换表2。
TSE service将Task A和Task B分别发送给协处理器1的TSE和协处理器2的TSE,从而协处理器1的TSE1触发NPU1执行Task A,协处理器2的TSE2触发NPU2执行Task B。NPU1在执行Task A的过程中,将每一轮执行Task A产生的中间数据存储在DDR1中。同样,NPU2在执行TaskB的过程中,将执行Task B产生的中间数据存储在DDR2。NPU2在继续执行TaskB的过程中,如果需要用到NPU1执行TaskA产生的中间数据时,NPU2通过TSE2查询地址信息表,确定用于存储地址转换表1的地址1。然后TSE2从地址1对应的第一内存空间存储的地址转换表1,确定用于存储NPU1执行TaskA产生的中间数据的物理地址。之后,TSE2从该物理地址中读取NPU1执行TaskA产生的中间数据。
示例性地,TSE service首先将总的任务分割成各个子任务下发到协处理器侧,子任务数据也下发到协处理器侧,协处理器侧的TSE进行初始设置,在内存中为NPU执行子任务过程中产生的数据分配存储空间后,各个协处理器中的NPU开始各自执行子任务,每轮迭代计算完后,产生的数据作为下一轮迭代的输入数据。比如,TSE1在DDR1中为NPU1执行子任务过程中产生的数据分配存储空间。同样TSE2在DDR2中为NPU2执行子任务过程中产生的数据分配存储空间。NPU1在将每一轮产生的中间数据存储后,将存储的物理地址通知所述TSE1保存在地址转换表1时,TSE1在接收到通知后可以将NPU1产生的中间数据的物理地址以及物理地址对应的虚拟地址保存在地址转换表1中。另外,TSE1管理的地址转换表1更新后,TSE1可以向TSE service通知TSE1管理的地址转换表1已更新,通过TSE service将TSE1管理的地址转换表1已更新的消息通知给各个协处理器中的TSE。
需要说明的是,TSE1上配置有虚拟地址范围,TSE1接收到NPU1保存中间数据的物理地址的通知时,可以根据虚拟地址范围选择虚拟地址,将选择的虚拟地址以及物理地址对应保存在地址转换表1中。
进一步地,TSE1将该中间数据的物理地址对应的虚拟地址通知给TSE2。NPU2在继续执行Task B的过程中,需要用到NPU1执行TaskA产生的中间数据,NPU2通知TSE2需要使用NPU1执行TaskA产生的中间数据,TSE查询地址信息表,确定用于存储地址转换表1的地址1。然后TSE2根据TSE1发送的虚拟地址从地址1对应的第一内存空间存储的地址转换表1中,确定用于存储NPU1执行TaskA产生的中间数据的物理地址。之后,TSE2从该物理地址中读取NPU1执行TaskA产生的中间数据。
作为一种示例,以tensorflow应用(application,app)运行在host CPU上,需要计算两层神经网络为例。tensorflow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。第二层神经网络在计算时需要应用到第一层神经网络的计算结果。参见图8所示,tensorflow app在host CPU上运行,当host CPU检测到tensorflow app启动运行时,host CPU中的TSE service被触发,TSE service将tensorflow app的计算任务分成两份计算任务,(1)一份通过协处理器1上的TSE1下发到NPU1上计算,(2)另一份通过协处理器2上的TSE2下发到NPU2上计算。需要说明的是,每一层神经网络的计算任务均被分成两份。从而两个NPU并行执行完第一层神经网络的计算后,再并行执行第二层神经网络的计算。
首先,TSE service会为协处理器1和协处理器2分配设备ID,并发送给TSE1和TSE2。TSE1和TSE2分别生成地址转换表。具体生成方式如前所述,此处不再赘述。
其次,NPU1和NPU2均开始第一层神经网络计算。
NPU1计算子任务1中的第一层神经网络过程中,会通过本地的TSE1查询地址转换表1,找到第一层神经网络的数据和指令的物理地址,该物理地址是NPU在计算过程中动态请求建立或者由CPU提前构建分配而来,随后,开始进行子任务1中的第一层神经网络的计算。当NPU1完成子任务1中的第一层神经网络的计算后,将第一层神经网络的计算结果保存在DDR1中,NPU1将子任务1中的第一层神经网络的计算结果的物理地址1通知给TSE1,TSE1为该子任务1中的第一层神经网络的计算结果分配虚拟地址1,并将分配的虚拟地址1和物理地址对应保存在地址转换表1中。TSE1将子任务1中的第一层神经网络的计算结果的虚拟地址1通知给TSE2。
同理,NPU2计算子任务2中的第一层神经网络过程中,会通过本地的TSE2查询地址转换表2,找到第一层神经网络的数据和指令的物理地址,开始进行子任务2中的第一层神经网络的计算。当NPU2完成子任务2中的第一层神经网络的计算后,将第一层神经网络的计算结果保存在DDR2中,NPU2将子任务2中的第一层神经网络的计算结果的物理地址2通知给TSE2,TSE2为该子任务2中的第一层神经网络的计算结果分配虚拟地址2,并将分配的虚拟地址2和物理地址2对应保存在地址转换表2中。TSE2将子任务2中的第一层神经网络的计算结果的虚拟地址2通知给TSE1。
最后,NPU1和NPU2开始计算第二层神经网络。
(3),NPU1和NPU2之间通过TSE获取到对方产生的子任务数据。NPU1和NPU2都需要子任务1和子任务2的第一层神经网络的计算结果。NPU1开始计算第二层神经网络,NPU1通过TSE1查询地址信息表,确定用于存储地址转换表2的地址2。然后TSE1根据TSE2发送的虚拟地址2,从地址2对应的第二内存空间存储的地址转换表2中确定物理地址2。之后,TSE1从该物理地址2中读取子任务2中的第一层神经网络的计算结果。同理NPU2可以通过TSE2读取子任务1中的第一层神经网络的计算结果。进一步的,NPU1根据子任务1和子任务2的第一层神经网络的计算结果执行子任务1的第二层神经网络的计算,NPU2根据子任务1和子任务2的第一层神经网络的计算结果执行子任务2的第二层神经网络的计算。
本申请的提供的方案实现一种高带宽存储(High-bandwidth Memory,HM)Link连接管理技术,通过在协处理器和主处理器上分别新增一个TSE(任务调度引擎),为了区分,主处理器上的称为TSE service。该引擎可以准确且较快速的识别所有连接在HM Link上的设备,并全局管理所有任务数据存储地址,根据业务接口快速设置数据拷贝的目的和源地址,实现绕过PCIe进行设备间数据高速传输的能力。通过HM-Link技术,协处理器之间数据交互无需通过PCIe获取和交换数据,即做到数据的零拷贝,协处理器可以直接读取共享内存数据。
本申请的技术方案可应用于机器学习、深度学习平台的数据流图处理过程,还有可能应用于其他具有数据交换需求的分布式计算平台。例如,图计算平台、流式计算平台等。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例中“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一(项)个”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a、b、c可以是单个,也可以是多个。另外,需要理解的是,本申请中“第一”、“第二”、或“第三”等仅为了区分表述,没有限定顺序的意思;另外,第一对象和第二对象在某些情况下有可能合并或指同一对象;再者,由于没有限定顺序,所以没有第一,也可以有第二或第三。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (24)

1.一种数据传输方法,其特征在于,所述方法应用于第一协处理器,包括:
在执行第一子任务过程中,根据映射关系确定用于存储第一数据的第一存储地址,所述映射关系中包括所述第二协处理器的标识、第二协处理器所执行的第二子任务的标识与所述第一存储地址的关联关系,所述第一数据为第二协处理器在执行第二子任务过程中产生的数据;
从所述第一存储地址对应的第一存储空间中读取所述第一数据;
其中,所述第一存储空间位于所述第一协处理器与所述第二协处理器的共享内存中。
2.如权利要求1所述的方法,其特征在于,第一协处理器包括任务调度引擎,所述任务调度引擎存储有程序代码;
所述根据映射关系确定用于存储第一数据的第一存储地址,所述映射关系中包括所述第二协处理器的标识,包括:
所述第一协处理器运行所述任务调度引擎中存储的程序代码,以执行根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址。
3.如权利要求1或2所述的方法,其特征在于,还包括:
执行所述第一子任务过程中产生第二数据,根据所述映射关系确定第二存储地址;
其中,所述映射关系中还包括所述第一协处理器的标识、第一协处理器所执行的第一子任务的标识与所述第二存储地址的关联关系;所述第二存储地址对应于第二存储空间,所述第二存储空间用于存储所述第二数据,所述第二存储空间位于所述共享内存中;
将所述第二数据存储在所述第二存储空间中。
4.如权利要求1或2所述的方法,其特征在于,还包括:
执行所述第一子任务过程中产生第二数据,在所述共享内存确定第二存储空间,并将所述第二数据存储在所述第二存储空间,所述第二存储空间对应第二存储地址;
在所述映射关系添加所述第一协处理器的标识、第一协处理器所执行的第一子任务的标识与所述第二存储地址的关联关系。
5.如权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
接收主处理器下发的所述第一子任务,并启动执行所述第一子任务。
6.如权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
接收主处理器下发的第一子任务以及所述第一子任务的启动条件;
在达到所述第一子任务的启动条件时,启动执行所述第一子任务。
7.如权利要求1-6任一项所述的方法,其特征在于,所述映射关系存储在所述共享内存中。
8.一种第一协处理器,其特征在于,包括第一处理器和第二处理器;
所述第一处理器,用于在执行第一子任务过程中,向所述第二处理器发送第一获取请求,所述第一获取请求用于请求获取第二协处理器在执行第二子任务过程中产生的第一数据;
所述第二处理器,用于根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址,并将所述第一存储地址发送给所述第一处理器;
其中,所述映射关系中包括所述第二协处理器的标识、第二协处理器所执行的第二子任务的标识与所述第一存储地址的关联关系;
所述第一处理器,用于从所述第一存储地址对应的第一存储空间中读取所述第一数据;
其中,所述第一存储空间位于所述第一协处理器与所述第二协处理器的共享内存中。
9.如权利要求8所述的第一协处理器,其特征在于,第一协处理器还包括任务调度引擎,所述任务调度引擎存储有程序代码;
所述第二处理器,具体用于运行所述任务调度引擎中存储的程序代码,以执行根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址,并将所述第一存储地址发送给所述第一处理器。
10.如权利要求8或9所述的第一协处理器,其特征在于:
所述第一处理器,还用于存储执行所述第一子任务过程中产生的第二数据时,向所述第二处理器发送第二获取请求,所述第二获取请求用于请求存储所述第二数据的存储空间;
所述第二处理器,还用于在接收到所述第二获取请求后,根据所述映射关系确定第二存储地址,并将所述第二存储地址发送给所述第一处理器;
其中,所述映射关系中还包括所述第一协处理器的标识、第一协处理器所执行的第一子任务的标识与所述第二存储地址的关联关系;第二存储地址对应于所述第二存储空间,所述第二存储空间用于存储所述第一协处理器执行所述第一子任务过程中产生的所述第二数据;
所述第一处理器,还用于将所述第二数据存储在所述第二存储地址对应的第二存储空间中。
11.如权利要求8或9所述的第一协处理器,其特征在于:
所述第一处理器,还用于存储执行所述第一子任务过程中产生的第二数据时,向所述第二处理器发送第三获取请求,所述第三获取请求用于请求存储所述第二数据的存储空间;
所述第二处理器,还用于在接收到所述第二获取请求后,为所述第一处理器分配第二存储空间,所述第二存储空间对应第二存储地址,向所述第一处理器通知所述第二存储地址,并所述映射关系中添加所述第一协处理器的标识、第一协处理器所执行的第一子任务的标识与所述第二存储地址的关联关系;
所述第一处理器,还用于将所述第二数据存储在所述第二存储地址对应的所述第二存储空间中。
12.如权利要求8-11任一项所述的第一协处理器,其特征在于:
所述第二处理器,还用于接收主处理器下发的所述第一子任务,并向所述第一处理器发送所述第一子任务;
所述第一处理器,还用于在接收到所述第一子任务时,启动执行所述第一子任务。
13.如权利要求8-11任一项所述的第一协处理器,其特征在于:
所述第二处理器,还用于接收主处理器下发的所述第一子任务以及所述第一子任务的启动条件,并将所述第一子任务发送给所述第一处理器,在确定达到所述第一子任务的启动条件时,触发所述第一处理器执行所述第一子任务;
所述第一处理器,还用于接收所述第一子任务,在所述第二处理器触发下启动执行所述第一子任务。
14.如权利要求8-13任一项所述的第一协处理器,其特征在于,所述第一处理器为加速器;所述第二处理器为通用处理器。
15.一种计算机系统,其特征在于,包括第一协处理器和第二协处理器;
所述第一协处理器,用于执行第一子任务;
所述第二协处理器,用于执行第二子任务;
所述第一协处理器,还用于在执行第一子任务过程中,根据映射关系确定用于存储所述第一数据的第一存储地址,从所述第一存储地址对应的第一存储空间中读取所述第一数据;所述第一数据是所述第二协处理器在执行第二子任务过程中产生的数据;
所述映射关系中包括所述第二协处理器的标识、第二协处理器所执行的第二子任务的标识与所述第一存储地址的关联关系;
其中,所述第一存储空间位于所述第一协处理器与所述第二协处理器的共享内存中。
16.如权利要求15所述的系统,其特征在于,第一协处理器还包括任务调度引擎,所述任务调度引擎存储有程序代码;
所述第一协处理器,具体用于运行所述任务调度引擎中存储的程序代码,以执行根据映射关系确定用于存储所述第一数据的第一存储空间的第一存储地址。
17.如权利要求15或16所述的系统,其特征在于,所述第一协处理器,还用于:
执行所述第一子任务过程中产生第二数据,根据所述映射关系确定第二存储地址;
其中,所述映射关系中还包括所述第一协处理器的标识、第一协处理器所执行的第一子任务的标识与所述第二存储地址的关联关系;所述第二存储地址对应于第二存储空间,所述第二存储空间用于存储所述第一协处理器执行所述第一子任务过程中产生的第二数据;
将所述第二数据存储在所述第二存储地址对应的第二存储空间中。
18.如权利要求15或16所述的系统,其特征在于,所述第一协处理器,还用于执行所述第一子任务过程中产生第二数据,将所述第二数据存储在第二存储空间,所述第二存储空间对应第二存储地址;
在所述映射关系添加所述第一协处理器的标识、第一协处理器所执行的第一子任务的标识与所述第二存储地址的关联关系。
19.如权利要求15-18任一项所述的系统,其特征在于,所述第一协处理器和所述第二协处理器部署于一个芯片中。
20.如权利要求15-19任一项所述的系统,其特征在于,还包括主处理器:
所述主处理器用于向所述第一协处理器下发所述第一子任务,以及向所述第二协处理器下发所述第二子任务。
21.如权利要求20所述的系统,其特征在于,所述主处理器与所述第一协处理器和所述第二协处理器部署在不同的芯片中。
22.如权利要求20或21所述的系统,其特征在于,所述主处理器,还用于向所述第一协处理器下发所述第一子任务的启动条件,以及向所述第二协处理器下发所述第二子任务的启动条件;
所述第一协处理器,具体用于确定达到所述第一子任务的启动条件时,启动执行所述第一子任务;
所述第二协处理器,具体用于确定达到所述第二子任务的启动条件时,启动执行所述第二子任务。
23.如权利要求22所述的系统,其特征在于,所述第一协处理器包括第一处理器和第二处理器;
所述第二处理器,用于接收来自所述主处理器的第一子任务,以及所述第一子任务的启动条件,并将所述第一子任务发送给所述第一处理器;
所述第二处理器,还用于在确定达到所述第一子任务的启动条件时,触发所述第一处理器执行所述第一子任务;
所述第一处理器,用于在所述第二处理器的触发下执行所述第一子任务。
24.一种芯片,其特征在于,所述芯片包括一个或多个如权利要求8-13任一项所述的第一协处理器。
CN202010277567.9A 2020-04-10 2020-04-10 一种数据传输方法及装置 Pending CN113515483A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010277567.9A CN113515483A (zh) 2020-04-10 2020-04-10 一种数据传输方法及装置
EP21783757.4A EP4123467A4 (en) 2020-04-10 2021-04-07 DATA TRANSMISSION METHOD AND DEVICE
PCT/CN2021/085798 WO2021204147A1 (zh) 2020-04-10 2021-04-07 一种数据传输方法及装置
US17/961,790 US20230038051A1 (en) 2020-04-10 2022-10-07 Data transmission method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010277567.9A CN113515483A (zh) 2020-04-10 2020-04-10 一种数据传输方法及装置

Publications (1)

Publication Number Publication Date
CN113515483A true CN113515483A (zh) 2021-10-19

Family

ID=78022958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010277567.9A Pending CN113515483A (zh) 2020-04-10 2020-04-10 一种数据传输方法及装置

Country Status (4)

Country Link
US (1) US20230038051A1 (zh)
EP (1) EP4123467A4 (zh)
CN (1) CN113515483A (zh)
WO (1) WO2021204147A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115955733A (zh) * 2022-12-30 2023-04-11 中国科学院计算技术研究所 一种通信基带处理器
CN116149861A (zh) * 2023-03-07 2023-05-23 中科计算技术西部研究院 一种基于vpx结构的高速通信方法
WO2023134735A1 (zh) * 2022-01-14 2023-07-20 华为云计算技术有限公司 计算设备、数据处理方法、系统及相关设备
CN117171075A (zh) * 2023-10-27 2023-12-05 上海芯联芯智能科技有限公司 一种电子设备及任务处理方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220308890A1 (en) * 2021-03-29 2022-09-29 Alibaba Singapore Holding Private Limited Multi-processing unit interconnected accelerator systems and configuration techniques

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101000596A (zh) * 2007-01-22 2007-07-18 北京中星微电子有限公司 一种可实现芯片内多核间通信的芯片及通信方法
CN101354693A (zh) * 2008-09-11 2009-01-28 重庆邮电大学 一种异构多核处理器的核间通信调度系统及方法
WO2014178450A1 (ko) * 2013-04-30 2014-11-06 전자부품연구원 Cpu와 gpu 간의 협업 시스템 및 그 방법
CN104471540A (zh) * 2012-08-17 2015-03-25 英特尔公司 通过统一存储器架构的存储器共享
CN106959881A (zh) * 2016-01-08 2017-07-18 华为技术有限公司 发送数据的方法和装置
CN109923519A (zh) * 2016-08-05 2019-06-21 英特尔Ip公司 用于加速多核计算架构中的图形工作负荷的机制

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US9471532B2 (en) * 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
CN108932213A (zh) * 2017-10-10 2018-12-04 北京猎户星空科技有限公司 多操作系统间的通讯方法、装置、电子设备和存储介质
CN108959149B (zh) * 2018-06-28 2022-04-19 南京南瑞继保电气有限公司 一种基于共享内存的多核处理器交互总线设计方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101000596A (zh) * 2007-01-22 2007-07-18 北京中星微电子有限公司 一种可实现芯片内多核间通信的芯片及通信方法
CN101354693A (zh) * 2008-09-11 2009-01-28 重庆邮电大学 一种异构多核处理器的核间通信调度系统及方法
CN104471540A (zh) * 2012-08-17 2015-03-25 英特尔公司 通过统一存储器架构的存储器共享
WO2014178450A1 (ko) * 2013-04-30 2014-11-06 전자부품연구원 Cpu와 gpu 간의 협업 시스템 및 그 방법
CN106959881A (zh) * 2016-01-08 2017-07-18 华为技术有限公司 发送数据的方法和装置
CN109923519A (zh) * 2016-08-05 2019-06-21 英特尔Ip公司 用于加速多核计算架构中的图形工作负荷的机制

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023134735A1 (zh) * 2022-01-14 2023-07-20 华为云计算技术有限公司 计算设备、数据处理方法、系统及相关设备
CN115955733A (zh) * 2022-12-30 2023-04-11 中国科学院计算技术研究所 一种通信基带处理器
CN116149861A (zh) * 2023-03-07 2023-05-23 中科计算技术西部研究院 一种基于vpx结构的高速通信方法
CN116149861B (zh) * 2023-03-07 2023-10-20 中科计算技术西部研究院 一种基于vpx结构的高速通信方法
CN117171075A (zh) * 2023-10-27 2023-12-05 上海芯联芯智能科技有限公司 一种电子设备及任务处理方法
CN117171075B (zh) * 2023-10-27 2024-02-06 上海芯联芯智能科技有限公司 一种电子设备及任务处理方法

Also Published As

Publication number Publication date
WO2021204147A1 (zh) 2021-10-14
US20230038051A1 (en) 2023-02-09
EP4123467A4 (en) 2023-09-20
EP4123467A1 (en) 2023-01-25

Similar Documents

Publication Publication Date Title
CN113515483A (zh) 一种数据传输方法及装置
RU2571366C2 (ru) Виртуальная архитектура неоднородного доступа к памяти для виртуальных машин
KR101090651B1 (ko) 가상 머신 모니터 및 멀티프로세서 시스템
JP4702127B2 (ja) 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
KR101823505B1 (ko) 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법
CN111309649B (zh) 一种数据传输和任务处理方法、装置及设备
Gu et al. GaiaGPU: Sharing GPUs in container clouds
WO2018032519A1 (zh) 一种资源分配方法、装置及numa系统
US10725824B2 (en) Thread associated memory allocation and memory architecture aware allocation
US9471387B2 (en) Scheduling in job execution
WO2012052775A1 (en) Data processing systems
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US20210149729A1 (en) Task scheduling for machine-learning workloads
CN114490433A (zh) 存储空间的管理方法、数据处理芯片、设备和存储介质
CN107528871B (zh) 存储系统中的数据分析
US9158692B2 (en) Cache injection directing technique
US9015418B2 (en) Self-sizing dynamic cache for virtualized environments
US20240126561A1 (en) Dynamic distribution of container images
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
CN114281516A (zh) 一种基于numa属性的资源分配方法及装置
CN111837104A (zh) 一种在多个处理器之间调度软件任务的方法和装置
Kim et al. FusionFlow: Accelerating Data Preprocessing for Machine Learning with CPU-GPU Cooperation
CN117311910B (zh) 一种高性能虚拟密码机运行方法
WO2024012153A1 (zh) 一种数据处理方法及装置
JP6998419B2 (ja) 制御プログラム

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