CN116450055B - 一种多处理卡间的存储区域分配方法和*** - Google Patents

一种多处理卡间的存储区域分配方法和*** Download PDF

Info

Publication number
CN116450055B
CN116450055B CN202310714241.1A CN202310714241A CN116450055B CN 116450055 B CN116450055 B CN 116450055B CN 202310714241 A CN202310714241 A CN 202310714241A CN 116450055 B CN116450055 B CN 116450055B
Authority
CN
China
Prior art keywords
storage
storage area
processing
target
processing card
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310714241.1A
Other languages
English (en)
Other versions
CN116450055A (zh
Inventor
赵军平
梅晓峰
赵守仁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202310714241.1A priority Critical patent/CN116450055B/zh
Publication of CN116450055A publication Critical patent/CN116450055A/zh
Application granted granted Critical
Publication of CN116450055B publication Critical patent/CN116450055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供一种多处理卡间的存储区域分配方法和***,多处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道;技术要点包括:通过存储客户端接收应用进程的调用进而向存储服务进程发起存储区域分配请求;所述存储区域分配请求包括所需区域大小;通过存储服务进程从多处理卡中选出目标处理卡并在其上确定待分配的目标存储区域,将所述目标存储区域的标识返回给所述存储客户端;通过存储客户端基于所述标识将所述目标存储区域提供给所述应用进程使用。

Description

一种多处理卡间的存储区域分配方法和***
技术领域
本说明书涉及计算机技术领域,特别涉及一种多处理卡间的存储区域分配方法和***。
背景技术
多处理器设备是指一台包含多个处理器的处理设备。每个处理器均具有数据运算的能力,之间可以进行数据交换,由统一的操作***管理,可以共享I/O设备、磁盘等外设。一般来说,在多处理器设备中多个处理器位于同一主板上,主板上布设线路以及开设有插槽,处理器以板卡形式卡接在插槽上,因此,处理器又可称为处理卡。
多处理器设备相比单处理器设备具有更加强劲的数据运算能力,一般用作工业级计算设备,实现大数据计算。在实际应用中,常出现单个处理器存储容量受限的问题,因此,有必要提出一种全局的存储区域分配与管理方法,充分利用多处理器的存储资源,进一步优化多处理器设备的数据处理性能。
发明内容
本说明书一个或多个实施例提供一种多处理卡间的存储区域分配方法。所述多处理卡间的存储区域分配方法包括:通过存储客户端接收应用进程的调用进而向存储服务进程发起存储区域分配请求,存储区域分配请求包括所需区域大小;通过存储服务进程从多处理卡中选出目标处理卡并在其上确定待分配的目标存储区域,将目标存储区域的标识返回给存储客户端;通过存储客户端基于所述标识将所述目标存储区域提供给所述应用进程使用。
本说明书一个或多个实施例提供一种多处理卡间的存储区域分配***。所述多处理卡间的存储区域分配***包括:存储客户端,用于接收应用进程的调用进而向存储服务端发起存储区域分配请求,存储区域分配请求包括所需区域大小;存储服务端,用于从多处理卡中选出目标处理卡并在其上确定待分配的目标存储区域,将目标存储区域的标识返回给存储客户端;存储客户端还用于通过存储客户端基于所述标识将所述目标存储区域提供给所述应用进程使用。
本说明书一个或多个实施例提供一种装置,包括多个处理卡以及存储介质,多个处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道,存储介质存储有计算机指令,多个处理卡用于执行计算机指令以实现前述多处理卡间的存储区域分配方法。
本说明书一个或多个实施例提供一种计算机可读存储介质,用于存储计算机指令,当计算机指令中的至少一部分被处理器或处理卡执行时,实现多处理卡间的存储区域分配方法。
一种多处理卡间的存储区域分配方法,多处理卡包括中央处理器以及两个以上协处理器,多处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道,其中,中央处理器与协处理器之间的直连通道基于第一总线实现,协处理器之间的直连通道基于第二总线实现,第二总线具有比第一总线更大的数据传输带宽;所述方法包括通过中央处理器:接收来自所述多处理卡中某处理卡的存储区域分配请求;所述存储区域分配请求包括所需区域大小;确定发起所述存储区域分配请求的处理卡是否具有不小于所述所需区域大小的空闲存储区域;响应于该处理卡上具有不小于所述所需区域大小的空闲存储区域时,从该处理卡上确定目标存储区域,得到所述目标存储区域的标识并返回;响应于该处理卡上不具有不小于所述所需区域大小的空闲存储区域时:基于所述多处理卡中的其余处理卡的空闲存储区域的大小,以及所述其余处理卡与发起存储区域分配请求的处理卡之间的数据传输带宽从所述其余处理卡中选出目标处理卡;以及,从所述目标处理卡上确定目标存储区域,得到所述目标存储区域的标识并返回。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的多处理器主板示意图;
图2是根据本说明书一些实施例所示的多处理卡间的存储区域分配方法的示例性流程图;
图3是根据本说明书一些实施例所示的构件表的示例图;
图4是根据本说明书一些实施例所示的底层存储占用记录表的示例图;
图5是根据本说明书一些实施例所示的多处理卡间的存储区域分配***的示意框图;
图6是根据本说明书又一些实施例所示的多处理卡间的存储区域分配方法的示例性流程图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“***”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的***所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
多处理器设备是指一台设备中包含多个处理器。每个处理器均具有数据运算的能力,之间可以进行数据交换,由统一的操作***管理,可以共享I/O设备、磁盘等外设。一般来说,多个处理器位于同一主板上,主板上布设线路以及开设有插槽,处理器以板卡形式卡接在插槽上。在一些场景中,术语“处理器”、“处理卡”以及“处理器板卡”可以互换。
位于同一处理设备或同一主板上的处理器可以分为主处理器和协处理器。在一些实施例中,主处理器可以具有更适合于执行复杂控制逻辑操作的硬件架构,而协处理器则更适于进行密集并行的计算操作。主处理器是处理设备的处理核心,一般由通用CPU(Center Process Unit,中央处理器)实现。协处理器接收主处理器调度,用于协助主处理器进行某些特定的计算任务。根据具体负责的计算任务,协处理器可以分为数学协处理器、图形协处理器等。数学协处理器用于数字处理或计算,或称为浮点协处理器,其数字运算的速度比主处理器更快。图形处理器,又称为GPU(Graphic Processing Unit),用于图形显示以及计算加速,具有高速并行计算的特点,适用于可并行处理的计算任务。在一些实施例中,多处理器设备可以用于机器学习模型训练或预测。如,当训练样本较多时,可以在多处理器上实现分布式训练。又如,当模型体量较大时,可以在多处理器上实现分布式预测。
处理器具有一定容量的内部存储资源,如CPU板卡的内存或GPU板卡的显存,用于暂时存放处理器中的运算数据。处理器在运行计算机程序或者执行计算机指令时,操作***会把需要运算的数据从硬盘、磁盘等外部存储介质调到内部存储区域,进一步,处理器可以从内部存储区域获取需要运算的数据进行运算,当运算完成,处理器会将结果传送到内部存储区域。处理器的内部存储资源会直接影响处理设备的整体计算性能。在实际应用时,单处理器容易出现内部存储容量受限的问题,为此,本说明书一些实施例提出了一种多处理卡间(内部)存储区域分配的方法和***,以充分利用多处理器的存储资源,进一步优化多处理器设备的数据处理性能。
图1是根据本说明书一些实施例所示的多处理器主板示意图。如图1所示,主板100上包括两块CPU板卡以及8块GPU板卡,处理器板卡之间布设有数据线或数据通道。其中,CPU0和CPU1可以看作主处理器,GPU0~7可以看作协处理器。CPU和GPU之间可以通过PCIe总线进行直接连接,其传输带宽可以达到16GB/s(G Byte/second)或32GB/s。GPU之间可以通过NVLink总线直接连接,其传输带宽比PCIe更大,例如可以达到150GB/s或以上。CPU之间可以通过QPI (或UPI)总线直接连接,其传输带宽介于PCIe和NVLink之间。在一些实施例中,两个以上GPU可以作为一组(如同一虚线框中的GPU0和GPU1),通过一条PCIe直连通道与CPU连接,CPU则可以通过“选址”的方式将不同的信息分别传输给GPU0或GPU1。在两个GPU之间,可以有两条以上直连通道,此时这两个GPU之间的带宽为两个以上直连通道的带宽之和。两个处理器板卡之间,除了可以通过直连通道进行数据交换,还可以通过包括两条(或两跳)以上直连通道组成的间接通道连通。例如,CPU0到GPU0,其具有一条PCIe直连通道,还可以经由间接通道CPU0-GPU3-GPU0,或者间接通道CPU0-CPU1-GPU6-GPU0等进行数据交互。
基于此,本说明书一些实施例提出的一种存储区域分配方法,将各处理卡的内部存储区域看成一个更大的、虚拟的全局存储区域,根据存储用量和卡间的互联拓扑关系动态进行全局分配,使得多卡之间、或多任务之间的内部存储使用自动均衡,缓解单卡容量受限的瓶颈制约。
图2是根据本说明书一些实施例所示的多处理卡间的存储区域分配方法的示例性流程图。图2所示的存储区域分配方法将数据存储以CS(Client-Server,服务端-客户端)架构实现。在一些实施例中,多处理卡可以包括主处理器CPU板卡以及多个协处理器GPU板卡。服务端由独立的进程实现,运行于CPU板卡上。客户端供应用程序(或应用进程)调用,向服务进程发起存储区域分配请求,向应用进程返回被分配的目标存储区域的地址。客户端可以跟随着应用进程部署在CPU板卡和/或GPU板卡上。
应用进程即应用程序对应的进程,其负责应用层面的数据运算或信息处理,如使用模型处理特征数据得到预测结果、基于训练样本进行模型训练等计算。当应用进程获得计算结果(可以是中间结果也可以是最终结果)后,可以将计算结果在处理器的内部存储区域中存储,以便后续计算使用。在本说明书一些实施例中,当应用进程需要将数据进行存储时,可以调用存储客户端向存储服务进程发起存储区域分配请求。相应的,存储客户端可以部署在各处理卡上,供应用进程调用。如图2所示,本说明书一些实施例提供的存储区域分配方法具体可以包括以下步骤:
步骤210,通过存储客户端接收应用进程的调用进而向存储服务进程发起存储区域分配请求。
存储客户端可以以函数形式封装,其调用接口包括函数名以及输入参数。存储客户端的输入参数可以包括应用进程所需区域大小size。在一些实施例中,当应用进程需要一定的存储区域存放数据时,可以调用存储客户端,并将所需要的存储区域的大小或用量通过调用接口的输入参数发送给存储客户端。示例性的,所述区域大小size可以是64B(Byte,字节),128B等。在一些实施例中,输入参数还可以包括应用进程所在处理卡的标识。在一些实施例中,处理卡具有唯一标识以便区分,处理卡的标识可以由字母、特定的字符和/或数字组成,示例性的,处理卡标识可以是#CPU0、GPU3或A1等。
存储客户端可以向服务进程发起存储区域分配请求,请求中可以包括所述size或者包括size和处理卡标识。由于存储客户端位于应用进程中,其可以通过管道、套接字等进程间通信方式将存储分配请求传输给存储服务进程。
步骤220,通过存储服务进程从多处理卡中选出目标处理卡并在其上确定待分配的目标存储区域,将所述目标存储区域的标识返回给所述存储客户端。
多个处理卡均自带有自身的内部存储资源,如内存或显卡。如图1所示,多个处理卡之间具有一条以上通道互联,因此,可以将各处理卡的内部资源看作是一个全局存储区域,存储服务进程可以基于各处理卡的存储占用记录以及一定的策略从多个处理卡中确定目标处理卡,并进一步在其上确定目标存储区域以供应用进程使用。
存储区域占用记录用于描述相应处理卡中存储区域的占用情况。在一些实施例中,存储区域占用记录可以包含存储区域总量以及占用量。作为示例,CPU板卡的存储区域占用记录可以包括:内部存储区域总量:64GB,占用量:12GB;GPU3板卡的存储区域占用记录包括:显存总量:256GB,占用量:48GB。
一般来说,当处理器中的进程需要存放数据到内部存储区域时,需要向处理器请求存储资源,当使用完毕后,又需要请求释放存储资源,为了避免频繁的资源请求和释放,可以针对每一处理卡维护一个缓冲存储占用记录。缓冲存储占用记录用于保存处理卡上被分配过但未被物理释放的一个或多个存储区域的相关信息,具体可以包括这些存储区域的大小、标识以及是否被逻辑释放的状态标记。这样,当处理器上的进程使用完某一存储区域后,无需立即将其物理释放,而是记录其已被逻辑释放,当处理器上的进程需要使用存储区域时,可以将这些被逻辑释放的存储区域分配给相应的进程,进而可以有效减少请求物理分配存储区域和物理释放存储区域的频次。在一些实施例中,可以通过存储服务进程为每一张处理卡维护一张缓冲存储占用记录。在一些实施例中,缓冲存储占用记录中的存储区域的大小可以是处理器基于资源分配请求分配出来的区域大小,如64B、512B、1024B、2GB不等。存储区域的标识能够指示存储区域的位置,如可以是存储区域的首地址,进一步,可以是该区域的实际物理地址,也可以是基于某映射方式得到的虚拟地址。本说明书另一些实施例中,当提到存储区域或目标存储区域的标识时,可以是指该区域的实际地址,而非虚拟地址。
底层存储占用记录用于描述处理卡上被物理释放的存储区域的信息。图4示出了本说明书一些实施例所示的底层存储占用记录表400,从图4中可以看出表400包含了各处理卡上固有的存储区域总量和当前空闲的存储区域量,这里的空闲存储区域即被物理释放的存储区域。可以理解,当某进程需要存储区域时,可以从处理卡上被逻辑释放的存储区域中为其分配,也可以从被物理释放的存储区域中为其分配,而为了降低向处理卡请求资源分配和释放的频率,可以优先从被逻辑释放的存储区域中为其分配。为此,存储服务进程可以同时管理各处理卡的缓冲存储占用记录以及底层存储占用记录。其中,底层存储占用记录可以由存储服务进程向主板或处理卡请求得到。在一些实施例中,主板或处理卡的硬件驱动程序可以提供底层存储占用记录表查询API(Application Programming Interface,应用程序编程接口),存储服务进程可以通过调用该接口获取所述记录表。
在一些实施例中,存储服务进程可以首先查询应用进程所在处理卡的存储占用记录,确定该处理卡是否具有不小于所述所需区域大小的空闲存储区域。例如,存储服务进程可以基于处理卡标识确定应用进程所在的处理卡,进而基于其缓冲存储占用记录和/或底层存储占用记录确定空闲存储区域量。在一些实施例中,当缓冲存储占用记录或底层存储占用记录分别反映其中的空闲(即被逻辑释放或被物理释放的)存储区域量不小于所需区域大小时,存储服务进程会将该处理卡作为目标处理卡,并从该处理卡上确定所述目标存储区域。
在一些实施例中,存储服务进程可以优先确定缓冲存储占用记录中确定目标存储区域。作为示例,所需区域大小为64B,存储服务进程可以在缓冲存储占用记录中寻找大小与之接近的存储区域,如果记录中刚好有64B的存储区域,则可将其直接作为目标存储区域。如果记录中没有相同大小的存储区域,存储服务进程可以确定较大但最接近的存储区域,如96B的存储区域,进一步,存储服务进程可以将该存储区域进行拆分,得到分别为64B和32B的两个子存储区域,并将64B的子存储区域作为目标存储区域,将原来的存储区域信息替换为剩余子存储区域(32B)的信息(如大小、标识、是否被逻辑释放等信息)。
在一些实施例中,当缓冲存储占用记录显示缓冲存储区域中没有不小于所需区域大小的存储区域时,存储服务进程可以向目标处理卡从被物理释放的存储区域中分配所述区域大小的目标存储区域。一般来说,存储服务进程从目标处理卡请求到的目标存储区域是映射到存储服务进程的进程地址空间中的一部分区域,其地址为虚拟地址,或称为服务进程存储指针。进程地址空间是由一部分内部存储区域映射而来,与进程绑定,随着进程的退出,进程地址空间会被释放。进程可以基于对应的存储指针访问对应的物理内部存储区域,但是其他进程不能基于该存储指针访问到同一物理存储区域。为了应用程序可以使用,存储服务进程需要将目标存储区域对应的服务进程存储指针转换为其标识,存储区域的标识可以看作是物理存储区域实际的地址。
在一些实施例中,存储服务进程会将处理器分配的目标存储区域的信息写入到缓冲存储占用记录中,其中,除了目标存储区域的大小、标识以及状态标记(此时状态为被逻辑占用)外,还可以包括其对应的服务进程存储指针。相应的,如果存储服务进程基于缓冲存储占用记录获得目标存储区域时,可以直接得到其对应的服务进程存储指针。同样的,存储服务进程需要将其转换为目标存储区域的标识,再返回给存储客户端。在一些实施例中,主板或处理器的硬件驱动程序还会提供实现前述转换的API,存储服务进程通过调用该转换API,可以得到目标存储区域的标识。
在一些实施例中,当应用进程所在的处理卡的缓冲存储占用记录或底层存储占用记录分别反映其中的空闲(即被逻辑释放或被物理释放的)存储区域量均小于所需区域大小时,存储服务进程会查询其余处理卡的存储占用记录,确定具有不小于所述所需区域大小的空闲存储区域的一个或多个候选处理卡。与前述类似的,当处理卡上的缓冲存储占用记录或底层存储占用记录中至少有一个反映其中的空闲存储区域量不小于所需区域大小时,便可作为候选处理卡。
进一步,存储服务进程可以查询应用进程所在处理卡到候选处理卡之间的数据传输带宽,将最大数据传输带宽对应的候选处理卡作为所述目标处理卡。
如图1所示,所述多处理卡中的任意两个处理卡之间具有多条通道,包括一条以上的直连通道以及一条以上的间接通道。在一些实施例中,存储服务进程可以获取构件表,构件表记录了多处理卡之间的直连通道以及数据传输带宽。图3为本说明书一些实施例所示的构件表,如图3所示,表300记录了所述多个处理卡中具有直连通道的处理卡,以及每个直连通道的数据传输带宽。从表400可以看出, CPU与GPU0之间具有直连通道,数据传输带宽为12GB/s,GPU0与GPU1之间具有直连通道,数据传输带宽为24GB/s。由于间接通道由两条以上直连通道组成,因此基于构件表,数据传输服务进程还可以确定任意两张处理卡之间的间接通道,进而确定应用进程所在处理卡到任意候选处理卡之间的全部通道以及数据传输带宽。最后,存储服务进程将与应用进程所在处理卡之间具有最大数据传输带宽的候选处理卡作为所述目标处理卡。在一些实施例中,主板或处理卡的硬件驱动程序可以提供构件表查询API(Application Programming Interface,应用程序编程接口),数据传输服务进程可以通过调用该接口获取所述构件表。
存储服务进程进一步在目标处理卡上确定目标存储区域,并将其标识返回给存储客户端。关于确定目标存储区域及其标识的过程可以参见前述在应用进程所在处理卡上确定目标存储区域及其标识的相关说明,在此不再赘述。
在又一些实施例中,存储服务进程可以设置带宽阈值,将与应用进程所在处理卡之间的数据传输带宽不小于带宽阈值的候选处理卡中具有最大空闲存储区域的候选处理卡,作为所述目标处理卡。带宽阈值可以根据实际需要设置,如48GB/s。
由前述可知,存储服务进程在从候选处理卡中选出目标处理卡时,会同时考虑其空闲存储区域的大小以及与应用进程所在处理卡之间的数据传输带宽。在又一些更为一般的实施例中,当应用进程所在处理卡的存储区域不足时,存储服务进程可以基于空闲存储区域的大小为其余处理卡(除应用进程所在处理卡以外的处理卡)设置第一权重;第一权重与所述其余处理卡的空闲存储区域的大小正相关。存储服务进行可以基于数据传输带宽为各所述其余处理卡设置第二权重;第二权重与所述其余处理卡对应的所述数据传输带宽正相关;最后,存储服务进程可以基于第一权重和第二权重从所述其余处理卡中选出目标处理卡。例如,存储服务进行可以将第一权重与第二权重求和,基于和值对所述其余处理卡进行降序排列,选出排名靠前,如第一,的处理卡作为目标处理卡。
在又一些实施例中,存储服务进程在确定目标处理卡时还可以考虑应用进程所在处理卡的全局存储分配历史记录。全局存储分配历史记录可以包含对应处理卡从其他处理卡获得存储区域的历史信息,其具体可以包括获取存储区域的时间、大小以及对应的所述其他处理卡。在一些实施例中,全局存储分配历史记录可以由存储服务进程维护,每当有进程请求存储区域且存储区域来自进程所在处理卡以外的板卡时,便为其进行记录,如此,每一张处理卡都可以对应有自己的全局存储分配历史记录。具体的,存储服务进程可以基于应用进程所在处理卡的全局存储分配历史记录确定其从其余处理卡获得存储区域的频次,并基于所述频次为各其余处理卡赋予第三权重,第三权重与所述其余处理卡对应的所述频次负相关。最后,存储服务进程可以联合前述的第一权重、第二权重以及所述第三权重,从所述其余处理卡中选出目标处理卡。作为示例,存储服务进程可以将三个权重求和,并基于和值对所述其余处理卡进行降序排列,选出排名靠前,如第一,的处理卡作为目标处理卡。
步骤230,通过存储客户端基于所述标识将所述目标存储区域提供给所述应用进程使用。
在一些实施例中,存储客户端获取到目标存储区域的标识后,可以将该标识返回给应用程序,应用程序基于该标识访问目标存储区域。在又一些实施例中,存储客户端获取到目标存储区域的标识后,可以基于所述标识将其映射到应用进程的进程地址空间,得到目标存储区域在该进程地址空间中的虚拟地址,或称为应用进程存储指针。与前述转换类似的,存储客户端可以调用主板或处理卡提供的转换API,将目标存储区域的标识转换为应用进程存储指针。此后,存储客户端将目标存储区域的应用进程存储指针返回给应用进程,应用进程便可访问目标存储区域,将相关的数据,如计算结果,写入目标存储区域。
在一些实施例中,存储客户端可以将目标存储区域的应用进程存储指针与标识对应保存。
步骤240,通过存储客户端接收应用进行的调用,进而向存储服务进程发起存储区域释放请求。
当应用程序不再需要目标存储区域后,可以再次调用存储客户端将其释放。在一些实施例中,存储客户端还可以接收应用进程的调用,向存储服务进程发起存储区域释放请求。具体的,客户端可以包含两个以上的函数接口,应用进程可以调用存储客户端的用于存储区域释放的接口,该接口同样可以具有输入参数,其中,输入参数可以包括目标存储区域对应的应用进程存储指针。存储客户端基于目标存储区域对应的应用进程存储指针,通过查询其记录的对应关系,可以确定目标存储区域对应的标识。此后,存储客户端可以向存储服务进程发起存储区域释放请求,请求中可以包括目标存储区域对应的标识。
步骤250,通过存储服务进程基于目标存储区域的标识将缓冲存储占用记录中所述目标存储区域的状态标记修改为已被逻辑释放。
存储服务进程可以基于目标存储区域的标识将其释放。在一些实施例中,存储服务进行可以基于所述标识将相应处理卡的缓冲存储占用记录中所述目标存储区域的状态标记修改为已被逻辑释放,进而将目标存储区域作为逻辑释放的区域保留在缓冲存储区域中,以便后续的进程使用。
在一些实施例中,可以有一段时间内,进程使用的存储区域较少,导致处理卡的缓冲存储占用记录中留有大量空闲(即被逻辑释放)的存储区域,此时存储服务进程可以对缓冲存储占用记录的部分被逻辑释放的存储区域进行物理释放。具体的,存储服务进程可以设置空闲量阈值,当缓冲存储占用记录中空闲的存储区域量大于该空闲量阈值时,可以将超出该阈值的部分存储区域进行物理释放。当存储区域被物理释放收,存储服务进行将删除缓冲存储占用记录中被物理释放的存储区域的信息。
应当注意的是,上述有关流程200的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程200进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,步骤240和步骤250可以省略,又例如,步骤230可以拆分为两个子步骤。
图5是根据本说明书一些实施例所示的一种多处理卡间的存储区域分配***的示意框图。如图5所示,***500包括可以包括存储服务端510以及一个以上存储客户端(如存储客户端521、522…)。
其中,存储客户端用于接收应用进程(如应用进程1、应用进程2等)的调用进而向存储服务端510发起存储区域分配请求;所述存储区域分配请求包括所需区域大小。
存储服务端510用于从多处理卡中选出目标处理卡并在其上确定待分配的目标存储区域,将所述目标存储区域的标识返回给所述存储客户端。
所述存储客户端还用于基于所述标识将所述目标存储区域提供给所述应用进程使用。
在一些实施例中,所述多处理卡位于同一处理设备的主板上,且包括CPU板卡以及GPU板卡;其中,所述应用进程的数量为一个以上,分别运行于CPU板卡和/或GPU板卡上,与应用进程对应的,存储客户端也分别位于CPU板卡和/或GPU板卡上,以便应用进程调用;所述存储服务端位于CPU板卡上。
关于各模块的更多内容可以参见图2的相关说明,在此不再赘述。应当理解,图5所示的***及其模块可以利用各种方式来实现。例如,在一些实施例中,***及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。在一些实施例中,上述各模块可以由计算机代码实现,当计算机代码被执行时,客户端可以表现为函数本体及其接口,服务端可以表现为独立的进程。本领域技术人员可以理解上述的方法和***可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的***及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于***及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该***的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子***与其他模块连接。或者对某些模块进行拆分,得到更多的模块或者该模块下的多个单元。诸如此类的变形,均在本说明书的保护范围之内。
在一些实施例中,***500可以封装成库(library)供其他程序编译***调用。作为示例,可以供机器学习模型框架(如PyTorch、TensorFlow等)调用。机器学习模型框架用于机器模型训练或预测,开发人员通过编写相应的应用程序实现模型训练或预测功能,应用程序被框架编译后,得到可执行代码,在可执行代码中通过调用***500中的模块,便能够实现图2所示的卡间数据传输步骤。
图6是本说明书一些实施例还提供了另一种多处理卡间的存储分配方法,多处理卡包括中央处理器以及两个以上协处理器,多处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道,其中,中央处理器与协处理器之间的直连通道基于第一总线(如PCIe总线)实现,协处理器之间的直连通道基于第二总线(如NVLink总线)实现,第二总线具有比第一总线更大的数据传输带宽。如图6所示,流程600可以由中央处理器执行,其包括:
步骤610,接收存储区域分配请求;所述存储区域分配请求包括所需区域大小。在一些实施例中,存储区域分配请求可以来自所述多处理卡中的任意处理卡,如来自所述中央处理器或协处理器,具体的存储区域分配请求可以来自运行于某处理卡上的进程或程序。
步骤620,确定发起存储区域分配请求的处理卡是否具有不小于所述所需区域大小的空闲存储区域。
响应于该处理卡上具有不小于所述所需区域大小的空闲存储区域时,执行:
步骤630,从该处理卡上确定所述目标存储区域,得到所述目标存储区域的标识并返回,如返回给该处理卡上发出请求的进程或程序。
响应于该处理卡上不具有不小于所述所需区域大小的空闲存储区域时,执行:
步骤640,基于所述多处理卡中的其余处理卡的空闲存储区域的大小,以及所述其余处理卡与发起存储区域分配请求的处理卡之间的数据传输带宽从所述其余处理卡中选出目标处理卡。
步骤650,从目标处理卡上确定所述目标存储区域,得到所述目标存储区域的标识,并返回。
流程600各步骤的具体内容还可以参见图2的相关说明,如步骤640中的所述从其余处理卡选出目标处理卡的更多实现方式可以在步骤220中找到,在此不再赘述。
本说明书实施例可能带来的有益效果包括但不限于:(1)通过优化目标处理卡的选择策略,充分利用了闲置的处理卡的内部存储资源或有效缓解了多处理卡的存储资源使用不均衡问题,实验表明,优化前,GPU0发生显存不足时其上的程序无法运行,优化后,GPU0显存不足时可选择互联最快(数据传输带宽最宽)的GPU3和GPU6借用显存,使得其上的程序正常运行;(2)本说明书实施例提供的存储分配方法对应用层透明,原有的应用程序无需修改也可以在编译环节通过调用本说明书提供的接口或模块,实现本说明书一些实施例提供的卡间存储分配方法。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的***组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的***。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。

Claims (32)

1.一种多处理卡间的存储区域分配方法,多处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道;所述方法包括:
通过存储客户端接收应用进程的调用进而向存储服务进程发起存储区域分配请求;所述存储区域分配请求包括所需区域大小;
通过存储服务进程从多处理卡中选出目标处理卡并在其上确定待分配的目标存储区域,将所述目标存储区域的标识返回给所述存储客户端;其进一步包括:通过所述存储服务进程查询应用进程所在处理卡的存储占用记录,确定该处理卡是否具有不小于所述所需区域大小的空闲存储区域;响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:基于所述多处理卡中的其余处理卡的空闲存储区域的大小,以及所述其余处理卡与发起存储区域分配请求的处理卡之间的数据传输带宽从所述其余处理卡中选出目标处理卡;
通过存储客户端基于所述标识将所述目标存储区域提供给所述应用进程使用。
2.如权利要求1所述的方法,所述多处理卡位于同一处理设备的主板上,且包括CPU板卡和GPU板卡;其中,所述应用进程以及所述存储客户端运行于CPU板卡或GPU板卡上;所述存储服务进程运行于所述CPU板卡上。
3.如权利要求1所述的方法,所述存储服务进程还用于:
响应于该处理卡上具有不小于所述所需区域大小的空闲存储区域时,从该处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
4.如权利要求3所述的方法,所述存储服务进程还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
从所述目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
5.如权利要求1所述的方法,所述存储服务进程还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,确定具有不小于所述所需区域大小的空闲存储区域的一个或多个候选处理卡;
查询应用进程所在处理卡到候选处理卡之间的数据传输带宽,将最大数据传输带宽对应的候选处理卡作为所述目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
6.如权利要求1所述的方法,所述存储服务进程还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,确定具有不小于所述所需区域大小的空闲存储区域的一个或多个候选处理卡;
查询应用进程所在处理卡到候选处理卡之间的数据传输带宽,将数据传输带宽不小于带宽阈值的候选处理卡中具有最大空闲存储区域的候选处理卡,作为所述目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
7.如权利要求1所述的方法,所述存储服务进程还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,基于空闲存储区域的大小为各所述其余处理卡设置第一权重;第一权重与所述其余处理卡的空闲存储区域的大小正相关;
查询应用进程所在处理卡到其余处理卡之间的数据传输带宽,基于数据传输带宽为各所述其余处理卡设置第二权重;第二权重与所述其余处理卡对应的所述数据传输带宽正相关;
基于第一权重和第二权重从所述其余处理卡中选出目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
8.如权利要求1所述的方法,所述存储服务进程还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,基于空闲存储区域的大小为各所述其余处理卡设置第一权重;第一权重与所述其余处理卡的空闲存储区域的大小正相关;
查询应用进程所在处理卡到其余处理卡之间的数据传输带宽,基于数据传输带宽为各所述其余处理卡设置第二权重;第二权重与所述其余处理卡对应的所述数据传输带宽正相关;
查询应用进程所在处理卡的全局存储分配历史记录,基于应用进程所在处理卡从所述其余处理卡获得存储区域的频次为各所述其余处理卡设置第三权重;第三权重与所述其余处理卡对应的所述频次负相关;所述全局存储分配历史记录由所述存储服务进程维护,其包括各处理卡从其他处理卡获得存储区域的历史信息;
基于第一权重、第二权重和第三权重从所述其余处理卡中选出目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
9.如权利要求3~8中任一项所述的方法,所述存储占用记录包括缓冲存储占用记录和/或底层存储占用记录;
所述缓冲存储占用记录包括处理卡上被分配过但未被物理释放的一个或多个存储区域的大小、标识、对应的服务进程存储指针以及是否被逻辑释放的状态标记;所述缓冲存储占用记录由所述存储服务进程维护;
所述底层存储占用记录包括处理卡上未被物理占用也未被逻辑占用的存储区域的大小;所述底层存储占用记录由所述存储服务进程向对应的处理卡请求得到;
所述方法还包括通过所述存储服务进程在所述缓冲存储占用记录中记录所述目标存储区域的大小、标识、对应的服务进程存储指针以及被逻辑占用的状态标记;所述目标存储区域优先来自基于所述缓冲存储占用记录确定的被逻辑释放的空闲存储区域。
10.如权利要求9所述的方法,所述通过存储客户端基于所述标识将所述目标存储区域提供给所述应用进程使用,包括:通过存储客户端基于所述标识确定所述目标存储区域对应的应用进程存储指针,将所述应用进程存储指针提供给所述应用进程,以便所述应用进程使用所述目标存储区域;
所述方法还包括:通过存储客户端记录所述标识与所述应用进程存储指针的对应关系。
11.如权利要求10所述的方法,还包括:
通过存储客户端接收应用进程的调用,进而向存储服务进程发起存储区域释放请求;所述存储区域释放请求包括目标存储区域的标识;所述目标存储区域的标识为所述存储客户端基于目标存储区域对应的应用进程存储指针以及所述对应关系确定的;
通过存储服务进程基于目标存储区域的标识将缓冲存储占用记录中所述目标存储区域的状态标记修改为已被逻辑释放。
12.如权利要求11所述的方法,还包括:
通过存储服务进程对缓冲存储占用记录的部分被逻辑释放的存储区域进行物理释放,并删除缓冲存储占用记录中被物理释放的存储区域的信息。
13.一种多处理卡间的存储区域分配***,多处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道;所述***包括:
存储客户端,用于接收应用进程的调用进而向存储服务端发起存储区域分配请求;所述存储区域分配请求包括所需区域大小;
存储服务端,用于从多处理卡中选出目标处理卡并在其上确定待分配的目标存储区域,将所述目标存储区域的标识返回给所述存储客户端;所述存储服务端进一步用于: 查询应用进程所在处理卡的存储占用记录,确定该处理卡是否具有不小于所述所需区域大小的空闲存储区域;响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:基于所述多处理卡中的其余处理卡的空闲存储区域的大小,以及所述其余处理卡与发起存储区域分配请求的处理卡之间的数据传输带宽从所述其余处理卡中选出目标处理卡;
所述存储客户端还用于基于所述标识将所述目标存储区域提供给所述应用进程使用。
14.如权利要求13所述的***,所述多处理卡位于同一处理设备的主板上,且包括CPU板卡和GPU板卡;其中,所述应用进程和所述存储客户端运行于CPU板卡或GPU板卡上;所述存储服务端运行于所述CPU板卡上。
15.如权利要求13所述的***,所述存储服务端还用于:
响应于该处理卡上具有不小于所述所需区域大小的空闲存储区域时,从该处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
16.如权利要求15所述的***,所述存储服务端还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
从所述目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
17.如权利要求13所述的***,所述存储服务端还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,确定具有不小于所述所需区域大小的空闲存储区域的一个或多个候选处理卡;
查询应用进程所在处理卡到候选处理卡之间的数据传输带宽,将最大数据传输带宽对应的候选处理卡作为所述目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
18.如权利要求13所述的***,所述存储服务端还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,确定具有不小于所述所需区域大小的空闲存储区域的一个或多个候选处理卡;
查询应用进程所在处理卡到候选处理卡之间的数据传输带宽,将数据传输带宽不小于带宽阈值的候选处理卡中具有最大空闲存储区域的候选处理卡,作为所述目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
19.如权利要求13所述的***,所述存储服务端还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,基于空闲存储区域的大小为各所述其余处理卡设置第一权重;第一权重与所述其余处理卡的空闲存储区域的大小正相关;
查询应用进程所在处理卡到其余处理卡之间的数据传输带宽,基于数据传输带宽为各所述其余处理卡设置第二权重;第二权重与所述其余处理卡对应的所述数据传输带宽正相关;
基于第一权重和第二权重从所述其余处理卡中选出目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
20.如权利要求13所述的***,所述存储服务端还用于,响应于应用进程所在的处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
查询其余处理卡的存储占用记录,基于空闲存储区域的大小为各所述其余处理卡设置第一权重;第一权重与所述其余处理卡的空闲存储区域的大小正相关;
查询应用进程所在处理卡到其余处理卡之间的数据传输带宽,基于数据传输带宽为各所述其余处理卡设置第二权重;第二权重与所述其余处理卡对应的所述数据传输带宽正相关;
查询应用进程所在处理卡的全局存储分配历史记录,基于应用进程所在处理卡从所述其余处理卡获得存储区域的频次为各所述其余处理卡设置第三权重;第三权重与所述其余处理卡对应的所述频次负相关;所述全局存储分配历史记录由所述存储服务端维护,其包括各处理卡从其他处理卡获得存储区域的历史信息;
基于第一权重、第二权重和第三权重从所述其余处理卡中选出目标处理卡;
从目标处理卡上确定所述目标存储区域,得到所述目标存储区域对应的服务进程存储指针;
将所述目标存储区域对应的服务进程存储指针转换为所述目标存储区域的标识,以返回给所述存储客户端。
21.如权利要求15~20中任一项所述的***,所述存储占用记录包括缓冲存储占用记录和/或底层存储占用记录;
所述缓冲存储占用记录包括处理卡上被分配过但未被物理释放的一个或多个存储区域的大小、标识、对应的服务进程存储指针以及是否被逻辑释放的状态标记;所述缓冲存储占用记录由所述存储服务端维护;
所述底层存储占用记录包括处理卡上未被物理占用也未被逻辑占用的存储区域的大小;所述底层存储占用记录由所述存储服务端向对应的处理卡请求得到;
所述存储服务端还用于在所述缓冲存储占用记录中记录所述目标存储区域的大小、标识、对应的服务进程存储指针以及被逻辑占用的状态标记;
所述目标存储区域优先来自基于所述缓冲存储占用记录确定的被逻辑释放的空闲存储区域。
22.如权利要求21所述的***,所述存储客户端进一步用于:通过存储客户端基于所述标识确定所述目标存储区域对应的应用进程存储指针,将所述应用进程存储指针提供给所述应用进程,以便所述应用进程使用所述目标存储区域;
所述存储客户端还用于记录所述标识与所述应用进程存储指针的对应关系。
23.如权利要求22所述的***,所述存储客户端还用于接收应用进程的调用,进而向存储服务端发起存储区域释放请求;所述存储区域释放请求包括目标存储区域的标识;所述目标存储区域的标识为所述存储客户端基于目标存储区域对应的应用进程存储指针以及所述对应关系确定的;
所述存储服务端还用于基于目标存储区域的标识将缓冲存储占用记录中所述目标存储区域的状态标记修改为已被逻辑释放。
24.如权利要求23所述的***,
所述存储服务端还用于对缓冲存储占用记录的部分被逻辑释放的存储区域进行物理释放,并删除缓冲存储占用记录中被物理释放的存储区域的信息。
25.一种存储介质,用于存储计算机指令,当所述计算机指令中的至少一部分被处理器或处理卡执行时,实现如权利要求1~12任一项所述的方法。
26.一种装置,包括多个处理卡以及存储介质,多个处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道,所述存储介质存储有计算机指令,多个处理卡用于执行计算机指令以实现如权利要求1~12任一项所述的方法。
27.一种多处理卡间的存储区域分配方法,多处理卡包括中央处理器以及两个以上协处理器,多处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道,其中,中央处理器与协处理器之间的直连通道基于第一总线实现,协处理器之间的直连通道基于第二总线实现,第二总线具有比第一总线更大的数据传输带宽;所述方法包括通过中央处理器:
接收来自所述多处理卡中某处理卡的存储区域分配请求;所述存储区域分配请求包括所需区域大小;
确定发起所述存储区域分配请求的处理卡是否具有不小于所述所需区域大小的空闲存储区域;
响应于该处理卡上具有不小于所述所需区域大小的空闲存储区域时,从该处理卡上确定目标存储区域,得到所述目标存储区域的标识并返回;
响应于该处理卡上不具有不小于所述所需区域大小的空闲存储区域时:
基于所述多处理卡中的其余处理卡的空闲存储区域的大小,以及所述其余处理卡与发起存储区域分配请求的处理卡之间的数据传输带宽从所述其余处理卡中选出目标处理卡;
以及,从所述目标处理卡上确定目标存储区域,得到所述目标存储区域的标识并返回。
28.如权利要求27所述的方法,所述确定发起所述存储区域分配请求的处理卡是否具有不小于所述所需区域大小的空闲存储区域,包括:
查询该处理卡的存储占用记录,确定该处理卡是否具有不小于所述所需区域大小的空闲存储区域。
29.如权利要求27所述的方法,所述基于所述多处理卡中的其余处理卡的空闲存储区域的大小,以及所述其余处理卡与发起存储区域分配请求的处理卡之间的数据传输带宽从所述其余处理卡中选出目标处理卡,包括:
查询其余处理卡的存储占用记录,确定具有不小于所述所需区域大小的空闲存储区域的一个或多个候选处理卡;
查询发起存储区域分配请求的处理卡到候选处理卡之间的数据传输带宽,将最大数据传输带宽对应的候选处理卡作为所述目标处理卡。
30.如权利要求27所述的方法,所述基于所述多处理卡中的其余处理卡的空闲存储区域的大小,以及所述其余处理卡与发起存储区域分配请求的处理卡之间的数据传输带宽从所述其余处理卡中选出目标处理卡,包括:
查询其余处理卡的存储占用记录,基于空闲存储区域的大小为各所述其余处理卡设置第一权重;第一权重与所述其余处理卡的空闲存储区域的大小正相关;
查询发起存储区域分配请求的处理卡到其余处理卡之间的数据传输带宽,基于数据传输带宽为各所述其余处理卡设置第二权重;第二权重与所述其余处理卡对应的所述数据传输带宽正相关;
查询发起存储区域分配请求的处理卡的全局存储分配历史记录,基于发起存储区域分配请求的处理卡从其余处理卡获得存储区域的频次为各所述其余处理卡设置第三权重;第三权重与所述其余处理卡对应的所述频次负相关;所述全局存储分配历史记录包括各处理卡从其他处理卡获得存储区域的历史信息;
基于第一权重、第二权重和第三权重从所述其余处理卡中选出目标处理卡。
31.一种存储介质,用于存储计算机指令,当所述计算机指令中的至少一部分被处理器或处理卡执行时,实现如权利要求27~30任一项所述的方法。
32.一种装置,包括多个处理卡以及存储介质,多处理卡包括中央处理器以及两个以上协处理器,多处理卡之间具有直连通道和/或间接通道,间接通道包括两跳以上的直连通道,其中,中央处理器与协处理器之间的直连通道基于第一总线实现,协处理器之间的直连通道基于第二总线实现,第二总线具有比第一总线更大的数据传输带宽;所述存储介质存储有计算机指令,所述多处理卡中的中央处理器用于执行计算机指令以实现如权利要求27~30任一项所述的方法。
CN202310714241.1A 2023-06-15 2023-06-15 一种多处理卡间的存储区域分配方法和*** Active CN116450055B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310714241.1A CN116450055B (zh) 2023-06-15 2023-06-15 一种多处理卡间的存储区域分配方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310714241.1A CN116450055B (zh) 2023-06-15 2023-06-15 一种多处理卡间的存储区域分配方法和***

Publications (2)

Publication Number Publication Date
CN116450055A CN116450055A (zh) 2023-07-18
CN116450055B true CN116450055B (zh) 2023-10-27

Family

ID=87124110

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310714241.1A Active CN116450055B (zh) 2023-06-15 2023-06-15 一种多处理卡间的存储区域分配方法和***

Country Status (1)

Country Link
CN (1) CN116450055B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445835A (zh) * 2015-08-10 2017-02-22 北京忆恒创源科技有限公司 内存分配方法与装置
CN109602413A (zh) * 2018-12-06 2019-04-12 Oppo广东移动通信有限公司 心跳检测方法、装置、存储介质及服务器
CN110162395A (zh) * 2018-02-12 2019-08-23 杭州宏杉科技股份有限公司 一种内存分配的方法及装置
US10776290B1 (en) * 2019-09-12 2020-09-15 EMC IP Holding Company LLC Techniques performed in connection with an insufficient resource level when processing write data
CN112292667A (zh) * 2018-09-28 2021-01-29 华为技术有限公司 选择处理器的方法和装置
CN113268356A (zh) * 2021-07-20 2021-08-17 西安芯瞳半导体技术有限公司 基于LINUX***的多GPU板卡bounding的***、方法及介质
CN115309539A (zh) * 2022-06-29 2022-11-08 支付宝(杭州)信息技术有限公司 显存分配方法、***及非暂时性存储介质
CN115421787A (zh) * 2022-08-26 2022-12-02 阿里巴巴(中国)有限公司 指令执行方法、装置、设备、***、程序产品及介质
CN115686875A (zh) * 2021-07-22 2023-02-03 伊姆西Ip控股有限责任公司 用于在多个进程之间传输数据的方法、设备和程序产品
CN115964001A (zh) * 2023-02-01 2023-04-14 支付宝(杭州)信息技术有限公司 一种数据缓存方法、***及装置
CN116028455A (zh) * 2023-01-06 2023-04-28 苏州浪潮智能科技有限公司 一种数据处理方法、装置、存储介质及电子设备
CN116069493A (zh) * 2021-11-03 2023-05-05 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191662B2 (en) * 2016-10-04 2019-01-29 Pure Storage, Inc. Dynamic allocation of segments in a flash storage system

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445835A (zh) * 2015-08-10 2017-02-22 北京忆恒创源科技有限公司 内存分配方法与装置
CN110162395A (zh) * 2018-02-12 2019-08-23 杭州宏杉科技股份有限公司 一种内存分配的方法及装置
CN112292667A (zh) * 2018-09-28 2021-01-29 华为技术有限公司 选择处理器的方法和装置
CN109602413A (zh) * 2018-12-06 2019-04-12 Oppo广东移动通信有限公司 心跳检测方法、装置、存储介质及服务器
US10776290B1 (en) * 2019-09-12 2020-09-15 EMC IP Holding Company LLC Techniques performed in connection with an insufficient resource level when processing write data
CN113268356A (zh) * 2021-07-20 2021-08-17 西安芯瞳半导体技术有限公司 基于LINUX***的多GPU板卡bounding的***、方法及介质
CN115686875A (zh) * 2021-07-22 2023-02-03 伊姆西Ip控股有限责任公司 用于在多个进程之间传输数据的方法、设备和程序产品
CN116069493A (zh) * 2021-11-03 2023-05-05 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质
CN115309539A (zh) * 2022-06-29 2022-11-08 支付宝(杭州)信息技术有限公司 显存分配方法、***及非暂时性存储介质
CN115421787A (zh) * 2022-08-26 2022-12-02 阿里巴巴(中国)有限公司 指令执行方法、装置、设备、***、程序产品及介质
CN116028455A (zh) * 2023-01-06 2023-04-28 苏州浪潮智能科技有限公司 一种数据处理方法、装置、存储介质及电子设备
CN115964001A (zh) * 2023-02-01 2023-04-14 支付宝(杭州)信息技术有限公司 一种数据缓存方法、***及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Pirahandeh,Mehdi等.High performance GPU-based parity computing scheduler in storage applications.《CONCURRENCY AND COMPUTATION-PRACTICE & EXPERIENCE》.2017,全文. *
集成CPU-GPU架构上的列存储连接优化技术研究;丁祥武;李子通;;计算机科学(11);全文 *

Also Published As

Publication number Publication date
CN116450055A (zh) 2023-07-18

Similar Documents

Publication Publication Date Title
US7222343B2 (en) Dynamic allocation of computer resources based on thread type
US7805582B2 (en) Method of managing memory in multiprocessor system on chip
CN102667714B (zh) 支持访问由操作***环境外的资源提供的功能的方法和***
JPH0326419B2 (zh)
CN113590508B (zh) 动态可重构的内存地址映射方法及装置
CN109376104B (zh) 一种芯片及基于其的数据处理方法和装置
CN110187835A (zh) 用于管理访问请求的方法、装置、设备和存储介质
CN115129621B (zh) 一种内存管理方法、设备、介质及内存管理模块
CN113010265A (zh) Pod的调度方法、调度器、存储插件及***
CN116225686A (zh) 面向混合内存架构的cpu调度方法和***
US10901883B2 (en) Embedded memory management scheme for real-time applications
US20090187911A1 (en) Computer device with reserved memory for priority applications
CN116450055B (zh) 一种多处理卡间的存储区域分配方法和***
KR102563648B1 (ko) 멀티 프로세서 시스템 및 그 구동 방법
US20220382672A1 (en) Paging in thin-provisioned disaggregated memory
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
CN115586972A (zh) 命令生成方法、装置、ai芯片、电子设备及存储介质
US20210373790A1 (en) Inference in memory
US20130014123A1 (en) Determination of running status of logical processor
CN116450564B (zh) 一种多处理卡间的数据传输方法和***
TW202119215A (zh) 共用代碼之系統與代碼共用方法
US20180181443A1 (en) METHOD OF PROCESSING OpenCL KERNEL AND COMPUTING DEVICE THEREFOR
CN116483536B (zh) 数据调度方法、计算芯片及电子设备
US20220058123A1 (en) Methods and nodes for handling memory
CN116954918A (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