CN112286688B - 一种内存管理和使用方法、装置、设备和介质 - Google Patents

一种内存管理和使用方法、装置、设备和介质 Download PDF

Info

Publication number
CN112286688B
CN112286688B CN202011223607.8A CN202011223607A CN112286688B CN 112286688 B CN112286688 B CN 112286688B CN 202011223607 A CN202011223607 A CN 202011223607A CN 112286688 B CN112286688 B CN 112286688B
Authority
CN
China
Prior art keywords
memory
target
accelerator card
cpu
fpga
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
CN202011223607.8A
Other languages
English (en)
Other versions
CN112286688A (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.)
Beijing Shenwei Technology Co ltd
Original Assignee
Beijing Shenwei 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 Beijing Shenwei Technology Co ltd filed Critical Beijing Shenwei Technology Co ltd
Priority to CN202011223607.8A priority Critical patent/CN112286688B/zh
Publication of CN112286688A publication Critical patent/CN112286688A/zh
Application granted granted Critical
Publication of CN112286688B publication Critical patent/CN112286688B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

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

Abstract

本发明公开了一种内存管理和使用方法、装置、设备和介质,包括:从多块加速卡内存中申请预设数量的加速卡内存,并基于预设数量的加速卡内存构建内存池;接收多个用户端中的目标用户端发送的内存申请请求;从内存池中选择至少一块空闲的加速卡内存作为目标加速卡内存,将目标加速卡内存分配给目标用户端,并将目标加速卡内存从内存池中释放;建立目标加速卡内存与目标CPU内存之间的映射关系,目标CPU内存与目标用户端对应,使得CPU与FPGA依赖于映射关系完成数据交互。本申请不仅保证了单一用户端与FPGA之间的数据交互,还实现了多核CPU的多个用户端同时与FPGA完成数据交互的过程,进而提高了FPGA计算资源的使用率。

Description

一种内存管理和使用方法、装置、设备和介质
技术领域
本发明涉及异构系统技术领域,尤其涉及一种内存管理和使用方法、装置、设备和介质。
背景技术
随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求已远远超出了传统CPU(中央处理器,Central Processing Unit)处理器的能力所及,CPU和FPGA(可编程逻辑门阵列,Field Programmable Gate Array)构成的异构计算系统被认为是解决当前CPU计算瓶颈的一项关键技术。CPU和FPGA构成的异构计算系统的计算能力与传统CPU并行计算的计算能力相比,具有更高效率和更低延迟的计算性能优势。然而,在CPU和FPGA构成的异构计算系统中,由于FPGA的运算性能较高,单核CPU已无法满足与FPGA的交互需求,即单核CPU的计算能力已经无法与FPGA的计算能力匹配,进而降低了FPGA的使用率,造成了FPGA计算资源的浪费。
发明内容
本申请实施例通过提供一种内存管理和使用方法、装置、设备和介质,解决了现有技术中单核CPU的计算能力无法与FPGA的计算能力匹配,进而降低了FPGA的使用率,造成了FPGA计算资源的浪费的技术问题,实现了高效率使用FPGA的计算能力,避免浪费FPGA计算资源的技术效果。
第一方面,本申请提供了一种内存管理方法,应用于异构计算系统,异构计算系统包括CPU以及与CPU通信的FPGA,CPU对应有CPU内存,FPGA对应有多块加速卡内存;方法包括:
从多块加速卡内存中申请预设数量的加速卡内存,并基于预设数量的加速卡内存构建内存池;
接收多个用户端中的目标用户端发送的内存申请请求;
从内存池中选择至少一块空闲的加速卡内存作为目标加速卡内存,将目标加速卡内存分配给目标用户端,并将目标加速卡内存从内存池中释放;
建立目标加速卡内存与目标CPU内存之间的映射关系,目标CPU内存与目标用户端对应,使得CPU与FPGA依赖于映射关系完成数据交互。
进一步地,方法还包括:
接收目标用户端发送的内存回收通知信息;
根据内存回收通知信息,将目标加速卡内存回收至内存池中。
进一步地,方法还包括:
监控目标用户端使用目标加速卡内存的使用时长;
当使用时长超过预设时长时,将目标加速卡内存回收至内存池中。
进一步地,接收多个用户端中的目标用户端发送的内存申请请求,具体包括:
接收多个用户端中任意数量的用户端发送的内存申请请求;
按照任意数量的用户端发送内存申请请求的时间先后顺序,将任意数量的用户端依次作为目标用户端,并为目标用户端分配目标加速卡内存。
第二方面,本申请提供了一种内存使用方法,应用于异构计算系统,异构计算系统包括CPU以及与CPU通信的FPGA,CPU对应有CPU内存,FPGA对应有多块加速卡内存;方法包括:
根据用户需求生成内存申请请求,并将内存申请请求发送至服务端,以申请目标加速卡内存;目标加速卡内存是从内存池中选择的;内存池是基于FPGA对应的多块加速卡内存中预设数量的加速卡内存构建的;
当成功申请目标加速卡内存时,将用户端对应的目标CPU内存中的待处理数据发送至目标加速卡内存中,以供FPGA对待处理数据进行处理生成回传数据,并将回传数据存储在目标加速卡内存中;
从目标加速卡内存中获取回传数据,并向服务端发送内存回收通知信息,使得服务端将目标加速卡内存回收至内存池中。
进一步地,方法还包括:
当无法成功申请目标加速卡内存时,进入等待状态,直到成功申请目标加速卡内存。
第三方面,本申请提供了一种内存管理装置,装置包括:
构建模块,用于从多块加速卡内存中申请预设数量的加速卡内存,并基于预设数量的加速卡内存构建内存池;
目标内存申请请求接收模块,用于接收多个用户端中的目标用户端发送的内存申请请求;
目标加速卡内存选择模块,用于从内存池中选择至少一块空闲的加速卡内存作为目标加速卡内存,将目标加速卡内存分配给目标用户端,并将目标加速卡内存从内存池中释放;
映射关系建立模块,用于建立目标加速卡内存与目标CPU内存之间的映射关系,目标CPU内存与目标用户端对应,使得CPU与FPGA依赖于映射关系完成数据交互。
第四方面,本申请提供了一种内存使用装置,装置包括:
内存申请请求生成模块,用于根据用户需求生成内存申请请求,并将内存申请请求发送至服务端,以申请目标加速卡内存;目标加速卡内存是从内存池中选择的;内存池是基于FPGA对应的多块加速卡内存中预设数量的加速卡内存构建的;
第一发送模块,用于当成功申请目标加速卡内存时,将用户端对应的目标CPU内存中的待处理数据发送至目标加速卡内存中,以供FPGA对待处理数据进行处理生成回传数据,并将回传数据存储在目标加速卡内存中;
第二发送模块,用于从目标加速卡内存中获取回传数据,并向服务端发送内存回收通知信息,使得服务端将目标加速卡内存回收至内存池中。
第五方面,本申请提供了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为执行以实现一种内存管理方法和一种内存使用方法。
第五方面,本申请提供了一种非临时性计算机可读存储介质,当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行实现一种内存管理方法和一种内存使用方法。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请在CPU中设置服务端,通过服务端对FPGA的加速卡内存进行管理,并在接收到用户端的内存申请请求时,为用户端分配对应的加速卡内存,进而使得CPU的多个用户进程可以在短时间内与FPGA的加速卡内存一一对应,不仅保证了单一用户端与FPGA之间的数据交互,还实现了多核CPU的多个用户端同时与FPGA完成数据交互的过程,进而避免了现有技术中单核CPU的计算能力无法与FPGA的计算能力匹配,FPGA使用率低的技术问题,提高了FPGA计算资源的使用率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种内存管理方法的流程示意图;
图2为本申请提供的异构计算系统的结构示意图;
图3为本申请提供的用户端与服务端之间的数据交互的流程示意图;
图4为本申请提供的一种内存使用方法的流程示意图;
图5为本申请提供的CPU和FPGA加速卡之间的结构示意图;
图6为本申请提供的一种内存管理装置的结构示意图;
图7为本申请提供的一种内存使用装置的结构示意图;
图8为本申请提供的一种电子设备的结构示意图。
具体实施方式
本申请实施例通过提供一种内存管理方法,解决了现有技术中单核CPU的计算能力无法与FPGA的计算能力匹配,进而降低了FPGA的使用率,造成了FPGA计算资源的浪费的技术问题。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:
一种内存管理方法,应用于异构计算系统,异构计算系统包括CPU以及与CPU通信的FPGA,CPU对应有CPU内存,FPGA对应有多块加速卡内存;方法包括:从多块加速卡内存中申请预设数量的加速卡内存,并基于预设数量的加速卡内存构建内存池;接收多个用户端中的目标用户端发送的内存申请请求;从内存池中选择至少一块空闲的加速卡内存作为目标加速卡内存,将目标加速卡内存分配给目标用户端,并将目标加速卡内存从内存池中释放;建立目标加速卡内存与目标CPU内存之间的映射关系,目标CPU内存与目标用户端对应,使得CPU与FPGA依赖于映射关系完成数据交互。
本申请在CPU中设置服务端,通过服务端对FPGA的加速卡内存进行管理,并在接收到用户端的内存申请请求时,为用户端分配对应的加速卡内存,进而使得CPU的多个用户进程可以在短时间内与FPGA的加速卡内存一一对应,不仅保证了单一用户端与FPGA之间的数据交互,还实现了多核CPU的多个用户端同时与FPGA完成数据交互的过程,进而避免了现有技术中单核CPU的计算能力无法与FPGA的计算能力匹配,FPGA使用率低的技术问题,提高了FPGA计算资源的使用率。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
首先说明,本文中出现的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请提供了的一种内存管理方法应用于如图2所示的异构计算系统,异构计算系统包括CPU以及与CPU通信的FPGA,CPU对应有CPU内存,FPGA对应有多块加速卡内存。
异构计算系统包括CPU和FPGA。其中,CPU的特点是需要编译系统支持,编译系统可以将高级软件语言翻译成机器可以识别的指令,在使用CPU时,便可以利用高级软件语言输入相应的指令,进而使得CPU具有极高的便利性和易用性。而FPGA的特点是直接用门电路实现算法,不用对语言进行翻译,一方面使得FPGA具有更快的计算能力,另一方面则导致FPGA的指令输入较为复杂和困难。而异构计算系统则具有CPU和FPGA两者的优点,即具有便利性、易用性和更快的计算能力。
本申请中提供的CPU包括多个用户进程和一个服务进程,用户进程依赖于CPU形成用户端,服务进程依赖于CPU形成服务端。其中,CPU为多核CPU,在同一时刻,一个CPU核只能运行一个用户进程,因此在同一时刻,多个用户端与多个CPU核一一对应。更具体地,一个用户端是一个用户进程以一个CPU核为载体形成的;服务端是服务进程以CPU为载体形成的。
本申请提供的一种内存管理方法应用于服务端,具体应用于服务进程,服务端用于对加速卡内存进行分配,并管理FPGA中加速卡内存的状态,以保证CPU内存与FPGA加速卡内存之间的数据传输。如图1所示,本申请提供的一种内存管理方法具体包括:
步骤S11,从多块加速卡内存中申请预设数量的加速卡内存,并基于预设数量的加速卡内存构建内存池。
服务端从FPGA一次性申请预设数量的加速卡内存以构建内存池。预设数量可以是N块,N为正整数。即服务进程从FPGA的多块加速卡内存中申请一定数量的加速卡内存,并根据申请的加速卡内存的物理地址构建内存池,以供CPU的用户进程使用,进而支撑CPU的用户进程进行数据处理。
步骤S12,接收多个用户端中的目标用户端发送的内存申请请求。
CPU为多核CPU,也就能同时处理多个用户进程(同一时刻,一个CPU核只能运行一个用户进程),也就对应多个用户端。每个用户端都可以产生内存申请请求,可以从发送内存申请请求的用户端中按照预设规则,依次选择一个用户端作为目标用户端,以对目标用户端的目标内存申请请求进行处理。其中,预设规则可以是按照各个用户端发送内存申请请求的时间先后顺序选择目标用户端;也可以是按照各个用户端对应的事件级别选择目标用户端。
更具体地,以时间先后顺序为预设规则选择目标用户端,可以包括以下步骤(步骤S121~步骤S122):
步骤S121,接收多个用户端中任意数量的用户端发送的内存申请请求。
每个用户端都会产生内存申请请求,且各个用户端产生内存申请请求的时机不确定。而服务端面对各个用户端发送的多个内存申请请求只能逐一处理,因此,服务端可以将各个用户端发送的多个内存申请请求插入队列中,按照队列中的先后顺序依次处理。
步骤S122,按照任意数量的用户端发送内存申请请求的时间先后顺序,将任意数量的用户端依次作为目标用户端,并为目标用户端分配目标加速卡内存。
按照任意数量的用户端发送内存申请请求的时间先后顺序,将各个用户端依次插入队列中,将队列中的各个用户端按照队列顺序依次作为目标用户端,将其对应的内存申请请求作为目标内存申请请求(目标内存申请请求是指服务端即将处理的内存申请请求),依次为相应的目标用户端分配相应的加速卡内存。
步骤S13,从内存池中选择至少一块空闲的加速卡内存作为目标加速卡内存,将目标加速卡内存分配给目标用户端,并将目标加速卡内存从内存池中释放。
在接收目标用户端的目标内存申请请求之后,判断内存池中是否存在加速卡内存,即判断内存池中是否存在空闲内存,在存在空闲内存的情况下,从中选择一个加速卡内存作为目标加速卡内存以供目标用户端使用。当目标加速卡内存被确定时,则从内存池中释放目标加速卡内存对应的物理地址,避免已经被占用的目标加速卡内存仍存在于内存池中,进而避免服务端在为其他用户端分配加速卡内存时造成干扰,进而使得内存池中存在的加速卡内存都是可用的状态(或者说空闲状态)。
步骤S14,建立目标加速卡内存与目标CPU内存之间的映射关系,目标CPU内存与目标用户端对应,使得CPU与FPGA依赖于映射关系完成数据交互。
为了便于目标用户端与目标加速卡内存之间的数据交互,在为目标用户端确定目标加速卡内存时,建立目标加速卡内存与用户端对应的目标CPU内存之间的映射关系,使得目标加速卡内存与目标CPU内存对应。当异构计算系统中存在多组目标加速卡内存和目标CPU内存时,目标加速卡内存与目标CPU内存则是一一对应的。当目标CPU内存中存在待处理数据时,则可以将待处理数据发送至目标加速卡内存中,以供FPGA对待处理数据进行处理生成回传数据,并将回传数据返回至CPU内存中,以实现数据交互。
本申请在CPU中设置服务服务进程以形成服务端,通过服务端对FPGA的加速卡内存进行管理,并在接收到用户端的内存申请请求时,为用户端分配对应的加速卡内存,进而使得CPU的多个用户进程可以在短时间内与FPGA的加速卡内存一一对应,不仅保证了单一用户端与FPGA之间的数据交互,还实现了多核CPU的多个用户端同时与FPGA完成数据交互的过程,进而避免了现有技术中单核CPU的计算能力无法与FPGA的计算能力匹配,FPGA使用率低的技术问题,提高了FPGA计算资源的使用率。
在上述技术方案的基础上,本申请提供了进一步地优化方案,具体如下:
步骤S21,接收目标用户端发送的内存回收通知信息。
步骤S22,根据内存回收通知信息,将目标加速卡内存回收至内存池中。
当目标用户端已经完成与FPGA的数据交互过程,则不需要再使用加速卡内存。为了提高加速卡内存的利用率,目标用户端产生一个内存回收通知信息(内存回收通知信息可以是包含待回收的加速卡内存的物理地址的通知信息),使得服务端可以尽快回收加速卡内存至内存池中,以供需要加速卡内存的用户端使用,提高了FPGA的加速卡内存使用率和内存使用效率,也减少了用户端等待分配加速卡内存的时间。
在上述技术方案的基础上,本申请提供了进一步地优化方案,具体如下:
步骤S31,监控目标用户端使用目标加速卡内存的使用时长;
步骤S32,当使用时长超过预设时长时,将目标加速卡内存回收至内存池中。
在用户端的用户进程运行过程中,有可能出现用户进程宕机或异常退出的情况,而该用户端所占用的目标加速卡内存无法自动释放,进而存在长期占用加速卡内存的情况。为了解决该问题,本申请对每个用户端使用加速卡内存的使用时长进行监控,当使用时长超过预设时长时,则对该用户端对应的加速卡内存强制回收至内存池中,以避免因用户进程异常而无故占用加速卡内存的情况发生,也提高了加速卡内存的使用率和使用效率,减少了用户端等待分配加速卡内存的时间,也进一步提高了异构计算系统的计算效率。其中,预设使用时长可根据具体情况设定。
基于同一发明构思,本申请提供了如图4所示的一种内存使用方法,应用于如图2所示的异构计算系统的用户端,用户端是用户进程依赖于CPU形成的,异构计算系统包括CPU以及与CPU通信的FPGA,CPU对应有CPU内存,FPGA对应有多块加速卡内存,方法应用于多个用户端中的任意一个用户端,多个用户端是多个用户进程分别依赖于CPU形成的,方法包括:
步骤S41,根据用户需求生成内存申请请求,并将内存申请请求发送至服务端,以申请目标加速卡内存;目标加速卡内存是从内存池中选择的;内存池是基于FPGA对应的多块加速卡内存中预设数量的加速卡内存构建的。
用户需求可以是数据处理请求,当用户端接收到数据处理请求时,意味着需要向FPGA申请内存,进而产生内存申请请求,以向服务端申请FPGA的加速卡内存,将用户端申请的加速卡内存记为目标加速卡内存。申请加速卡内存的过程可详见步骤S11至步骤S14。
步骤S42,当成功申请目标加速卡内存时,将用户端对应的目标CPU内存中的待处理数据发送至目标加速卡内存中,以供FPGA对待处理数据进行处理生成回传数据,并将回传数据存储在目标加速卡内存中。
当成功申请到目标加速卡内存时,服务端已经生成目标加速卡内存与用户端的CPU内存的映射关系,则用户端便能依赖于映射关系将目标CPU内存的待处理数据发送至目标加速卡内存,以供FPGA处理以生成回传数据,回传数据存储至目标加速卡内存中。CPU的CPU内存可以是多块的,多块CPU内存可以分别与各个用户进程对应。
当无法成功申请目标加速卡内存时,进入等待状态,直到成功申请目标加速卡内存。无法成功申请目标加速卡内存的原因可能是内存池中没有空闲的加速卡内存,需要等待一段时间,待其他用户端释放加速卡内存后,再为其分配目标加速卡内存。
步骤S43,从目标加速卡内存中获取回传数据,并向服务端发送内存回收通知信息,使得服务端将目标加速卡内存回收至内存池中。
用户端从目标加速卡内存获得回传数据,便不再需要使用加速卡内存,因此,生成内存回收通知信息并发送至服务端,以供服务端回收加速卡内存,提高了加速卡内存的使用率,减少了用户端等待分配加速卡内存的时间,也进一步提高了异构计算系统的计算效率。
现结合图5对本申请提供的一种内存管理方法和一种内存使用方法进行如下说明:
从CPU和FPGA加速卡的层面来看,CPU与FPGA之间的数据交互过程如下:
CPU的客户端应用程序(即用户端应用程序)通过调用OPENCL(开放运算语言,OpenComputing Language)的接口,能够实现CPU DDR(双倍速率,Double Data Rate,通常表示存储器)与加速卡DDR之间的数据交互。更具体地,OPENCL通过底层的驱动程序(即服务进程)分配FPGA加速卡内存,并建立CPU内存与加速卡内存之间的映射关系,再与FPGA的DMA(直接存储器访问,Direct Memory Access)通过PCIe(高速串行计算机扩展总线标准,Peripheral Component Interconnect Express)总线实现CPU DDR与加速卡DDR之间的数据交互。加速卡核(即加速Kernel,Kernel为核)则通过AXI(一种总线协议,AdvancedeXtensible Interface)接口从加速卡DDR中获取待处理数据对其进行处理,待生成回传数据之后再通过AXI接口将回传数据传输至加速卡DDR中,CPU再与FPGA的DMA通过PCIe总线获取回传数据,以完成整个数据交互过程。
现结合图3对本申请提供的一种内存管理方法和一种内存使用方法进行如下说明:
本申请提供的一种内存管理方法和一种内存使用方法的执行主体都是CPU,只是“一种内存管理方法”是由CPU中的服务进程执行的,“一种内存使用方法”是由CPU中的用户进程执行的。
先对用户端(即用户进程)进行说明:用户进程向服务端(即service)申请加速卡内存,当服务端的内存池中没有空闲的加速卡内存时,则申请不成功,需要持续等待;当服务端的内存池中有空闲的加速卡内存时,则申请成功,此时用户进程则从主机端(即CPU内存中)中传输数据至申请的加速卡内存中,等待FPGA加速核对加速卡内存中的数据进行处理并将回传数据返回至加速卡内存中;用户进程从加速卡内存中获取回传数据之后,则通知服务端将加速卡内存回收。
再对服务端(即服务进程)进行说明:服务进程先一次性申请N块加速卡内存到内存池中,当没有用户进程申请加速卡内存时,则进入等待状态;当有用户进程申请加速卡内存时,则判断内存池中是否存在空闲的加速卡内存,当存在空闲的加速卡内存时,则分配给用户进程使用;并实时监控是否有用户进程释放加速卡内存,当有用户进程释放加速卡内存时,则对其进行回收;实时监控各个用户进程使用加速卡内存的使用时长,当使用时长超过预设时长时,便将对应的加速卡内存进行回收;回收后的加速卡内存都放置在内存池中,以供后续的用户进程调用。
基于同一发明构思,本申请提供了如图6所示的一种内存管理装置,装置包括:
构建模块61,用于从多块加速卡内存中申请预设数量的加速卡内存,并基于预设数量的加速卡内存构建内存池;
目标内存申请请求接收模块62,用于接收多个用户端中的目标用户端发送的内存申请请求;
目标加速卡内存选择模块63,用于从内存池中选择至少一块空闲的加速卡内存作为目标加速卡内存,将目标加速卡内存分配给目标用户端,并将目标加速卡内存从内存池中释放;
映射关系建立模块64,用于建立目标加速卡内存与目标CPU内存之间的映射关系,目标CPU内存与目标用户端对应,使得CPU与FPGA依赖于映射关系完成数据交互。
更优地,装置还包括:
内存回收通知信息接收模块,用于接收目标用户端发送的内存回收通知信息;
第一回收模块,用于根据内存回收通知信息,将目标加速卡内存回收至内存池中。
更优地,装置还包括:
监控模块,用于监控目标用户端使用目标加速卡内存的使用时长;
第二回收模块,用于当使用时长超过预设时长时,将目标加速卡内存回收至内存池中。
更优地,目标内存申请请求接收模块62具体包括:
接收子模块,用于接收多个用户端中任意数量的用户端发送的内存申请请求;
目标用户端确定子模块,用于按照任意数量的用户端发送内存申请请求的时间先后顺序,将任意数量的用户端依次作为目标用户端,并为目标用户端分配目标加速卡内存。
基于同一发明构思,本申请提供了如图7所示的一种内存使用装置,装置包括:
内存申请请求生成模块71,用于根据用户需求生成内存申请请求,并将内存申请请求发送至服务端,以申请目标加速卡内存;目标加速卡内存是从内存池中选择的;内存池是基于FPGA对应的多块加速卡内存中预设数量的加速卡内存构建的;
第一发送模块72,用于当成功申请目标加速卡内存时,将用户端对应的目标CPU内存中的待处理数据发送至目标加速卡内存中,以供FPGA对待处理数据进行处理生成回传数据,并将回传数据存储在目标加速卡内存中;
第二发送模块73,用于从目标加速卡内存中获取回传数据,并向服务端发送内存回收通知信息,使得服务端将目标加速卡内存回收至内存池中。
更优地,装置还包括:
等待模块,用于当无法成功申请目标加速卡内存时,进入等待状态,直到成功申请目标加速卡内存。
基于同一发明构思,本申请提供了如图8所示的一种电子设备,包括:
处理器81;
用于存储处理器81可执行指令的存储器82;
其中,处理器81被配置为执行以实现一种内存管理方法和一种内存使用方法。
基于同一发明构思,本申请提供了一种非临时性计算机可读存储介质,当存储介质中的指令由电子设备的处理器81执行时,使得电子设备能够执行实现一种内存管理方法和一种内存使用方法。
由于本实施例所介绍的电子设备为实施本申请实施例中信息处理的方法所采用的电子设备,故而基于本申请实施例中所介绍的信息处理的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中信息处理的方法所采用的电子设备,都属于本申请所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种内存管理方法,其特征在于,应用于异构计算系统,所述异构计算系统包括CPU以及与所述CPU通信的FPGA,所述CPU对应有CPU内存,所述FPGA对应有多块加速卡内存;所述方法包括:
从所述多块加速卡内存中申请预设数量的加速卡内存,并基于所述预设数量的加速卡内存构建内存池;
接收多个用户端中的目标用户端发送的内存申请请求;
从所述内存池中选择至少一块空闲的所述加速卡内存作为目标加速卡内存,将所述目标加速卡内存分配给所述目标用户端,并将所述目标加速卡内存从所述内存池中释放;
建立所述目标加速卡内存与目标CPU内存之间的映射关系,所述目标CPU内存与所述目标用户端对应,使得所述CPU与所述FPGA依赖于所述映射关系完成数据交互。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述目标用户端发送的内存回收通知信息;
根据所述内存回收通知信息,将所述目标加速卡内存回收至所述内存池中。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
监控所述目标用户端使用所述目标加速卡内存的使用时长;
当所述使用时长超过预设时长时,将所述目标加速卡内存回收至所述内存池中。
4.如权利要求1所述的方法,其特征在于,接收多个用户端中的目标用户端发送的内存申请请求,具体包括:
接收所述多个用户端中任意数量的用户端发送的内存申请请求;
按照所述任意数量的用户端发送所述内存申请请求的时间先后顺序,将所述任意数量的用户端依次作为所述目标用户端,并为所述目标用户端分配所述目标加速卡内存。
5.一种内存使用方法,其特征在于,应用于异构计算系统,所述异构计算系统包括CPU以及与所述CPU通信的FPGA,所述CPU对应有CPU内存,所述FPGA对应有多块加速卡内存;所述方法包括:
根据用户需求生成内存申请请求,并将所述内存申请请求发送至服务端,以申请目标加速卡内存;所述目标加速卡内存是从内存池中选择的;所述内存池是基于所述FPGA对应的多块加速卡内存中预设数量的加速卡内存构建的;
当成功申请所述目标加速卡内存时,将用户端对应的目标CPU内存中的待处理数据发送至所述目标加速卡内存中,以供所述FPGA对所述待处理数据进行处理生成回传数据,并将所述回传数据存储在所述目标加速卡内存中;
从所述目标加速卡内存中获取所述回传数据,并向所述服务端发送内存回收通知信息,使得所述服务端将所述目标加速卡内存回收至所述内存池中。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
当无法成功申请所述目标加速卡内存时,进入等待状态,直到成功申请所述目标加速卡内存。
7.一种内存管理装置,其特征在于,所述装置包括:
构建模块,用于从多块加速卡内存中申请预设数量的加速卡内存,并基于所述预设数量的加速卡内存构建内存池;
目标内存申请请求接收模块,用于接收多个用户端中的目标用户端发送的内存申请请求;
目标加速卡内存选择模块,用于从所述内存池中选择至少一块空闲的所述加速卡内存作为目标加速卡内存,将所述目标加速卡内存分配给所述目标用户端,并将所述目标加速卡内存从所述内存池中释放;
映射关系建立模块,用于建立所述目标加速卡内存与目标CPU内存之间的映射关系,所述目标CPU内存与所述目标用户端对应,使得所述CPU与FPGA依赖于所述映射关系完成数据交互。
8.一种内存使用装置,其特征在于,所述装置包括:
内存申请请求生成模块,用于根据用户需求生成内存申请请求,并将所述内存申请请求发送至服务端,以申请目标加速卡内存;所述目标加速卡内存是从内存池中选择的;所述内存池是基于FPGA对应的多块加速卡内存中预设数量的加速卡内存构建的;
第一发送模块,用于当成功申请所述目标加速卡内存时,将用户端对应的目标CPU内存中的待处理数据发送至所述目标加速卡内存中,以供所述FPGA对所述待处理数据进行处理生成回传数据,并将所述回传数据存储在所述目标加速卡内存中;
第二发送模块,用于从所述目标加速卡内存中获取所述回传数据,并向所述服务端发送内存回收通知信息,使得所述服务端将所述目标加速卡内存回收至所述内存池中。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行以实现如权利要求1至6中任一项所述的方法。
10.一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行实现如权利要求1至6中任一项所述的方法。
CN202011223607.8A 2020-11-05 2020-11-05 一种内存管理和使用方法、装置、设备和介质 Active CN112286688B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011223607.8A CN112286688B (zh) 2020-11-05 2020-11-05 一种内存管理和使用方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011223607.8A CN112286688B (zh) 2020-11-05 2020-11-05 一种内存管理和使用方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN112286688A CN112286688A (zh) 2021-01-29
CN112286688B true CN112286688B (zh) 2024-01-05

Family

ID=74350432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011223607.8A Active CN112286688B (zh) 2020-11-05 2020-11-05 一种内存管理和使用方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN112286688B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626181B (zh) * 2021-06-30 2023-07-25 苏州浪潮智能科技有限公司 一种内存清理方法、装置、设备及可读存储介质
CN113905097B (zh) * 2021-09-26 2022-07-05 合肥申威睿思信息科技有限公司 一种数据传输方法和装置
CN113986133A (zh) * 2021-10-27 2022-01-28 北京达佳互联信息技术有限公司 数据处理方法、装置、数据存储系统及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239248A (zh) * 2014-09-16 2014-12-24 国家计算机网络与信息安全管理中心 Pci-e多缓冲区dma数据传输方法
CN106959893A (zh) * 2017-03-31 2017-07-18 联想(北京)有限公司 加速器、用于加速器的内存管理方法以及数据处理系统
CN107870879A (zh) * 2016-09-23 2018-04-03 中国移动通信有限公司研究院 一种数据搬移方法、加速器板卡、主机及数据搬移系统
CN110427273A (zh) * 2019-06-25 2019-11-08 平安科技(深圳)有限公司 内存调度方法、装置、设备及存储介质
CN110519090A (zh) * 2019-08-23 2019-11-29 苏州浪潮智能科技有限公司 一种fpga云平台的加速卡分配方法、系统及相关组件
CN110515727A (zh) * 2019-08-16 2019-11-29 苏州浪潮智能科技有限公司 一种fpga的内存空间操作方法及相关装置
CN110618871A (zh) * 2019-09-21 2019-12-27 苏州浪潮智能科技有限公司 一种fpga云平台加速资源的分配方法与系统
CN111046072A (zh) * 2019-11-29 2020-04-21 浪潮(北京)电子信息产业有限公司 一种数据查询方法、系统、异构计算加速平台及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558440B2 (en) * 2017-02-02 2020-02-11 Cisco Technology, Inc. Tightly integrated accelerator functions

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239248A (zh) * 2014-09-16 2014-12-24 国家计算机网络与信息安全管理中心 Pci-e多缓冲区dma数据传输方法
CN107870879A (zh) * 2016-09-23 2018-04-03 中国移动通信有限公司研究院 一种数据搬移方法、加速器板卡、主机及数据搬移系统
CN106959893A (zh) * 2017-03-31 2017-07-18 联想(北京)有限公司 加速器、用于加速器的内存管理方法以及数据处理系统
CN110427273A (zh) * 2019-06-25 2019-11-08 平安科技(深圳)有限公司 内存调度方法、装置、设备及存储介质
CN110515727A (zh) * 2019-08-16 2019-11-29 苏州浪潮智能科技有限公司 一种fpga的内存空间操作方法及相关装置
CN110519090A (zh) * 2019-08-23 2019-11-29 苏州浪潮智能科技有限公司 一种fpga云平台的加速卡分配方法、系统及相关组件
CN110618871A (zh) * 2019-09-21 2019-12-27 苏州浪潮智能科技有限公司 一种fpga云平台加速资源的分配方法与系统
CN111046072A (zh) * 2019-11-29 2020-04-21 浪潮(北京)电子信息产业有限公司 一种数据查询方法、系统、异构计算加速平台及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向国产CPU的可重构计算系统设计及性能探究;彭福来;于治楼;陈乃阔;耿士华;李凯一;;计算机工程与应用(23);全文 *

Also Published As

Publication number Publication date
CN112286688A (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
CN112286688B (zh) 一种内存管理和使用方法、装置、设备和介质
CN107086908B (zh) 一种量子密钥分发方法及装置
CN109729106B (zh) 处理计算任务的方法、系统和计算机程序产品
CN108055311B (zh) Http异步请求方法、装置、服务器、终端和存储介质
CN106897299B (zh) 一种数据库访问方法及装置
JP2015532073A (ja) 使用要求の小バッチ処理のためのシステムおよび方法
CN112905342B (zh) 资源调度方法、装置、设备及计算机可读存储介质
WO2021159831A1 (zh) 编程平台的用户代码运行方法及平台、节点、设备、介质
US10970105B2 (en) Storage device operation method and physical server
CN109416646B (zh) 一种容器分配的优化方法及处理设备
US8458702B1 (en) Method for implementing user space up-calls on java virtual machine before/after garbage collection
WO2017185615A1 (zh) 一种业务处理设备的业务状态确定方法及调度设备
CN112087332A (zh) 一种云边协同下的虚拟网络性能优化系统
CN115237589A (zh) 一种基于sr-iov的虚拟化方法、装置和设备
CN111586140A (zh) 一种数据交互的方法及服务器
CN104158860A (zh) 一种作业调度方法及作业调度系统
CN113905091A (zh) 用于对访问请求进行处理的方法及装置
CN111835809B (zh) 工单消息分配方法、装置、服务器及存储介质
CN107634978B (zh) 一种资源调度方法及装置
CN105550025A (zh) 分布式基础设施即服务(IaaS)调度方法及系统
CN115904740B (zh) 一种gpu资源调用方法及系统
CN107045452B (zh) 虚拟机调度方法和装置
CN111858035A (zh) 一种fpga设备分配方法、装置、设备及存储介质
CN110955461A (zh) 计算任务的处理方法、装置、系统、服务器和存储介质
CN112637201B (zh) 一种web服务端的请求处理方法、装置、设备及系统

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