CN109684085B - 内存访问方法及相关产品 - Google Patents
内存访问方法及相关产品 Download PDFInfo
- Publication number
- CN109684085B CN109684085B CN201811535161.5A CN201811535161A CN109684085B CN 109684085 B CN109684085 B CN 109684085B CN 201811535161 A CN201811535161 A CN 201811535161A CN 109684085 B CN109684085 B CN 109684085B
- Authority
- CN
- China
- Prior art keywords
- target
- memory
- artificial intelligence
- main memory
- access
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
本申请涉及一种内存访问方法及相关产品。该方法应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,该方法中的多个人工智能处理器在并行计算时,可避免所有人工智能处理器通过相同的内存通道访问内存导致带宽不够的问题,提高了各个人工智能处理器的计算速度。
Description
技术领域
本申请涉及计算机领域,特别是涉及一种内存访问方法及相关产品。
背景技术
随着互联网技术的不断发展,各种应用软件层出不穷。为了提升设备处理应用软件的性能,通常采用硬件加速的方法,即通过通用处理器和专用处理器异构计算的方式来提高设备的计算速度,从而提升设备处理应用软件的性能。
在异构计算架构中,当专用处理器存在多个,且需要多个专用处理器并行计算时,多个专用处理器同时访问设备的物理内存。
但是,当各个专用处理器访问内存的带宽需求超过内存实际带宽时,会降低各个专用处理器的计算速度。
发明内容
基于此,有必要针对传统方式中的在多个专用处理器并行计算,同时访问设备的物理内存时,会降低各个专用处理器的计算速度的技术问题,提供一种内存访问方法及相关产品。
第一方面,提供一种内存访问方法,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述方法包括:
目标人工智能处理器通过目标并行线程接收所述CPU发出的人工智能处理器计算指令,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;
所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;其中,所述多个并行线程中至少有两个线程对应不同的内存通道。
本实施例提供的内存访问方法,在目标人工智能处理器通过目标并行线程接收到CPU发出的人工智能处理器计算指令之后,目标人工智能处理器通过目标并行线程对应的内存通道,根据人工智能处理器计算指令对内存通道对应的物理内存进行访问。由于多个并行线程中至少有两个线程对应不同的内存通道,这样,在多个人工智能处理器并行计算时,便至少有两个人工智能处理器根据不同的内存通道,访问内存通道对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题。与传统技术中的多个人工智能处理器同时访问同一通道对应的内存相比,提高了各个人工智能处理器的计算速度。
在其中一个实施例中,所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问,包括:
所述目标人工智能处理器获取所述目标并行线程对应的内存虚拟地址;
所述目标人工智能处理器根据所述内存虚拟地址和通道映射关系,确定所述内存虚拟地址对应的内存通道;其中,所述通道映射关系中包括内存虚拟地址和内存通道之间的映射关系;
所述目标人工智能处理器根据确定出的内存通道,对所述内存通道对应的物理内存进行访问。
在其中一个实施例中,还包括:
当所述目标人工智能处理器运行人工智能算法结束之后,所述目标人工智能处理器将计算结果发送给所述CPU。
在其中一个实施例中,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
在其中一个实施例中,当所述目标人工智能处理器运行的是神经网络算法时,所述访问包括从所述物理内存中读取输入数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种,以及向所述物理内存中写入输出数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种。
第二方面,提供一种内存访问方法,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述方法包括:
所述CPU通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令,以使所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器;所述多个并行线程中至少有两个线程对应不同的内存通道。
本实施例提供的内存访问方法,CPU可以通过目标并行线程将人工智能处理器计算指令发送给目标人工智能处理器,以使目标人工智能处理器根据目标并行线程对应的内存通道,对内存通道对应的物理内存进行访问。在对内存访问的过程中,由于多个并行线程中至少有两个线程对应不同的内存通道,这样,在多个人工智能处理器并行计算时,便至少有两个人工智能处理器根据不同的内存通道,访问内存通道对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题。与传统技术中的多个人工智能处理器同时访问同一通道中的内存相比,提高了各个人工智能处理器的计算速度。
在其中一个实施例中,在所述CPU通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令之前,还包括:
所述CPU根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间。
在其中一个实施例中,在所述CPU根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间之前,所述方法还包括:
所述CPU判断所述内存空间是否小于或等于所述内存通道对应的物理内存的空间;
若是,则向与所述内存通道对应的物理内存申请所述内存空间。
在其中一个实施例中,还包括:
若否,则输出错误信息。
在其中一个实施例中,还包括:
当所述CPU接收到所述目标人工智能处理器发送的计算结果时,所述CPU释放所述内存空间;所述计算结果是所述目标人工智能处理器运行所述人工智能算法结束后发送的。
在其中一个实施例中,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
第三方面,提供一种内存访问装置,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述装置包括:
接收模块,用于通过目标并行线程接收所述CPU发出的人工智能处理器计算指令;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;
处理模块,用于通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;其中,所述多个并行线程中至少有两个线程对应不同的内存通道。
在其中一个实施例中,所述处理模块包括:
获取单元,用于获取所述目标并行线程对应的内存虚拟地址;
确定单元,用于根据所述内存虚拟地址和通道映射关系,确定所述内存虚拟地址对应的内存通道;其中,所述通道映射关系中包括内存虚拟地址和内存通道之间的映射关系;
处理单元,用于根据确定出的内存通道,对所述内存通道对应的物理内存进行访问。
在其中一个实施例中,所述装置还包括:
发送模块,用于当所述装置运行人工智能算法结束之后,将计算结果发送给所述CPU。
在其中一个实施例中,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
在其中一个实施例中,当所述装置运行的是神经网络算法时,所述访问包括从所述物理内存中读取输入数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种,以及向所述物理内存中写入输出数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种。
第四方面,提供一种内存访问装置,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述装置包括:
发送模块,用于通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令,以使所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器;所述多个并行线程中至少有两个线程对应不同的内存通道。
在其中一个实施例中,还包括:
处理模块,用于在所述发送模块通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令之前,根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间。
在其中一个实施例中,还包括:
判断模块,用于在所述处理模块根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间之前,判断所述内存空间是否小于或等于所述内存通道对应的物理内存的空间;
所述处理模块,还用于在所述判断模块判断所述内存空间小于或等于所述内存通道对应的物理内存的空间时,向与所述内存通道对应的物理内存申请所述内存空间。
在其中一个实施例中,还包括:
输出模块,用于在所述判断模块判断所述内存空间大于所述内存通道对应的物理内存的空间时,输出错误信息。
在其中一个实施例中,还包括:
接收模块,用于接收所述目标人工智能处理器发送的计算结果;
所述处理模块,还用于在所述接收模块接收到所述目标人工智能处理器发送的计算结果时,释放所述内存空间;所述计算结果是所述目标人工智能处理器运行所述人工智能算法结束后发送的。
在其中一个实施例中,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
第五方面,提供一种板卡,应用于异构计算架构中,所述板卡包括:多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存;其中,目标人工智能处理器用于在通过目标并行线程接收通用处理器CPU发出的人工智能处理器计算指令后,通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;所述多个并行线程中至少有两个线程对应不同的内存通道。
第六方面,提供一种主板,应用于异构计算架构中,所述主板包括:通用处理器CPU和板卡;所述板卡包括:多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存;其中,目标人工智能处理器用于在通过目标并行线程接收通用处理器CPU发出的人工智能处理器计算指令后,通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;所述多个并行线程中至少有两个线程对应不同的内存通道。
第七方面,提供一种电子设备,应用于异构计算架构中,所述电子设备包括主板;所述主板包括:通用处理器CPU和板卡;所述板卡包括:多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存;其中,目标人工智能处理器用于在通过目标并行线程接收通用处理器CPU发出的人工智能处理器计算指令后,通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;所述多个并行线程中至少有两个线程对应不同的内存通道。
本实施例提供的板卡、主板以及电子设备,上述板卡上的目标人工智能处理器在通过目标并行线程接收到CPU发出的人工智能处理器计算指令之后,目标人工智能处理器通过目标并行线程对应的内存通道,根据人工智能处理器计算指令对内存通道对应的物理内存进行访问。由于多个并行线程中至少有两个线程对应不同的内存通道,这样,在多个人工智能处理器并行计算时,便至少有两个人工智能处理器根据不同的内存通道,访问内存通道对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题。与传统技术中的多个人工智能处理器同时访问同一通道对应的内存相比,提高了各个人工智能处理器的计算速度。
附图说明
图1为本申请实施例提供的内存访问方法应用的***架构图;
图2为一实施例提供的内存访问方法流程示意图;
图3为另一实施例提供的内存访问方法流程示意图;
图4为另一实施例提供的内存访问方法流程示意图;
图5为另一实施例提供的内存访问方法中人工智能处理器访问内存的过程示意图;
图6为另一实施例提供的内存访问方法流程示意图;
图7为一实施例提供的内存访问装置的内部结构示意图;
图8为另一实施例提供的内存访问装置的内部结构示意图;
图9为另一实施例提供的内存访问装置的内部结构示意图;
图10为一实施例提供的内存访问装置的内部结构示意图;
图11为另一实施例提供的内存访问装置的内部结构示意图;
图12为另一实施例提供的内存访问装置的内部结构示意图;
图13为另一实施例提供的内存访问装置的内部结构示意图;
图14为另一实施例提供的内存访问装置的内部结构示意图;
图15为一实施例提供的用于异构计算架构的板卡结构示意图;
图16为一实施例提供的用于异构计算架构的主板结构示意图。
具体实施方式
本申请实施例提供的内存访问方法,应用于计算多元化的应用场景,例如需要进行海量计算以及处理海量数据、海量图片的应用场景。其可以适用于如图1所示的异构计算架构***,该***可以包括通用处理器10和专用处理器11。其中,通用处理器10与专用处理器11异构计算,通用控制器10通过控制专用处理器11共同完成用户指定的任务(如图像识别任务)。可选的,上述专用处理器11可以为人工智能处理器。
传统技术中,当上述专用处理器存在多个,且在多个专用处理器并行计算时,多个专用处理器同时访问***的物理内存。但是,当并行计算的各个专用处理器访问内存的带宽需求超过了内存实际带宽时,会降低并行计算的各个专用处理器的计算速度。为此,本申请实施例提供的内存访问方法及相关产品,旨在解决上述传统技术中存在的技术问题。
为了使本申请的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本申请实施例中的技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定申请。
下面,先以执行主体为人工智能处理器为例进行介绍,具体的:
图2为一实施例提供的内存访问方法流程示意图。本实施例涉及的是人工智能处理器在并行计算时如何访问内存的具体过程。如图2所示,该方法可以包括:
S101、目标人工智能处理器通过目标并行线程接收所述CPU发出的人工智能处理器计算指令。
具体的,如图2所示的方法应用于异构计算架构中,该异构计算架构包括通用处理器CPU和多个人工智能处理器,多个人工智能处理器对应的内存为多通道内存。在实际应用中,为了提高数据处理的效率,CPU可以采用多线程并行处理的机制进行数据处理。可选的,上述每个内存通道对应的物理内存的带宽可以相同,也可以不相同,可以根据实际的需求,对每个内存通道对应的物理内存的带宽进行相应的设置。同样的,可以根据实际的应用需求,对多个人工智能处理器对应的多通道内存的内存通道数进行设置。可选的,多通道内存的内存通道个数小于或等于人工智能处理器个数。同时,上述每个内存通道对应一个内存控制器,通过内存控制器的控制实现各个人工智能处理器与每个内存通道对应的内存颗粒进行交互。
在数据处理过程中,由于CPU在进行海量计算、处理海量数据以及海量图片时遇到越来越多的性能瓶颈,为了满足多元化的计算需求,通过引入人工智能处理器进行加速计算,以协助CPU完成指定任务的处理。因此,当CPU采用多线程并行处理机制进行数据处理,且并行运行的每个线程均需要人工智能处理器协助时,CPU通过多个并行线程向多个人工智能处理器发送人工智能处理器计算指令。具体的,以多个人工智能处理器中的任一人工智能处理器(即目标人工智能处理器)为例,目标人工智能处理器通过目标并行线程接收CPU发出的人工智能处理器计算指令,在目标人工智能处理器接收到CPU发送的人工智能处理器计算指令后,由目标人工智能处理器继续对数据进行更为复杂得处理。其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个。例如,在图像识别过程中,CPU可以通过I/O接口从其它设备中获取待识别的图像或图像集,将待识别的图像或图像集交给目标人工智能处理器,由目标人工智能处理器对图像进行识别。
S102、所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问。
具体的,多个并行线程中的每个线程对应一个内存通道,其中,多个并行线程中的部分线程可能对应同一内存通道,也可能对应不同的内存通道,只需保证多个并行线程中至少有两个线程对应不同的内存通道即可,本实施例对多个并行线程与内存通道的具体对应方式不做限定。由于多个人工智能处理器对应的内存为多通道内存,且多个并行线程中至少有两个线程对应不同的内存通道,这样,目标人工智能处理器在对数据进行处理时,即目标人工智能处理器在并行计算时,目标人工智能处理器便可以根据CPU发出的人工智能处理器计算指令,通过自身所处理的目标并行线程对应的内存通道,对内存通道对应的物理内存进行访问。可选的,当目标人工智能处理器运行的是神经网络算法时,上述访问包括从物理内存中读取输入数据、神经元数据、权值数据以及目标人工智能处理器计算的中间结果数据中的至少一种,以及向物理内存中写入输出数据、神经元数据、权值数据以及目标人工智能处理器计算的中间结果数据中的至少一种。
由于多个并行线程中至少有两个线程对应不同的内存通道,这样,多个人工智能处理器在并行计算时,便至少有两个人工智能处理器通过不同的内存通道访问对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题,相对于传统技术,提高了各个人工智能处理器的计算速度。
多个人工智能处理器进行并行计算时,此并行计算可以为人工智能算法训练过程中的计算,也可以是运用已经训练好的人工智能算法进行数据处理过程中的计算。以目标人工智能处理器进行的并行计算为人工智能算法训练过程中的计算,且以人工智能算法为神经网络算法为例,介绍目标人工智能处理器访问内存的具体过程。具体的,目标人工智能处理器获取训练数据,通过神经网络中的各层依次对训练数据执行正向运算,然后将运算后的训练数据经过各层的反向运算,再经过权值更新的过程,从而得到训练好的神经网络算法。在某一层的运算过程中,目标人工智能处理器通过目标并行线程对应的内存通道,从内存通道对应的物理内存中读取输入数据(输入数据可以为训练数据,也可以为上一层计算的输出数据)、神经元数据、权值数据以及运算过程产生的中间结果数据,进行相应的运算,并将计算过程中产生的神经元数据、权值数据、中间结果数据以及输出数据写入上述内存通道对应的物理内存中。对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层神经网络执行完成之后,下一层的运算指令会将人工智能处理器中的运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层神经网络的反向运算执行完成后,下一层运算指令会将人工智能处理器中的运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,当所述目标人工智能处理器运行人工智能算法结束之后,所述目标人工智能处理器将计算结果发送给所述CPU。当然,当所述目标人工智能处理器运行人工智能算法结束之后,所述目标人工智能处理器可以向所述CPU发送计算结束通知消息;所述计算结束通知消息用于指示所述CPU读取所述目标人工智能处理器的计算结果。
具体的,以对多张图像进行识别,且CPU并行处理的线程数为4个为例,CPU通过I/O接口从其它设备中获取到多张图像,并启动4个并行线程进行图像识别,由于CPU在图像识别上的性能没有人工智能处理器的性能优,因此,CPU向并行运行的每个线程内使用的人工智能处理器发出人工智能处理器计算指令,由人工智能处理器对图像进行识别。以4个并行线程中的任一个线程(目标并行线程)为例,此时,运行该目标并行线程的人工智能处理器为上述所提到的目标人工智能处理器,目标人工智能处理器在图像识别的过程中,通过目标并行线程对应的内存通道,根据人工智能处理器计算指令,对上述内存通道对应的物理内存进行访问。在一种可选的实施方式中,在计算结束之后,目标人工智能处理器将计算结果(图像识别结果)发送给CPU,由CPU通过I/O接口向用户输出图像识别结果。在另一种可选的实施方式中,在计算结束之后,目标人工智能处理器向CPU发送计算结束通知消息,以指示CPU从内存通道对应的物理内存中读取目标人工智能处理器的计算结果(图像识别结果)。在CPU获取到计算结果后,通过I/O接口向用户输出图像识别结果。
本实施例提供的内存访问方法,在目标人工智能处理器通过目标并行线程接收到CPU发出的人工智能处理器计算指令之后,目标人工智能处理器通过目标并行线程对应的内存通道,根据人工智能处理器计算指令对内存通道对应的物理内存进行访问。由于多个并行线程中至少有两个线程对应不同的内存通道,这样,在多个人工智能处理器并行计算时,便至少有两个人工智能处理器根据不同的内存通道,访问内存通道对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题。与传统技术中的多个人工智能处理器同时访问同一通道对应的内存相比,提高了各个人工智能处理器的计算速度。
图3为另一实施例提供的内存访问方法流程示意图。本实施例涉及的是人工智能处理器如何根据统一的内存编址进行内存访问的具体过程。可选的,在上述实施例的基础上,如图3所示,上述S102可以包括:
S201、所述目标人工智能处理器获取所述目标并行线程对应的内存虚拟地址。
具体的,在多个人工智能处理器对应的多通道内存在硬件上配置好之后,接下来需要对该内存进行统一编址。统一编址指的是将内存虚拟地址与内存通道之间建立对应关系(即S202中提到的通道映射关系),且对不同的并行线程配置了对应的内存虚拟地址。在统一编址完成后,由于预先为每个并行线程配置了对应的内存虚拟地址,这样,当目标人工智能处理器需要对目标并行线程进行处理时,目标人工智能处理器便可以直接获取到目标并行线程对应的内存虚拟地址。
S202、所述目标人工智能处理器根据所述内存虚拟地址和通道映射关系,确定所述内存虚拟地址对应的内存通道。
其中,所述通道映射关系中包括内存虚拟地址和内存通道之间的映射关系。示例性的,以内存虚拟地址为0-500,且内存包括的内存通道个数为4个为例,上述通道映射关系可以如下表1所示:
表1
内存虚拟地址 | 内存通道 |
0-100 | 0 |
101-200 | 1 |
201-300 | 2 |
301-400 | 0 |
401-500 | 3 |
在目标人工智能处理器获取到目标并行线程对应的内存虚拟地址之后,目标人工智能处理器可以根据获取到的内存虚拟地址,查找如上述表1所示的通道映射关系,从而确定出目标并行线程对应的内存通道。
S203、所述目标人工智能处理器根据确定出的内存通道,对所述内存通道对应的物理内存进行访问。
具体的,在目标人工智能处理器得到目标并行线程对应的内存通道之后,目标人工智能处理器便可以通过上述得到的内存通道,对内存通道对应的物理内存进行访问。同样的,当目标人工智能处理器采用的是神经网络算法时,在目标人工智能处理器并行计算过程中,目标人工智能处理器不断得从该内存通道对应的物理内存中读取输入数据、神经元数据、权值数据以及计算过程产生的中间结果数据等,同时也将输出数据、计算过程中产生的神经元数据、权值数据以及中间结果数据等数据写入该内存通道对应的物理内存中。
本实施例提供的内存访问方法,目标人工智能处理器可以根据目标并行线程对应的内存虚拟地址和通道映射关系,确定目标并行线程对应的内存通道,然后根据确定出的内存通道,对内存通道对应的物理内存进行访问。由于通道映射关系反映的是对内存统一编址的情况,且通道映射关系是可以自由配置的,这样,当内存在硬件上配置为多通道内存之后,可以通过自由配置的通道映射关系以及目标人工智能处理器所处理的目标并行线程对应的内存虚拟地址,将目标并行线程与内存通道建立起对应关系,从而使得目标人工智能处理器在并行计算时,可以根据目标并行线程对应的内存通道,对内存通道对应的物理内存进行访问,提高了内存统一编址的灵活性。同时,由于多个并行线程中至少有两个线程对应不同的内存通道,这样,在多个人工智能处理器并行计算时,便至少有两个人工智能处理器根据不同的内存通道,访问内存通道对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题。与传统技术中的多个人工智能处理器同时访问同一通道中的内存相比,提高了各个人工智能处理器的计算速度。
接下来,再以执行主体为CPU为例进行介绍,具体的:
一实施例提供了一种内存访问方法,该方法应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,该方法包括:所述CPU通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令,以使所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器;所述多个并行线程中至少有两个线程对应不同的内存通道。
具体的,上述多通道内存中的每个内存通道对应的物理内存的带宽可以相同,也可以不相同,可以根据实际的需求,对每个内存通道对应的物理内存的带宽进行相应的设置。同样的,可以根据实际的应用需求,对多个人工智能处理器对应的多通道内存的内存通道数进行设置。可选的,多通道内存的内存通道个数小于或等于人工智能处理器个数。同时,上述每个内存通道对应一个内存控制器,通过内存控制器的控制实现各个人工智能处理器与每个内存通道对应的内存颗粒进行交互。
在实际应用中,为了满足多元化的计算需求,通过引入人工智能处理器进行加速计算,以协助CPU完成指定任务的处理。因此,当CPU采用多线程并行处理机制进行数据处理,且并行运行的每个线程均需要人工智能处理器协助时,CPU通过多个并行线程向多个人工智能处理器发送人工智能处理器计算指令。以CPU向多个人工智能处理器中的任一人工智能处理器(即目标人工智能处理器)发送人工智能处理器计算指令,即以CPU向目标人工智能处理器发送人工智能处理器计算指令为例进行介绍,CPU通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令,在目标人工智能处理器接收到人工智能处理器计算指令之后,目标人工智能处理器对数据进行更为复杂得处理。在数据处理过程中,目标人工智能处理器便可以根据目标并行线程对应的内存通道,对内存通道对应的物理内存进行访问。可选的,当目标人工智能处理器运行的是神经网络算法时,上述访问包括从物理内存中读取输入数据、神经元数据、权值数据以及目标人工智能处理器计算的中间结果数据中的至少一种,以及向物理内存中写入输出数据、神经元数据、权值数据以及目标人工智能处理器计算的中间结果数据中的至少一种。
本实施例提供的内存访问方法,CPU可以通过目标并行线程将人工智能处理器计算指令发送给目标人工智能处理器,以使目标人工智能处理器根据目标并行线程对应的内存通道,对内存通道对应的物理内存进行访问。在对内存访问的过程中,由于多个并行线程中至少有两个线程对应不同的内存通道,这样,在多个人工智能处理器并行计算时,便至少有两个人工智能处理器根据不同的内存通道,访问内存通道对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题。与传统技术中的多个人工智能处理器同时访问同一通道中的内存相比,提高了各个人工智能处理器的计算速度。
为了提高内存的空间利用率,可选的,在所述CPU通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令之前,CPU可以根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间。这样,在目标人工智能处理器进行数据处理的过程中,仅仅占用了内存通道对应的物理内存中的上述内存空间。当上述内存空间小于内存通道对应的物理内存空间时,内存通道对应的物理内存中剩余的内存空间便可以供其它线程使用。
本实施例提供的内存访问方法,由于CPU可以根据目标人工智能处理器运行人工智能算法时所需的内存空间,向内存通道对应的物理内存申请内存空间,使得所需的内存空间与申请的内存空间容量匹配,避免了内存空间的浪费,从而提高了内存的利用率。
在CPU申请内存空间时,可以根据下述如图4所示的过程进行内存空间的申请,在上述实施例的基础上,可选的,如图4所示,该方法还包括:
S301、所述CPU判断所述内存空间是否小于或等于所述内存通道对应的物理内存的空间,若是,则执行S302,若否,则执行S303。
S302、所述CPU向所述内存通道对应的物理内存申请所述内存空间。
S303、所述CPU输出错误信息。
本实施例提供的内存访问方法,由于CPU在申请内存空间时,能够根据所要申请的内存空间与内存通道对应的物理内存的空间的大小关系,进行相应的操作,并在无法申请内存空间时向用户输出错误信息,从而提高了人机交互的智能性。
可选的,当所述CPU接收到所述目标人工智能处理器发送的计算结果时,所述CPU释放所述内存空间。其中,所述计算结果是所述目标人工智能处理器运行所述人工智能算法结束后发送的。当然,CPU获取目标人工智能处理器的计算结果可以是CPU主动获取到,也可以是CPU接收目标人工智能处理器发送的。可选的,CPU可以在接收到所述目标人工智能处理器发送的计算结束通知消息时,根据所述计算结束通知消息,读取所述目标人工智能处理器的计算结果,并释放所述内存空间。这样,释放后的内存空间,可供其它线程使用,进一步提高了内存的利用率。
为了便于本领域技术人员的理解,以下以CPU启动的并行线程个数、异构计算架构中包括的人工智能处理器个数以及多通道内存的内存通道数均为4个,且4条并行线程分别对应不同的内存通道为例介绍本申请提供的内存访问方法,具体的,如图5和图6所示:
假设,上述4条并行线程与多通道内存的内存通道之间的对应关系以及4条并行线程与人工智能处理器之间的对应关系如图5所示,即并行线程1对应内存通道0,并行线程2对应内存通道1、并行线程3对应内存通道2,并行线程4对应内存通道3;人工智能处理器0运行并行线程1、人工智能处理器1运行并行线程2、人工智能处理器2运行并行线程3、人工智能处理器3运行并行线程4。参见图6,当CPU采用多线程并行处理机制进行数据处理,且这4条并行线程中的每个并行线程均需要人工智能处理器协助完成任务时,CPU通过并行线程1向人工智能处理器0发送人工智能处理器计算指令,通过并行线程2向人工智能处理器1发送人工智能处理器计算指令,通过并行线程3向人工智能处理器2发送人工智能处理器计算指令,通过并行线程4向人工智能处理器3发送人工智能处理器计算指令,以使人工智能处理器0、人工智能处理器1、人工智能处理器2以及人工智能处理器3协助CPU进行数据处理。同时,在此之前CPU根据人工智能处理0运行人工智能算法时所需的内存空间1,向内存通道0对应的物理内存申请上述内存空间1;CPU根据人工智能处理器1运行人工智能算法时所需的内存空间2,向内存通道1对应的物理内存申请上述内存空间2;CPU根据人工智能处理器2运行人工智能算法时所需的内存空间3,向内存通道2对应的物理内存申请上述内存空间3;CPU根据人工智能处理器3运行人工智能算法时所需的内存空间4,向内存通道3对应的物理内存申请上述内存空间4。接着,CPU可以将输入数据分别拷入至内存通道0对应的物理内存中、内存通道1对应的物理内存中、内存通道2对应的物理内存中以及内存通道3对应的物理内存中,即图6中所述的数据拷入。这样,人工智能处理器0、人工智能处理器1、人工智能处理器2以及人工智能处理器3便可以进行并行计算,在计算过程中不断对物理内存进行访问。继续参见图5,可以看出人工智能处理器0通过内存通道0,对内存通道0对应的物理内存进行访问,人工智能处理器1通过内存通道1,对内存通道1对应的物理内存进行访问,人工智能处理器2通过内存通道2,对内存通道2对应的物理内存进行访问,人工智能处理器3通过内存通道3,对内存通道3对应的物理内存进行访问。
在人工智能处理器0、人工智能处理器1、人工智能处理器2以及人工智能处理器3并行计算结束后,CPU从内存通道0对应的物理内存中拷出人工智能处理器0的计算结果,CPU从内存通道1对应的物理内存中拷出人工智能处理器1的计算结果,CPU从内存通道2对应的物理内存中拷出人工智能处理器2的计算结果,CPU从内存通道3对应的物理内存中拷出人工智能处理器3的计算结果,即图6中所述的数据拷出。在CPU获取到各个人工智能处理器的计算结果后,CPU释放上述内存空间1、上述内存空间2、上述内存空间3以及上述内存空间4。最后,CPU通过I/O接口向用户输出计算结果。
综上所述,由于4个并行线程分别对应不同的内存通道,这样,在4个人工智能处理器并行计算时,各个人工智能处理器便可以根据不同的内存通道,访问内存通道对应的物理内存,有效避免了所有人工智能处理器通过同一内存通道访问内存的问题。与传统技术中的所有人工智能处理器同时访问同一内存通道对应的内存相比,提高了各个人工智能处理器的计算速度。
图7为一实施例提供的内存访问装置的内部结构示意图。该装置应用于异构计算架构中,所述异构计算架构包括CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,如图7所示,该装置可以包括:接收模块21和处理模块22。
具体的,接收模块21,用于通过目标并行线程接收所述CPU发出的人工智能处理器计算指令;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;
处理模块22,用于通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;其中,所述多个并行线程中至少有两个线程对应不同的内存通道。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图8为另一实施例提供的内存访问装置的内部结构示意图。在上述实施例的基础上,可选的,如图8所示,上述处理模块22可以包括:获取单元221、确定单元222和处理单元223。
具体的,获取单元221,用于获取所述目标并行线程对应的内存虚拟地址;
确定单元222,用于根据所述内存虚拟地址和通道映射关系,确定所述内存虚拟地址对应的内存通道;其中,所述通道映射关系中包括内存虚拟地址和内存通道之间的映射关系;
处理单元223,用于根据确定出的内存通道,对所述内存通道对应的物理内存进行访问。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图9为另一实施例提供的内存访问装置的内部结构示意图。在上述实施例的基础上,可选的,如图9所示,上述装置还包括:发送模块23。
具体的,发送模块23用于当所述装置运行人工智能算法结束之后,将计算结果发送给所述CPU。
可选的,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
可选的,当所述装置运行的是神经网络算法时,所述访问包括从所述物理内存中读取输入数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种,以及向所述物理内存中写入输出数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
关于内存访问装置的具体限定可以参见上文中对于内存访问方法的限定,在此不再赘述。上述内存访问装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于人工智能处理器中,也可以以软件形式存储于人工智能处理器对应的存储器中,以便于人工智能处理器调用执行以上各个模块对应的操作。
图10为一实施例提供的内存访问装置的结构示意图。该装置应用于异构计算架构中,所述异构计算架构包括CPU和多个人工智能处理器,多个人工智能处理器对应的内存为多通道内存,如图10所示,该装置可以包括:发送模块31。
具体的,发送模块31,用于通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令,以使所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器;所述多个并行线程中至少有两个线程对应不同的内存通道。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图11为另一实施例提供的内存访问装置的结构示意图。在上述实施例的基础上,可选的,如图11所示,该装置还包括:处理模块32。
具体的,处理模块32,用于在所述发送模块31通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令之前,根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图12为另一实施例提供的内存访问装置的结构示意图。在上述实施例的基础上,可选的,如图12所示,该装置还包括:判断模块33。
具体的,判断模块33,用于在所述处理模块32根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间之前,判断所述内存空间是否小于或等于所述内存通道对应的物理内存的空间;
所述处理模块32,还用于在所述判断模块33判断所述内存空间小于或等于所述内存通道对应的物理内存的空间时,向与所述内存通道对应的物理内存申请所述内存空间。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图13为另一实施例提供的内存访问装置的结构示意图。在上述实施例的基础上,可选的,如图13所示,该装置还包括:输出模块34。
具体的,输出模块34,用于在所述判断模块33判断所述内存空间大于所述内存通道对应的物理内存的空间时,输出错误信息。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图14为另一实施例提供的内存访问装置的结构示意图。在上述实施例的基础上,可选的,如图14所示,该装置还包括:接收模块35。
具体的,接收模块35,用于接收所述目标人工智能处理器发送的计算结果;
所述处理模块32,还用于在所述接收模块35接收到所述目标人工智能处理器发送的计算结果时,释放所述内存空间;所述计算结果是所述目标人工智能处理器运行所述人工智能算法结束后发送的。
可选的,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
本实施例提供的内存访问装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
关于内存访问装置的具体限定可以参见上文中对于内存访问方法的限定,在此不再赘述。上述内存访问装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于CPU中,也可以以软件形式存储于CPU对应的存储器中,以便于人工智能处理器调用执行以上各个模块对应的操作。
在一个实施例中,本申请还提供一种板卡,该板卡应用于异构计算架构中,该板卡可以包括:多个人工智能处理器,多个人工智能处理器对应的内存为多通道内存;其中,目标人工智能处理器用于在通过目标并行线程接收CPU发出的人工智能处理器计算指令后,通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;所述多个并行线程中至少有两个线程对应不同的内存通道。
参见图15所示,上述板卡除了包括上述多个人工智能处理器111(专用处理器11可以包括多个人工智能处理器111)和多通道内存12之外,还可以包含其它配套部件。该配套部件包括但不限于:内存控制器13、总线、接口14。专用处理器11通过接口14与外部设备之间进行指令传输以及数据传输。可选的,外部设备可以为异构计算***中的通用处理器(CPU)10。
在本实施例中,关于本实施例提供的板卡上的目标人工智能处理器通过目标并行线程对应的内存通道,访问内存通道对应的物理内存的过程可以参照上述方法实施例中的描述,本实施例在此不再赘述。
本实施例提供的板卡,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在一个实施例中,本申请还提供一种主板,应用于异构计算架构中,如图16所示,该主板包括:通用处理器(CPU)10和上述实施例提供的板卡,该板卡包括多个人工智能处理器111,多个人工智能处理器111对应的内存为多通道内存;其中,目标人工智能处理器用于在通过目标并行线程接收CPU发出的人工智能处理器计算指令后,通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;所述多个并行线程中至少有两个线程对应不同的内存通道。
在本实施例中,关于本实施例提供的主板上的CPU如何控制板卡上的各个人工智能处理器协同工作,以及板卡上的目标人工智能处理器通过目标并行线程对应的内存通道,访问内存通道对应的物理内存的过程可以参照上述方法实施例中的描述,本实施在此不再赘述。
本实施例提供的主板,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在一个实施例中,提供一种电子设备,该电子设备应用于异构计算架构中,该电子设备包括如图16所示的主板。该主板包括CPU和板卡,板卡包括多个人工智能处理器,多个人工智能处理器对应的内存为多通道内存;其中,目标人工智能处理器用于在通过目标并行线程接收通用处理器CPU发出的人工智能处理器计算指令后,通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问;所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;所述多个并行线程中至少有两个线程对应不同的内存通道。
可选的,电子设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本实施例提供的电子设备,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (25)
1.一种内存访问方法,其特征在于,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述方法包括:
目标人工智能处理器通过目标并行线程接收所述CPU发出的人工智能处理器计算指令,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;
所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,每个所述内存通道对应一个内存控制器,根据所述人工智能处理器计算指令,通过所述内存控制器实现各所述人工智能处理器对所述内存通道对应的物理内存的访问;其中,所述多个并行线程中至少有两个线程对应不同的内存通道。
2.根据权利要求1所述的方法,其特征在于,所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令对所述内存通道对应的物理内存进行访问,包括:
所述目标人工智能处理器获取所述目标并行线程对应的内存虚拟地址;
所述目标人工智能处理器根据所述内存虚拟地址和通道映射关系,确定所述内存虚拟地址对应的内存通道;其中,所述通道映射关系中包括内存虚拟地址和内存通道之间的映射关系;
所述目标人工智能处理器根据确定出的内存通道,对所述内存通道对应的物理内存进行访问。
3.根据权利要求1所述的方法,其特征在于,还包括:
当所述目标人工智能处理器运行人工智能算法结束之后,所述目标人工智能处理器将计算结果发送给所述CPU。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
5.根据权利要求1至3中任一项所述的方法,其特征在于,当所述目标人工智能处理器运行的是神经网络算法时,所述访问包括从所述物理内存中读取输入数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种,以及向所述物理内存中写入输出数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种。
6.一种内存访问方法,其特征在于,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述方法包括:
所述CPU通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令,以使所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令通过内存控制器对所述内存通道对应的物理内存进行访问;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器;所述多个并行线程中至少有两个线程对应不同的内存通道;每个所述内存通道对应一个所述内存控制器。
7.根据权利要求6所述的方法,其特征在于,在所述CPU通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令之前,还包括:
所述CPU根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间。
8.根据权利要求7所述的方法,其特征在于,在所述CPU根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间之前,所述方法还包括:
所述CPU判断所述内存空间是否小于或等于所述内存通道对应的物理内存的空间;
若是,则向与所述内存通道对应的物理内存申请所述内存空间。
9.根据权利要求8所述的方法,其特征在于,还包括:
若否,则输出错误信息。
10.根据权利要求7至9中任一项所述的方法,其特征在于,还包括:
当所述CPU接收到所述目标人工智能处理器发送的计算结果时,所述CPU释放所述内存空间;所述计算结果是所述目标人工智能处理器运行所述人工智能算法结束后发送的。
11.根据权利要求6所述的方法,其特征在于,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
12.一种内存访问装置,其特征在于,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述装置包括:
接收模块,用于通过目标并行线程接收所述CPU发出的人工智能处理器计算指令;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;
处理模块,用于通过与所述目标并行线程对应的内存通道,每个所述内存通道对应一个内存控制器,根据所述人工智能处理器计算指令,通过所述内存控制器实现各所述人工智能处理器对所述内存通道对应的物理内存的访问;其中,所述多个并行线程中至少有两个线程对应不同的内存通道。
13.根据权利要求12所述的装置,其特征在于,所述处理模块包括:
获取单元,用于获取所述目标并行线程对应的内存虚拟地址;
确定单元,用于根据所述内存虚拟地址和通道映射关系,确定所述内存虚拟地址对应的内存通道;其中,所述通道映射关系中包括内存虚拟地址和内存通道之间的映射关系;
处理单元,用于根据确定出的内存通道,对所述内存通道对应的物理内存进行访问。
14.根据权利要求12所述的装置,其特征在于,所述装置还包括:
发送模块,用于当所述装置运行人工智能算法结束之后,将计算结果发送给所述CPU。
15.根据权利要求12至14中任一项所述的装置,其特征在于,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
16.根据权利要求12至14中任一项所述的装置,其特征在于,当所述装置运行的是神经网络算法时,所述访问包括从所述物理内存中读取输入数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种,以及向所述物理内存中写入输出数据、神经元数据、权值数据以及所述目标人工智能处理器计算的中间结果数据中的至少一种。
17.一种内存访问装置,其特征在于,应用于异构计算架构中,所述异构计算架构包括通用处理器CPU和多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存,所述装置包括:
发送模块,用于通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令,以使所述目标人工智能处理器通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令通过内存控制器对所述内存通道对应的物理内存进行访问;其中,所述目标并行线程为所述CPU启动的多个并行线程中的任一个,所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器;所述多个并行线程中至少有两个线程对应不同的内存通道;每个所述内存通道对应一个所述内存控制器。
18.根据权利要求17所述的装置,其特征在于,还包括:
处理模块,用于在所述发送模块通过目标并行线程向目标人工智能处理器发出人工智能处理器计算指令之前,根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间。
19.根据权利要求18所述的装置,其特征在于,还包括:
判断模块,用于在所述处理模块根据所述目标人工智能处理器运行人工智能算法时所需的内存空间,向所述内存通道对应的物理内存申请所述内存空间之前,判断所述内存空间是否小于或等于所述内存通道对应的物理内存的空间;
所述处理模块,还用于在所述判断模块判断所述内存空间小于或等于所述内存通道对应的物理内存的空间时,向与所述内存通道对应的物理内存申请所述内存空间。
20.根据权利要求19所述的装置,其特征在于,还包括:
输出模块,用于在所述判断模块判断所述内存空间大于所述内存通道对应的物理内存的空间时,输出错误信息。
21.根据权利要求18至20中任一项所述的装置,其特征在于,还包括:
接收模块,用于接收所述目标人工智能处理器发送的计算结果;
所述处理模块,还用于在所述接收模块接收到所述目标人工智能处理器发送的计算结果时,释放所述内存空间;所述计算结果是所述目标人工智能处理器运行所述人工智能算法结束后发送的。
22.根据权利要求17所述的装置,其特征在于,所述多通道内存的内存通道个数小于或等于所述人工智能处理器个数。
23.一种板卡,其特征在于,应用于异构计算架构中,所述板卡包括:多个人工智能处理器,所述多个人工智能处理器对应的内存为多通道内存;其中,目标人工智能处理器用于在通过目标并行线程接收通用处理器CPU发出的人工智能处理器计算指令后,通过与所述目标并行线程对应的内存通道,根据所述人工智能处理器计算指令通过内存控制器对所述内存通道对应的物理内存进行访问;所述目标人工智能处理器为所述多个人工智能处理器中的任一人工智能处理器,所述目标并行线程为所述CPU启动的多个并行线程中的任一个;所述多个并行线程中至少有两个线程对应不同的内存通道;每个所述内存通道对应一个所述内存控制器。
24.一种主板,其特征在于,应用于异构计算架构中,所述主板包括:通用处理器CPU和如权利要求23所述的板卡。
25.一种电子设备,其特征在于,应用于异构计算架构中,所述电子设备包括如权利要求24所述的主板。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811535161.5A CN109684085B (zh) | 2018-12-14 | 2018-12-14 | 内存访问方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811535161.5A CN109684085B (zh) | 2018-12-14 | 2018-12-14 | 内存访问方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109684085A CN109684085A (zh) | 2019-04-26 |
CN109684085B true CN109684085B (zh) | 2019-11-12 |
Family
ID=66187689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811535161.5A Active CN109684085B (zh) | 2018-12-14 | 2018-12-14 | 内存访问方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109684085B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114691557A (zh) * | 2020-12-31 | 2022-07-01 | 华为云计算技术有限公司 | 异构计算***以及相关设备 |
US20230077933A1 (en) * | 2021-09-14 | 2023-03-16 | Advanced Micro Devices, Inc. | Supporting processing-in-memory execution in a multiprocessing environment |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101562039A (zh) * | 2008-04-14 | 2009-10-21 | 威刚科技股份有限公司 | 多通道内存储存装置及其控制方法 |
CN101799773A (zh) * | 2010-04-07 | 2010-08-11 | 福州福昕软件开发有限公司 | 并行计算的内存访问方法 |
CN104461727A (zh) * | 2013-09-16 | 2015-03-25 | 华为技术有限公司 | 内存模组访问方法及装置 |
CN105701020A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种内存访问的方法、相关装置和*** |
CN107346267A (zh) * | 2017-07-13 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种基于numa架构的cpu性能优化方法和装置 |
CN104461961B (zh) * | 2014-11-20 | 2018-02-27 | 上海宝存信息科技有限公司 | 一种多核多线程的闪存装置及闪存控制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375805A (zh) * | 2014-11-17 | 2015-02-25 | 天津大学 | 采用多核处理器仿真可重构处理器并行计算过程的方法 |
US10216419B2 (en) * | 2015-11-19 | 2019-02-26 | HGST Netherlands B.V. | Direct interface between graphics processing unit and data storage unit |
-
2018
- 2018-12-14 CN CN201811535161.5A patent/CN109684085B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101562039A (zh) * | 2008-04-14 | 2009-10-21 | 威刚科技股份有限公司 | 多通道内存储存装置及其控制方法 |
CN101799773A (zh) * | 2010-04-07 | 2010-08-11 | 福州福昕软件开发有限公司 | 并行计算的内存访问方法 |
CN104461727A (zh) * | 2013-09-16 | 2015-03-25 | 华为技术有限公司 | 内存模组访问方法及装置 |
CN104461961B (zh) * | 2014-11-20 | 2018-02-27 | 上海宝存信息科技有限公司 | 一种多核多线程的闪存装置及闪存控制方法 |
CN105701020A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种内存访问的方法、相关装置和*** |
CN107346267A (zh) * | 2017-07-13 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种基于numa架构的cpu性能优化方法和装置 |
Non-Patent Citations (2)
Title |
---|
一种减少竞争的内存划分方法;贾刚勇,等;;《计算机研究与发展》;20151231;第52卷(第11期);2599-2607 * |
从人工智能到神经网络处理器;陈云霁;《领导科学论坛》;20170131(第1期);39-55 * |
Also Published As
Publication number | Publication date |
---|---|
CN109684085A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11656910B2 (en) | Data sharing system and data sharing method therefor | |
US20200089535A1 (en) | Data sharing system and data sharing method therefor | |
CN107329734B (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
CN107341547B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
WO2021083276A1 (zh) | 横向联邦和纵向联邦联合方法、装置、设备及介质 | |
EP3564863B1 (en) | Apparatus for executing lstm neural network operation, and operational method | |
CN109684085B (zh) | 内存访问方法及相关产品 | |
WO2017185336A1 (zh) | 用于执行pooling运算的装置和方法 | |
US20200125938A1 (en) | Computing device and method | |
CN108334944B (zh) | 一种人工神经网络运算的装置及方法 | |
CN107315718A (zh) | 一种用于执行向量内积运算的装置和方法 | |
CN115860079B (zh) | 神经网络加速装置、方法、芯片、电子设备及存储介质 | |
CN109903350A (zh) | 图像压缩方法及相关装置 | |
US11709783B1 (en) | Tensor data distribution using grid direct-memory access (DMA) controller | |
CN107315717A (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN106557436A (zh) | 终端的内存压缩功能使能方法及装置 | |
CN112799599A (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
CN109670578A (zh) | 神经网络首层卷积层数据处理方法、装置及计算机设备 | |
CN109754084A (zh) | 网络结构的处理方法、装置及相关产品 | |
CN115249315A (zh) | 面向异构计算设备的深度学习图像分类方法及装置 | |
CN111767995B (zh) | 运算方法、装置及相关产品 | |
US11449737B2 (en) | Model calculation unit and control unit for calculating a multilayer perceptron model with feedforward and feedback | |
CN109389213A (zh) | 存储装置及方法、数据处理装置及方法、电子装置 | |
CN111935026A (zh) | 一种数据传输方法、装置、处理设备及介质 | |
CN108874548A (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Patentee after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Patentee before: Beijing Zhongke Cambrian Technology Co., Ltd. |