CN111324461B - 内存分配方法、装置、计算机设备和存储介质 - Google Patents
内存分配方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111324461B CN111324461B CN202010103604.4A CN202010103604A CN111324461B CN 111324461 B CN111324461 B CN 111324461B CN 202010103604 A CN202010103604 A CN 202010103604A CN 111324461 B CN111324461 B CN 111324461B
- Authority
- CN
- China
- Prior art keywords
- thread
- memory
- local memory
- shared memory
- capacity
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 676
- 238000000034 method Methods 0.000 title claims abstract description 75
- 239000013589 supplement Substances 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 21
- 230000000295 complement effect Effects 0.000 claims description 17
- 230000000153 supplemental effect Effects 0.000 claims description 10
- 230000003993 interaction Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 101710197770 Serine hydroxymethyltransferase 1 Proteins 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请涉及一种内存分配方法、装置、计算机设备和存储介质。所述方法包括:获取待分配内存的以及所述线程所需的局部内存容量;若所述线程所需的局部内存容量大于所述线程对应的本地内存的容量,则确定补充本地内存容量;所述补充本地内存容量为所述线程所需的局部内存容量和所述线程对应的本地内存的容量的差值;根据所述补充本地内存容量在共享内存中确定目标共享内存,并将所述目标共享内存和所述线程对应的本地内存合并后,分配给所述线程。采用本方法能够提高GPU性能。
Description
技术领域
本申请涉及信息技术领域,特别是涉及一种内存分配方法、装置、计算机设备和存储介质。
背景技术
GPU(Graphics Processing Unit,图形处理器),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动终端上做图像和图形相关运算工作的微处理器。其中,GPU的性能高低不仅与GPU运行线程的执行方式相关,还和GPU内存分配方式相关。
相关技术中,编译器在给运行线程分配GPU的内存时,首先会给运行线程分配GPU的本地内存,但是当为运行线程分配的本地内存大小低于该运行线程所需的局部内存大小时,编译器会将GPU的全局内存分配给运行线程,以执行该运行线程。
然而上述技术中由于全局内存的性能较低,从而在使用全局内存运行线程时,会导致GPU性能降低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高GPU性能的内存分配方法、装置、计算机设备和存储介质。
一种内存分配方法,该方法包括:
获取待分配内存的以及该线程所需的局部内存容量;
若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值;
根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
在其中一个实施例中,上述将目标共享内存和线程对应的本地内存合并后,分配给线程,包括:
按照预设的编址规则为目标共享内存以及线程对应的本地内存进行编址,得到目标共享内存对应的第一地址和本地内存对应的第二地址;
将第一地址和第二地址合并后分配给线程。
在其中一个实施例中,上述将第一地址和第二地址合并后分配给线程,包括:
根据预设的指令生成规则将第一地址转化成可操作共享内存的第一指令,以及将第二地址转化成可操作本地内存的第二指令;第一指令用于访问目标共享内存中的数据,第二指令用于访问线程对应的本地内存中的数据;
将第一指令和第二指令分配给线程。
在其中一个实施例中,上述根据补充本地内存容量在共享内存中确定目标共享内存,包括:
根据补充本地内存容量在共享内存的第一共享内存中确定目标共享内存;第一共享内存用于线程进行数据处理。
在其中一个实施例中,上述方法还包括:
按照预设的比例将共享内存划分为第一共享内存和第二共享内存;第二共享内存用于线程之间进行数据交互。
在其中一个实施例中,上述方法还包括:
获取系统数据总线的带宽对齐单位;该带宽对齐单位表征数据总线每次读取的数据量;
根据带宽对齐单位调整线程对应的本地内存的地址边界以及调整目标共享内存的地址边界。
在其中一个实施例中,上述方法还包括:
在线程执行完毕时,释放线程对应的本地内存以及释放目标共享内存。
一种内存分配装置,该装置包括:
获取模块,用于获取待分配内存的以及该线程所需的局部内存容量;
确定模块,用于若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值;
分配模块,用于根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待分配内存的以及该线程所需的局部内存容量;
若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值;
根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待分配内存的以及该线程所需的局部内存容量;
若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值;
根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
上述内存分配方法、装置、计算机设备和存储介质,通过获取待分配内存的以及该线程所需的局部内存容量,将线程所需的容量和线程对应的本地内存的容量进行对比,若线程所需的容量大于线程对应的本地内存的容量,则将线程所需的容量和线程对应的本地内存的容量的差值作为补充本地内存容量,根据该补充本地内存容量在共享内存上确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后分配给线程。在该方法中,由于在给线程分配的本地内存容量不够时,可以在共享内存上确定目标共享内存,而共享内存相对于全局内存的延时较低,因此在将目标共享内存和本地内存分配线程后,线程在运行过程中的延时就相对较低,数据存取速度更快,因此该方法不会影响GPU的性能,那么也就不会降低GPU的性能;同时该方法还可以提高线程对内存访问的效率。
附图说明
图1a为一个实施例中线程块内存储分布的示意图;
图1b为一个实施例中内存分配方法的应用环境图;
图2为一个实施例中内存分配方法的流程示意图;
图3为另一个实施例中内存分配方法的流程示意图;
图4a为另一个实施例中共享内存的划分示意图;
图4b为另一个实施例中本地内存和共享内存结合的示意图;
图5为一个实施例中内存分配装置的结构框图;
图6为另一个实施例中内存分配装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,CPU(Central Processing Unit,中央处理器)和GPU(Graphics ProcessingUnit,图形处理器)而言,L1,L2 cache缓存对于用户而言不可编程,然而在GPU上,Register寄存器,Local memory本地内存,Share memory共享内存,Global memory全局内存资源对于用户可见,因此用户可以最大程度配置内存硬件存储资源,达到低延时高带宽理想性能。编译器程序加载时,CPU给线程块(Block)分配Share memory,线程(Thread)分配Localmemory本地内存和SP(stream process,流处理器),线程块内存储分布如图1a所示,程序运行完后释放相应资源。相关技术中,在某些业务场景,针对线程对内存容量需求较大的情况,一般编译器在给运行线程分配GPU的内存时,首先会给运行线程分配GPU的本地内存,但是当为运行线程分配的本地内存大小低于该运行线程所需的局部内存大小时,编译器会将GPU的全局内存分配给运行线程,以执行该运行线程。然而上述技术中由于GPU的全局内存的性能较低,从而在使用GPU的全局内存运行线程时,会导致GPU性能降低的问题。因此本申请实施例提供一种内存分配方法、装置、计算机设备和存储介质,旨在解决上述技术问题。
本申请提供的内存分配方法可应用于AI(Artificial Intelligence,人工智能)芯片,或者是其它的硬件电路设备中对计算机编程语言进行编译处理,其中AI芯片包括GPU、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、ASIC(ApplicationSpecific Integrated Circuit专用集成电路)。进一步地,内存分配方法可以应用于中央处理器和图形处理器这样的计算机设备上,参见图1b所示,为本申请实施例提供的计算机设备的内部结构图,内存分配方法可以通过神经网络编译器执行,神经网络编译器可以为中央处理器CPU中的部分电路或者全部电路。在图1b中,计算机设备可以包括通过系统总线连接的CPU、GPU、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的CPU、GPU用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种内存分配方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图1b中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
需要说明的是,本申请实施例的执行主体可以是计算机设备,也可以是内存分配装置,当然也可以是计算机设备的CPU,甚至可以是CPU中的编译器,本申请下述实施例将以CPU中的编译器为执行主体来进行说明。
在一个实施例中,提供了一种内存分配方法,本实施例涉及的是如何根据线程所需的容量和本地内存的容量,在共享内存中确定目标共享内存,并将目标共享内存和本地内存合并发给线程的具体过程。以该方法应用于图1b中的GPU为例进行说明,如图2所示,该方法可以包括以下步骤:
S202,获取待分配内存的线程以及该线程所需的局部内存容量。
其中,待分配内存的线程可以是预先根据用户需求设计的线程,待分配内存的线程的数量可以是一个或多个;需要说明的是,这里主要是给线程分配GPU的内存,另外,局部内存容量主要指的是线程所需的本地内存容量,在预先设计线程时,也可以预先为各个线程设计好所需的本地内存容量,即这里的局部内存容量。
具体的,在预先设计线程时,也可以计算得到每个线程所需的局部内存容量,之后,CPU的编译器就可以根据每个线程所需的局部内存容量为每个线程分配内存,具体分配的过程在下述步骤中会进行详细说明。其中,内存容量的单位可以是字节。
S204,若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值。
其中,本地内存的容量的单位也可以是字节。线程对应的本地内存的容量在这里指的是为各个线程预先分配的GPU本地内存的容量。在将GPU本地内存分配给各个线程时,可以是将GPU本地内存的容量均分后分配给各线程,还可以是根据各线程的具体情况,将GPU本地内存的容量不均分后分配给各线程,本实施例主要采用的是将GPU本地内存的容量均分后分配各线程,这样可以对每个线程比较公平,避免出现恶意竞争内存导致应用运行混乱的问题。另外,GPU本地内存一般是属于线程的私有内存空间,其特点是低延时、容量小,主要用于存储线程自身运行产生的数据。
具体的,在得到线程所需的局部内存容量之后,可以将该线程所需的局部内存容量和该线程对应的GPU本地内存的容量进行对比,在一种可能的实施例方式中,若该线程所需的局部内存容量小于等于该线程对应的GPU本地内存的容量,那么就直接将该线程对应的GPU本地内存分配给该线程,然后结束;在另一种可能的实施例方式中,若线程所需的局部内存容量大于该线程对应的GPU本地内存的容量时,那么可以将该线程所需的局部内存容量减去该线程对应的GPU本地内存的容量,得到容量差值,并将该容量差值记为补充本地内存容量。
S206,根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
在本步骤中,需要说明的是,共享内存指的是GPU上的共享内存,属于线程块专有内存空间,也就是说,每个线程块中的GPU共享内存只能供该线程块内部的线程共享使用,不与其他外部线程块共享,在每个线程块执行完毕后,该线程块对应的GPU共享内存空间会释放给别的线程块使用,共享内存的特点是容量较大、延时较低。另外,GPU全局内存属于线程全局共享资源,任何线程块的线程都可以使用全局内存,其特点是容量大、高延时,一般GPU本地内存不够分时,计算机设备会默认给线程分GPU全局内存。
进一步,GPU共享内存的容量的单位也可以是字节,当然目标共享内存的容量的单位也可以是字节。编译器在GPU共享内存中进行内存划分后,就可以得到目标共享内存,目标共享内存在这里指的是在GPU共享内存中为线程的补充本地内存容量划分的内存,这里目标共享内存的容量可以等于补充本地内存容量,也可以大于补充本地内存容量,本实施例对此不作具体限定。另外,在GPU共享内存中进行划分时,可以是将GPU共享内存全部作为目标共享内存,当然也可以是将GPU共享内存的一部分划分出来作为目标共享内存,本实施例对此也不作具体限定。
需要说明的是,在本实施例中,如果补充本地内存容量大于目标共享内存的容量或者大于GPU共享内存容量,那么可以先给线程分配目标共享内存,然后再给线程分配GPU全局内存,这样,相比于给线程全部分配GPU全局内存,线程的运行速度也是更快的,从而也就不会太降低GPU的性能。
具体的,在得到补充本地内存容量后,可以根据该补充本地内存容量,在GPU共享内存中进行划分后,得到目标共享内存,并将目标共享内存和线程对应的本地内存合并后,得到合并后的内存,并将合并后的内存分配给该线程。其中,这里的合并可以是将目标共享内存和线程对应的本地内存进行拼接处理,当然还可以是其他处理方式,本实施例对此也不作具体限定。
上述内存分配方法,通过获取待分配内存的以及该线程所需的局部内存容量,将线程所需的容量和线程对应的本地内存的容量进行对比,若线程所需的容量大于线程对应的本地内存的容量,则将线程所需的容量和线程对应的本地内存的容量的差值作为补充本地内存容量,根据该补充本地内存容量在共享内存上确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后分配给线程。在该方法中,由于在给线程分配的本地内存容量不够时,可以在共享内存上确定目标共享内存,而共享内存相对于全局内存的延时较低,因此在将目标共享内存和本地内存分配线程后,线程在运行过程中的延时就相对较低,数据存取速度更快,因此该方法不会影响GPU的性能,那么也就不会降低GPU的性能;同时该方法还可以提高线程对内存访问的效率。
在另一个实施例中,提供了另一种内存分配方法,本实施例涉及的是如何将目标共享内存和GPU本地内存进行合并,并将合并后的内存分配给线程的具体过程。在上述实施例的基础上,如图3所示,上述S206中将目标共享内存和线程对应的本地内存合并后,分配给线程的方法可以包括以下步骤:
S302,按照预设的编址规则为目标共享内存以及线程对应的本地内存进行编址,得到目标共享内存对应的第一地址和本地内存对应的第二地址。
在本实施例中,对于本地内存和共享内存而言,两者之间是独立编址,也就是说,本地内存的存储空间的地址编址方式和共享内存的存储空间的地址编址方式可能是一样的,当然也可能不一样的,本实施例主要针对的是两者编址方式不一样的情况。
另外,内存在逻辑上是一个个格子,格子占有空间,可以用来存储数据,每个格子有编号,编号就是内存的地址,地址和格子空间是一一对应的。这里预设的编址规则可以是预先设置的为GPU本地内存、GPU共享内存等的存储空间进行编址的规则,示例地,可以预先设置1-100字节的地址空间作为GPU本地内存和GPU共享内存的存储空间,其中,将1-80字节的地址对应的地址空间作为本地内存的存储空间,将81-100个字节的地址对应的地址空间作为目标共享内存的地址空间,当然还可以按照页单元来对GPU本地内存和GPU共享内存进行编址等等,这里仅作一个示例。
具体的,在得到目标共享内存和线程对应的GPU本地内存之后,可以按照本地内存的编址规则为目标共享内存和线程对应的GPU本地内存进行编址,得到目标共享内存的存储空间对应的地址范围,记为第一地址,也可以得到线程对应的GPU本地内存的存储空间对应的地址范围,记为第二地址。示例地,假设在将线程对应的GPU本地内存和目标共享内存合并时,是将目标共享内存拼接在线程对应的GPU本地内存之后,那么假如本地内存按照16进制的地址编址规则,在采用16进制的地址编址规则对目标共享内存和线程对应的GPU本地内存编址之后,得到线程对应的GPU本地内存的地址范围为0x0011-0x0100,目标共享内存对应的地址范围为0x0101-0x0110,那么就可以将0x0011-0x0100作为第一地址,将0x0101-0x0110作为第二地址。
S304,将第一地址和第二地址合并后分配给线程。
具体的,在得到第一地址和第二地址之后,可以将第一地址和第二地址进行合并,然后将合并后的地址分配给线程,当然也可以是将合并后的地址和合并前的地址一块分配给线程,本实施例对此不作具体限定。
示例地,继续以上述第一地址为0x0011-0x0100,第二地址为0x0101-0x0110为例,那么可以直接将0x0011-0x0100和0x0101-0x0110合并后的地址0x0011-0x0110分配给线程,还可以是将合并后的地址0x0011-0x0110分配给线程的同时,还将地址0x0011-0x0100和地址0x0101-0x0110一块分配给线程。
进一步地,在应用运行过程中,调用的每个线程在处理数据时,都需要线程去对应的硬件内存上去存取数据,而一般在程序编程过程中,线程在访问硬件内存时,如果两者编址方式不一样,那么针对不同的编址方式,就需要采用不同的指令进行访问,也就是说,由于内存资源块硬件已固化芯片,大小地址范围不可更改,编译器需要用特定指令访问特定资源块,即不同的硬件内存需要采用不同的机器指令去进行访问,因此,为了便于线程访问不同内存,在得到第一地址和第二地址之后,可选的,可以采用如下步骤A1和A2将地址转换成指令,如下:
步骤A1,根据预设的指令生成规则将第一地址转化成可操作共享内存的第一指令,以及将第二地址转化成可操作本地内存的第二指令;第一指令用于访问目标共享内存中的数据,第二指令用于访问线程对应的本地内存中的数据。
步骤A2,将第一指令和第二指令分配给线程。
在步骤A1和A2中,预设的指令规则可以在编程过程中,预先为GPU本地内存、共享内存等设置的机器访问指令,在利用该访问指令访问内存时,就可以操作该访问指令转化的地址所对应的内存。
上述在将共享内存的目标共享内存分配给线程用作本地内存时,虽然可能将目标共享内存按照本地内存的编址方式进行编址,但因为其本身属于共享内存,因此就需要设置不同的指令去进行访问。那么可以按照指令生成规则,将第一地址范围内的地址都转化成可以操作GPU共享内存的指令,记为第一指令,同时也可以将第二地址范围内的地址都转化成可以操作GPU本地内存的指令,记为第二指令。之后可以将第一指令和第二指令分配给线程,第一指令可以访问目标共享内存中的数据,第二指令可以访问线程对应的GPU本地内存中的数据,这样线程就可以访问到目标共享内存和对应的GPU本地内存中的数据,然后就可以对数据进行处理了。
本实施例提供的内存分配方法,可以按照预设的编址规则为目标共享内存以及线程对应的GPU本地内存进行编址,得到目标共享内存对应的第一地址和本地内存对应的第二地址,并将第一地址和第二地址合并后分配给线程。在本实施例中,由于可以将目标共享内存和GPU本地内存各自对应的存储空间的地址分配给线程,这样可以便于线程快速地访问目标共享内存和GPU本地内存。
在另一个实施例中,提供了另一种内存分配方法,本实施例涉及的是如何根据补充本地内存容量在共享内存中确定目标共享内存的具体过程。在上述实施例的基础上,上述S206中根据补充本地内存容量在共享内存中确定目标共享内存的过程可以包括以下步骤B:
步骤B,根据补充本地内存容量在共享内存的第一共享内存中确定目标共享内存;该第一共享内存用于线程进行数据处理。
在本步骤中,第一共享内存主要用于线程进行数据处理,可以是整个共享内存,也可以是共享内存的一部分。在根据补充本地内存容量确定目标共享内存时,可以是直接在第一共享内存内划分出等于补充本地内存容量的共享内存,并将其作为目标共享内存,还可以是在第一共享内存内划分出大于补充本地内存容量的共享内存,并将大于补充本地内存容量的共享内存作为目标共享内存,本实施例对此不作具体限定。需要说明的是,这里共享内存中的第一共享内存尽量分配内存提供给线程,但是如果没有的话,会采用低效的全局存储方式,即将全局内存分配给线程。另外,这里在将第一共享内存分配给线程时,第一共享内存的容量可以大于补充本地内存容量,也可以等于,当然也可以小于,本实施例对此不作具体限定。
进一步地,在上述说明中,若第一共享内存是共享内存的一部分,那么可以按照下述方法在共享内存中得到第一共享内存。可选的,可以按照预设的比例将共享内存划分为第一共享内存和第二共享内存;第二共享内存用于线程之间进行数据交互。这里预设的比例可以根据实际情况而定,一般为0-1之间的数。
另外,在线程进行数据处理时,一般也需要将线程每次存取数据的数据量和数据总线上每次存取数据量进行统一,这样可以便于线程在将数据通过数据总线传输时,更加方便的传输,也不容易出错,在进行统一时,可选的,可以采用如下步骤C1和C2进行,如下:
步骤C1,获取系统数据总线的带宽对齐单位;该带宽对齐单位表征数据总线每次读取的数据量。
步骤C2,根据带宽对齐单位调整线程对应的本地内存的地址边界以及调整目标共享内存的地址边界。
示例地,假设数据总线带宽(也可以称为位宽)为Band,对齐因子为b,可以表示为b=log2(Band/8),那么带宽对齐单位就可以表示为2^b-1。另外,这里的带宽对齐单位,目的是调整第一共享区和第二共享区地址边界,保证线程在访问本地内存和目标共享内存数据时不存在越界访问,例如带宽对齐单位为8个字节,实际访问最后一个地址8n时,发现没有8个字节的内存单元,那么就会导致访问出错,通过带宽对齐单位调整地址边界,可以使线程访问内存中的数据时尽可能地不出错,示例地,假设带宽对齐单位是8字节,那么调整之后就可以是第0地址访问(0~7)内存单元,第8地址访问(8~15)内存单元,第8n地址访问(8n~(8(n+1)-1))内存单元。
示例地,假设每个线程对应的本地内存的容量为V_local,线程块的共享内存的容量为V_share,参见图4a所示,假设一个线程块有n个线程,其中线程A,被指定跑在编号为x的流处理器sp_x上。另外可以假设比例为p(0≤p≤1),那么按照p划分共享内存,可以将共享内存划分为两个部分SHM0和SHM1,其中SHM0可以称为第一共享内存,SHM1为第二共享内存,两者对应的容量分别为V_shm0和V_shm1,V_shm0和V_shm1和共享内存的关系可以用如下公式(1)和公式(2)表示:
V_shm0=p*V_share (1)
V_shm1=(1-p)*V_share (2)
在得到第一共享内存SHM0后,可以将第一共享内存均匀划分给线程块内的每个线程(当然也可以根据实际情况去划分,即不均匀划分,不过本实施例下述公式为了方便计算,主要以均分为例进行说明),每个线程得到新的内存资源,记为per_shm0,其就是分配给每个线程的目标共享内存,容量为V_per_shm0,可以用如下公式(3)表示:
V_per_shm0=(V_shm0/n)&~(2^b-1) (3)
在得到目标共享内存和线程对应的本地内存之后,可以认为是将目标共享内存分配给线程当做本地内存进行使用,那么就可以将目标共享内存和线程对应的本地内存称为虚拟本地内存,其容量记为V_vir_local,可以用如下公式(4)表示:
V_vir_local=V_local+V_per_shm0 (4)
另外,上述第二个共享内存SHM1存用于线程之间进行数据交互,即可以作为原来的共享内存使用,也可以将其称为虚拟共享内存,其容量为V_vir_share,可以用如下公式(5)表示:
V_vir_share=V_shm1&~(2^b-1) (5)
对上述公式(1)-(5)进行整理后可以得到虚拟本地内存的容量和虚拟共享内存的容量,可以用如下公式(6)、(7)表示:
V_vir_local=V_local+((p*V_share)/n)&~(2^b-1) (6)
V_vir_share=((1-p)*V_share)&~(2^b-1) (7)
在上述得到虚拟本地内存和虚拟共享内存之后,就可以将虚拟本地内存分配给线程做数据处理使用,将虚拟共享内存做线程间数据交互使用,上述虚拟本地内存中本地内存和目标共享内存的分布可以参见图4b所示。
需要说明的是,由于各个业务场景不同,各个业务对共享内存的使用率也是不同的,而本实施例的划分比例p可以根据不同的业务场景进行适应性的调整,即可以弹性划分共享内存,从而可以满足不同业务场景对共享内存的使用,尽可能实现内存资源的最大化利用,提高存储性能。
进一步地,在得到虚拟本地内存和虚拟共享内存之后,可以对虚拟本地内存和虚拟共享内存进行地址空间映射。由上可知,首先,对于共享内存的地址空间映射来说,线程块的共享内存的地址空间原来是0-(V_shm0+V_shm1-1),现在可以将该共享内存的地址空间缩小到V_shm0-(V_shm0+V_shm1-1),SHM0不再作为共享内存分配,但这部分地址空间保留,只能供线程块内线程均分后独立占用,即作为线程块内的各线程之间进行数据交互使用;另外,对于上述线程A而言,分配的per_shm0地址空间可以表示为(x*V_per_shm0)-((x+1)*V_per_shm0-1)。其次,对于本地内存的地址空间映射来说,以线程A为例,可以将本地内存的地址空间从原来的0-(V_local-1)扩大到0-(V_local+V_per_shm0-1),对应新的虚拟本地内存的地址空间,即0-(V_local+V_per_shm0-1),并对虚拟本地内存中的本地内存和目标共享内存进行统一编址。在编址后生成可识别指令时,如果是遇到[0,V_local-1]区间的地址,则生成访问本地内存的机器指令,当遇到[V_local,V_local+V_per_shm0-1]区间的地址,则生成访问每个线程对应的地址空间[x*V_per_shm0,(x+1)*V_per_shm0-1]的共享内存的机器指令。
在拿到机器指令之后,线程就可以访问机器指令对应的内存,并对数据进行处理,在数据处理完成时,也就可以认为线程运行结束,此时,可选的,在线程执行完毕时,释放线程对应的本地内存以及释放目标共享内存。也就是说,在线程执行完毕后,虚拟共享内存的容量和虚拟本地内存的容量也会随之发生改变,可以用如下公式(8)和(9)进行表示:
V_vir_share+=V_per_shm0 (8)
V_vir_local=0 (9)
通过在线程执行结束释放内存,可以便于下一次其他线程对共享内存或本地内存的重复使用,提高共享内存和本地内存的复用率。
本实施例提供的内存分配方法,可以根据补充本地内存容量在共享内存的第一共享内存中确定目标共享内存,该第一共享内存用于线程进行数据处理。在本实施例中,由于可以虚拟化本地内存,将本地内存空间任意指定,从而可以脱离内存硬件环境限制,实现对各种优质硬件资源的合理利用。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种内存分配装置,包括:获取模块10、确定模块11和分配模块12,其中:
获取模块10,用于获取待分配内存的以及该线程所需的局部内存容量;
确定模块11,用于若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值;
分配模块12,用于根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
关于内存分配装置的具体限定可以参见上文中对于内存分配方法的限定,在此不再赘述。
在另一个实施例中,提供了另一种内存分配装置,在上述实施例的基础上,参见图6所示,上述分配模块12可以包括编址单元121和分配单元122,其中:
编址单元121,用于按照预设的编址规则为目标共享内存以及线程对应的本地内存进行编址,得到目标共享内存对应的第一地址和本地内存对应的第二地址;
分配单元122,用于将第一地址和第二地址合并后分配给线程。
可选的,上述分配单元122,还用于根据预设的指令生成规则将第一地址转化成可操作共享内存的第一指令,以及将第二地址转化成可操作本地内存的第二指令;第一指令用于访问目标共享内存中的数据,第二指令用于访问线程对应的本地内存中的数据;将第一指令和第二指令分配给线程。
在另一个实施例中,提供了另一种内存分配装置,在上述实施例的基础上,继续参见图6所示,上述分配模块12还可以包括确定单元123,该确定单元123,用于根据补充本地内存容量在共享内存的第一共享内存中确定目标共享内存;第一共享内存用于线程进行数据处理。
可选的,继续参见图6所示,上述装置还可以包括划分模块13,该划分模块13,用于按照预设的比例将共享内存划分为第一共享内存和第二共享内存;第二共享内存用于线程之间进行数据交互。
可选的,继续参见图6所示,上述装置还可以包括对齐模块14,该对齐模块14,用于获取系统数据总线的带宽对齐单位;该带宽对齐单位表征数据总线每次读取的数据量;根据带宽对齐单位调整线程对应的本地内存的地址边界以及调整目标共享内存的地址边界。
可选的,继续参见图6所示,上述装置还可以包括释放模块15,该释放模块15,用于在线程执行完毕时,释放线程对应的本地内存以及释放目标共享内存。
关于内存分配装置的具体限定可以参见上文中对于内存分配方法的限定,在此不再赘述。
上述内存分配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取待分配内存的以及该线程所需的局部内存容量;
若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值;
根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
按照预设的编址规则为目标共享内存以及线程对应的本地内存进行编址,得到目标共享内存对应的第一地址和本地内存对应的第二地址;将第一地址和第二地址合并后分配给线程。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据预设的指令生成规则将第一地址转化成可操作共享内存的第一指令,以及将第二地址转化成可操作本地内存的第二指令;第一指令用于访问目标共享内存中的数据,第二指令用于访问线程对应的本地内存中的数据;将第一指令和第二指令分配给线程。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
根据补充本地内存容量在共享内存的第一共享内存中确定目标共享内存;第一共享内存用于线程进行数据处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
按照预设的比例将共享内存划分为第一共享内存和第二共享内存;第二共享内存用于线程之间进行数据交互。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取系统数据总线的带宽对齐单位;该带宽对齐单位表征数据总线每次读取的数据量;根据带宽对齐单位调整线程对应的本地内存的地址边界以及调整目标共享内存的地址边界。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在线程执行完毕时,释放线程对应的本地内存以及释放目标共享内存。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待分配内存的以及该线程所需的局部内存容量;
若该线程所需的局部内存容量大于该线程对应的本地内存的容量,则确定补充本地内存容量;该补充本地内存容量为线程所需的局部内存容量和线程对应的本地内存的容量的差值;
根据补充本地内存容量在共享内存中确定目标共享内存,并将目标共享内存和线程对应的本地内存合并后,分配给线程。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
按照预设的编址规则为目标共享内存以及线程对应的本地内存进行编址,得到目标共享内存对应的第一地址和本地内存对应的第二地址;将第一地址和第二地址合并后分配给线程。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据预设的指令生成规则将第一地址转化成可操作共享内存的第一指令,以及将第二地址转化成可操作本地内存的第二指令;第一指令用于访问目标共享内存中的数据,第二指令用于访问线程对应的本地内存中的数据;将第一指令和第二指令分配给线程。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
根据补充本地内存容量在共享内存的第一共享内存中确定目标共享内存;第一共享内存用于线程进行数据处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
按照预设的比例将共享内存划分为第一共享内存和第二共享内存;第二共享内存用于线程之间进行数据交互。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取系统数据总线的带宽对齐单位;该带宽对齐单位表征数据总线每次读取的数据量;根据带宽对齐单位调整线程对应的本地内存的地址边界以及调整目标共享内存的地址边界。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在线程执行完毕时,释放线程对应的本地内存以及释放目标共享内存。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种内存分配方法,所述方法包括:
获取待分配内存的线程以及所述线程所需的局部内存容量;
若所述线程所需的局部内存容量大于所述线程对应的本地内存的容量,则确定补充本地内存容量;所述补充本地内存容量为所述线程所需的局部内存容量和所述线程对应的本地内存的容量的差值;
根据所述补充本地内存容量在共享内存中确定目标共享内存,并将所述目标共享内存和所述线程对应的本地内存合并后,分配给所述线程;
所述将所述目标共享内存和所述线程对应的本地内存合并后,分配给所述线程,包括:
按照预设的编址规则为所述目标共享内存以及所述线程对应的本地内存进行编址,得到所述目标共享内存对应的第一地址和所述本地内存对应的第二地址;
将所述第一地址和所述第二地址合并后分配给所述线程。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一地址和所述第二地址合并后分配给所述线程,包括:
根据预设的指令生成规则将所述第一地址转化成可操作共享内存的第一指令,以及将所述第二地址转化成可操作本地内存的第二指令;所述第一指令用于访问所述目标共享内存中的数据,所述第二指令用于访问所述线程对应的本地内存中的数据;
将所述第一指令和所述第二指令分配给所述线程。
3.根据权利要求1-2任意一项所述的方法,其特征在于,所述根据所述补充本地内存容量在共享内存中确定目标共享内存,包括:
根据所述补充本地内存容量在所述共享内存的第一共享内存中确定所述目标共享内存;所述第一共享内存用于所述线程进行数据处理。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
按照预设的比例将所述共享内存划分为所述第一共享内存和第二共享内存;所述第二共享内存用于所述线程之间进行数据交互。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述线程所需的局部内存容量不大于所述线程对应的本地内存的容量,则将所述线程对应的本地内存分配给所述线程。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取系统数据总线的带宽对齐单位;所述带宽对齐单位表征所述数据总线每次读取的数据量;
根据所述带宽对齐单位调整所述线程对应的本地内存的地址边界以及调整所述目标共享内存的地址边界。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述线程执行完毕时,释放所述线程对应的本地内存以及释放所述目标共享内存。
8.一种内存分配装置,其特征在于,所述装置包括:
获取模块,用于获取待分配内存的线程以及所述线程所需的局部内存容量;
确定模块,用于若所述线程所需的局部内存容量大于所述线程对应的本地内存的容量,则确定补充本地内存容量;所述补充本地内存容量为所述线程所需的局部内存容量和所述线程对应的本地内存的容量的差值;
分配模块,用于根据所述补充本地内存容量在共享内存中确定目标共享内存,并将所述目标共享内存和所述线程对应的本地内存合并后,分配给所述线程;
所述分配模块,包括:
编址单元,用于按照预设的编址规则为所述目标共享内存以及所述线程对应的本地内存进行编址,得到所述目标共享内存对应的第一地址和所述本地内存对应的第二地址;
分配单元,用于将所述第一地址和所述第二地址合并后分配给所述线程。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103604.4A CN111324461B (zh) | 2020-02-20 | 2020-02-20 | 内存分配方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010103604.4A CN111324461B (zh) | 2020-02-20 | 2020-02-20 | 内存分配方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324461A CN111324461A (zh) | 2020-06-23 |
CN111324461B true CN111324461B (zh) | 2023-09-01 |
Family
ID=71163655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010103604.4A Active CN111324461B (zh) | 2020-02-20 | 2020-02-20 | 内存分配方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324461B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084022B (zh) * | 2020-08-21 | 2023-09-08 | 北京水滴科技集团有限公司 | 一种项目容量规划方法、装置、计算机设备和存储介质 |
CN112214313A (zh) * | 2020-09-22 | 2021-01-12 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN113485832A (zh) * | 2021-07-09 | 2021-10-08 | 支付宝(杭州)信息技术有限公司 | 用于对物理内存池进行分配管理的方法及装置、物理内存池 |
CN117149447B (zh) * | 2023-10-31 | 2024-02-13 | 苏州元脑智能科技有限公司 | 带宽调整方法、装置、设备及存储介质 |
CN117472593B (zh) * | 2023-12-27 | 2024-03-22 | 中诚华隆计算机技术有限公司 | 一种多线程间资源分配方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8395631B1 (en) * | 2009-04-30 | 2013-03-12 | Nvidia Corporation | Method and system for sharing memory between multiple graphics processing units in a computer system |
CN103119471A (zh) * | 2010-09-20 | 2013-05-22 | 雪佛龙美国公司 | 用于生成地下构造的图像的系统和方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN105511867A (zh) * | 2015-11-30 | 2016-04-20 | 华为技术有限公司 | 一种优化模式自动生成方法及优化装置 |
CN106303162A (zh) * | 2016-08-16 | 2017-01-04 | 江苏火米互动科技有限公司 | 一种gpu抠像方法 |
CN108062252A (zh) * | 2016-11-08 | 2018-05-22 | 阿里巴巴集团控股有限公司 | 一种信息交互方法、对象管理方法及装置和系统 |
CN108597556A (zh) * | 2018-04-20 | 2018-09-28 | 青岛海信电器股份有限公司 | 双倍速率同步动态随机存储器稳定性测试方法及系统 |
CN110494851A (zh) * | 2017-03-14 | 2019-11-22 | 珠海市芯动力科技有限公司 | 可重构并行处理 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819346B2 (en) * | 2012-03-09 | 2014-08-26 | International Business Machines Corporation | Fast prediction of shared memory access pattern |
-
2020
- 2020-02-20 CN CN202010103604.4A patent/CN111324461B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8395631B1 (en) * | 2009-04-30 | 2013-03-12 | Nvidia Corporation | Method and system for sharing memory between multiple graphics processing units in a computer system |
CN103119471A (zh) * | 2010-09-20 | 2013-05-22 | 雪佛龙美国公司 | 用于生成地下构造的图像的系统和方法 |
CN103714009A (zh) * | 2013-12-20 | 2014-04-09 | 华中科技大学 | 一种GPU上基于内存统一管理的MapReduce实现方法 |
CN105511867A (zh) * | 2015-11-30 | 2016-04-20 | 华为技术有限公司 | 一种优化模式自动生成方法及优化装置 |
CN106303162A (zh) * | 2016-08-16 | 2017-01-04 | 江苏火米互动科技有限公司 | 一种gpu抠像方法 |
CN108062252A (zh) * | 2016-11-08 | 2018-05-22 | 阿里巴巴集团控股有限公司 | 一种信息交互方法、对象管理方法及装置和系统 |
CN110494851A (zh) * | 2017-03-14 | 2019-11-22 | 珠海市芯动力科技有限公司 | 可重构并行处理 |
CN108597556A (zh) * | 2018-04-20 | 2018-09-28 | 青岛海信电器股份有限公司 | 双倍速率同步动态随机存储器稳定性测试方法及系统 |
Non-Patent Citations (1)
Title |
---|
John D. Leidel.xBGAS: Toward a RISC-V ISA Extension for Global, Scalable Shared Memory.MCHPC'18: Proceedings of the Workshop on Memory Centric High Performance Computing.2018,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111324461A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324461B (zh) | 内存分配方法、装置、计算机设备和存储介质 | |
JP6201242B2 (ja) | Nandフラッシュメモリにおけるデータの効率的な記憶を可能にするアーキテクチャ | |
US20100058016A1 (en) | Method, apparatus and software product for multi-channel memory sandbox | |
CN111338988B (zh) | 内存访问方法、装置、计算机设备和存储介质 | |
CN111079917B (zh) | 张量数据分块存取的方法及装置 | |
KR20130106392A (ko) | 다수의 메모리 채널들을 가진 컴퓨팅 시스템에서의 메모리 버퍼들의 할당 | |
CN108845958B (zh) | 一种交织器映射和动态内存管理系统及方法 | |
WO2021008197A1 (zh) | 资源分配方法、存储设备和存储系统 | |
CN110187832B (zh) | 一种数据操作的方法、设备和系统 | |
CN114556309A (zh) | 内存空间的分配方法、装置及存储介质 | |
US20140289739A1 (en) | Allocating and sharing a data object among program instances | |
CN109766179B (zh) | 一种显存分配方法以及装置 | |
CN116795735B (zh) | 固态硬盘空间分配方法、装置、介质及系统 | |
US10901883B2 (en) | Embedded memory management scheme for real-time applications | |
CN117215491A (zh) | 一种快速数据访问方法、快速数据访问装置及光模块 | |
CN105988871B (zh) | 一种远端内存分配方法、装置和系统 | |
CN116414725A (zh) | 用于计算装置主存储器的分区命名空间 | |
CN107656697B (zh) | 一种在存储介质上操作数据的方法和装置 | |
US20100058025A1 (en) | Method, apparatus and software product for distributed address-channel calculator for multi-channel memory | |
US8762647B2 (en) | Multicore processor system and multicore processor | |
CN114281516A (zh) | 一种基于numa属性的资源分配方法及装置 | |
CN112395216A (zh) | 用于存储管理的方法、装置、设备和计算机可读存储介质 | |
CN117149447B (zh) | 带宽调整方法、装置、设备及存储介质 | |
CN111294247B (zh) | 一种存储区域的QoS分配方法及系统 | |
CN116483536B (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, Building D, Yeda Science and Technology Park, No. 300 Changjiang Road, Yantai Area, China (Shandong) Pilot Free Trade Zone, Yantai City, Shandong Province, 265503 Patentee after: Xi'an Xintong Semiconductor Technology Co.,Ltd. Address before: 710065 D401, Zhongxing Industrial Park, Tangyan South Road, Yanta District, Xi'an City, Shaanxi Province Patentee before: Xi'an Xintong Semiconductor Technology Co.,Ltd. |