发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的基于智能加速卡的数据处理方法、一种基于智能加速卡的数据处理装置、操作系统、智能加速卡。
依据本申请的一个方面,提供了一种基于智能加速卡的数据处理方法,所述智能加速卡上配置有提供计算资源的一种或多种加速芯片以及操作系统,所述操作系统中至少划分出控制计算资源的内核和运行应用程序的用户空间,所述计算资源在所述用户空间中映射有多个容器;所述方法包括:
所述内核从用户空间获取应用程序的数据处理请求,并确定与所述数据处理请求匹配的计算资源的资源分配信息;
所述用户空间基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
可选的,所述内核从用户空间获取应用程序的数据处理请求包括:
劫持内核中通用并行计算架构的驱动接口,获取从所述用户空间发送至内核的数据处理请求。
可选的,所述确定与所述数据处理请求匹配的计算资源的资源分配信息包括:
从所述一种或多种加速芯片提供的计算资源中,确定与所述数据处理请求匹配的资源种类、资源切分比例以及资源占用时间中的一种或多种。
可选的,所述确定与所述数据处理请求匹配的计算资源的资源分配信息包括:
根据计算资源标记的资源占用时间,从可用的计算资源中确定与所述数据处理请求匹配的计算资源的资源分配信息。
可选的,在所述确定与所述数据处理请求匹配的计算资源的资源分配信息之后,所述方法还包括:
所述用户空间查找所述应用程序对应的资源购买方的资源购买信息;
若所述资源分配信息超出所述资源购买信息对应的范围,则提示资源无法使用。
可选的,所述方法还包括:
所述用户空间基于配置接口获取所述应用程序对应的资源购买方的资源购买信息;
基于所述资源购买信息对与所述资源购买方对应的容器进行参数配置,所述容器参数包括计算资源的资源种类、资源切分比例。
可选的,所述方法还包括:
所述用户空间对所述计算资源在所述用户空间中映射的多个容器进行管理,包括容器创建、容器启动、容器停止、容器任务转移中至少一种。
可选的,所述方法还包括:
在资源占用时间结束后,将占用的计算资源释放,以用于其他数据处理请求的处理。
可选的,所述确定与所述数据处理请求匹配的计算资源的资源分配信息包括:
根据数据处理请求所来源的应用程序、所述运行程序运行的人工智能模型、对应的处理操作类型、预估的本次计算量、处理对象中的一种或多种,确定与所述数据处理请求匹配的计算资源的资源分配信息。
依据本申请的另一个方面,还提供了一种基于智能加速卡的数据处理装置,包括:
请求获取模块,用于通过所述内核从用户空间获取应用程序的数据处理请求;
资源分配获取模块,用于确定与所述数据处理请求匹配的计算资源的资源分配信息;
请求处理模块,用于通过所述用户空间基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
依据本申请的另一个方面,还提供了一种操作系统,部署于智能加速卡,所述智能加速卡上配置有提供计算资源的一种或多种加速芯片,所述操作系统中至少划分出控制计算资源的内核和运行应用程序的用户空间,所述计算资源在所述用户空间中映射有多个容器;
所述内核,用于从用户空间获取所述应用程序的数据处理请求,并确定与所述数据处理请求匹配的计算资源的资源分配信息;
所述用户空间,用于基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
依据本申请的另一个方面,还提供了一种智能加速卡,所述智能加速卡上配置有提供计算资源的一种或多种加速芯片以及操作系统,所述操作系统中至少划分出控制计算资源的内核和运行应用程序的用户空间,所述计算资源在所述用户空间中映射有多个容器;
所述内核,用于从用户空间获取应用程序的数据处理请求,并确定与所述数据处理请求匹配的计算资源的资源分配信息;
所述用户空间,用于基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
依据本申请实施例,在智能加速卡上配置有计算资源和操作系统,操作系统至少划分出内核和用户空间,分别用于控制计算资源和运行应用程序,将智能加速卡的物理硬件提供的计算资源在用户空间中映射有多个容器,应用程序对计算资源的调用可以在容器中实现,从而隔离应用程序之间的运行,避免互相干扰。
应用程序对计算资源的调用过程中,用户空间的应用程序发出的数据处理请求后,由内核劫持该数据处理请求并确定与该数据处理请求匹配的计算资源的资源分配信息,可以更好地对计算资源进行分配,实现资源调度与管理,提升资源的利用率,用户空间基于该资源分配信息可以进一步调用对应的计算资源执行与数据处理请求对应的数据处理操作。
并且,由于数据处理请求的劫持和资源分配在内核完成,与用户空间隔离,可以减少对用户空间的入侵和干扰。
上述对计算资源的调用可以部署在云端,向多个资源需求方提供了面向云原生的计算服务,做到了算力上云以及程序运行的内存和算力的隔离。由于可以根据数据处理请求从面向多个资源购买方提供计算资源的智能加速卡中配置所需的计算资源,相比于自行购买智能加速卡的方案,提高了资源需求方可调配的计算资源的上限,可以实现高扩展、超大规模的弹性计算,可以很好地适用于对计算资源需求较高的应用场景。
在占用计算资源时,确定计算资源的占用时间,便于占用时间结束后将该计算资源分配给其他处理请求,从而可以提高计算资源的利用率,充分利用计算资源增加营收。
其中,计算资源可以切分为细粒度进行搭配使用,使得多个容器可以共享同一物理硬件,从而可以实现更细粒度的资源使用和更精细化的资源管理。还可以在用户空间向资源购买方提供配置接口,并根据该配置接口获取的资源购买信息对容器进行参数配置,实现资源购买方对容器的配置管理。
此外,本申请实施例中,还可以在用户空间进行容器创建、容器启动、容器停止、容器任务转移等,从而可以更灵活实现对多个容器的调配管理。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
人工智能的发展对部署的计算资源提出了很高的要求,以模型的运行为例,无论是模型的训练还是模型的后续使用都需要较高的计算资源的配置,从而对智能加速卡的使用提出了较高的要求,传统的自行购买智能加速卡的方式具有较高的局限性。
现有技术中,基于云端提供计算资源的方案通常是基于虚拟机技术实现,在智能加速卡中安装计算服务软件(NVIDIA vCompute Server),通过将智能加速卡划分为多个虚拟机实例,然后在不同虚拟机实例中运行应用程序。该方案存在的问题是,由于每个虚拟机实例中均虚拟出整个操作系统,虚拟机实例占用的空间较大,启动较慢。在虚拟机启动后,其分配的计算资源就不可以更改了,针对不同处理请求,其对应配置的计算资源是固定的,并且,通过虚拟机调用计算资源时,是对计算资源对应的某个物理硬件的整体调用,上述问题均会造成闲置资源的浪费。
针对背景技术以及上述方案存在的问题,本申请实施例提供了一种新的基于智能加速卡的数据处理方法。在智能加速卡上配置有提供计算资源的一种或多种加速芯片以及操作系统,同类加速芯片可以包括一个或多个,相当于提供了一个资源池。其中,加速芯片具体可以是图形处理器GPU(Graphics Processing Unit)、现场可编程门阵列FPGA(FieldProgrammable Gate Array)或专用集成电路ASIC(Application-specific integratedcircuit),因此,智能加速卡可以是异构加速卡,使用性能、结构各异的物理硬件以满足不同的计算需求,在多种计算资源上实现并行计算,提高计算性能和计算效率。
需要说明的是,本申请实施例所采用的物理硬件并不局限于上述几种,任意可用的物理硬件均可应用于本申请实施例的方案,例如APU(Accelerated Processing Unit,加速处理器)。还可以根据需求配置一个或多个智能加速卡应用于本申请的数据处理过程,原理与单张智能加速卡类似,本申请对此并不做限制。
操作系统可以是Linux系统,其体系架构中至少划分出内核和用户空间(或者称之为内核态和用户态),用户态为上层应用程序提供活动空间,在其中运行应用程序。内核用于控制计算机的物理硬件,基于该物理硬件向上层应用程序调用计算资源,还可以为应用程序的执行提供存储资源、I/O资源等。在一种宏内核架构下,内核中可以配置有时钟管理、中断处理、原语等基础组件,以及进程管理、存储器管理、设备管理、文件系统、网络协议等非基础组件,在另一种微内核架构下,内核中可以配置有上述基础组件,用户空间中可以配置上述非基础组件。为实现用户空间与内核之间的数据通信,可以在内核提供访问接口,用户空间通过操作系统调用该接口,以访问内核的计算资源。
本申请实施例中,物理硬件可以部署在云端,资源需求方(例如学校、企业、医院、研究机构等)可以通过购买计算资源来获得对计算资源的调用权限,向多个资源需求方提供了面向云原生的计算服务。通过这种运行模式做到了算力上云以及程序运行的内存和算力的隔离。由于可以根据数据处理请求从面向多个资源购买方提供计算资源的智能加速卡中配置所需的计算资源,相比于自行购买智能加速卡的方案,提高了资源需求方可调配的计算资源的上限,可以实现高扩展、超大规模的弹性计算,可以很好地适用于人工智能等对计算资源需求较高的应用场景。
本申请实施例中,智能加速卡的物理硬件在用户空间中映射有多个容器(Docker),应用程序对计算资源的调用可以在容器中实现,容器之间互相独立,从而隔离应用程序之间的运行,避免互相干扰。相比于现有方案中使用的虚拟机技术,本申请在用户空间映射的容器不需要虚拟出整个操作系统,只需要虚拟一个小规模的类似沙箱的环境,占用空间更小,启动很快。
本申请实施例中,资源需求方购买的计算资源可以配置在容器中,本申请实施例中,支持对物理硬件提供的计算资源进行切分,也即是,容器可以使用整块物理硬件的全部资源,也可以使用物理硬件的部分资源,从而可以实现硬件资源的拆分使用以及多个容器对同一块物理硬件的资源共享,给资源分配带来了很大的灵活性,例如,将一块GPU拆分出45%的分区配置给某个容器。
计算资源可以切分为细粒度进行搭配使用,使得多个容器可以共享同一物理硬件,从而可以实现更细粒度的资源使用和更精细化的资源管理。还可以在用户空间向资源购买方提供配置接口,并根据该配置接口获取的资源购买信息对容器进行参数配置,实现资源购买方对容器的配置管理。
相应的,资源购买方的应用程序存在计算需求时,可以在购买的计算资源的范围内对应用程序的数据处理请求进行资源分配,避免计算资源的使用浪费。应用程序对计算资源的调用过程中,运行在用户空间的应用程序发出的数据处理请求后,由内核劫持该数据处理请求并确定与该数据处理请求匹配的计算资源的资源分配信息,可以更好地对计算资源进行分配,实现资源调度与管理,提升资源的利用率,用户空间基于该资源分配信息可以进一步调用对应的计算资源执行与数据处理请求对应的数据处理操作。相比于虚拟机方案,可以针对单次数据处理请求分配相应的计算资源,避免了闲置资源的浪费。
由于数据处理请求的劫持和资源分配在内核完成,与用户空间隔离,还可以减少对用户空间的入侵和干扰。
本申请实施例中,物理硬件的分区还可以根据当次的数据处理请求动态调整大小,例如某资源需求方购买了1/2GPU的计算资源,针对某次数据处理请求可以对应分配1/10GPU用于计算。
上述确定与数据处理请求匹配的计算资源的资源分配信息时,可以从一种或多种加速芯片提供的计算资源中,确定与数据处理请求匹配的资源种类、资源切分比例以及资源占用时间中的一种或多种。其中,资源种类也即是资源标识,比如GPU、FPGA或ASIC,资源切分比例也即是资源占用量,可以采用比例值、百分比或是资源数量等任意可用形式,例如,1/2GPU、45%GPU、1/5FPGA或2ASIC。
资源分配信息还可以包括资源占用时间,在资源占用时间结束后,则可以将占用的计算资源释放,以用于其他数据处理请求的处理,相比于固定占用计算资源的方式,本申请实施例可以充分利用计算资源增加营收,实现资源“超卖”。
相应的,在确定与数据处理请求匹配的计算资源的资源分配信息时,可以根据计算资源标记的资源占用时间,从可用的计算资源中确定与数据处理请求匹配的计算资源的资源分配信息,也即是根据资源占用时间,从未被占用的计算资源中进行资源分配。
确定与数据处理请求匹配的计算资源的资源分配信息时,可以根据数据处理请求的相关信息进行资源分配,例如根据数据处理请求所来源的应用程序、运行程序运行的人工智能模型、对应的处理操作类型、预估的本次计算量、处理对象等一种或多种相关信息,确定与所述数据处理请求匹配的计算资源的资源分配信息,可以预先设置上述各种信息内容或数值范围与资源分配信息的对应关系或是计算公式等。例如,针对资源消耗较高的图像识别模型分配较高的资源切分比例,分配更适用于图像处理的GPU计算资源。
一种可选的实施例中,针对加速卡为异构加速卡的情况,内核从用户空间获取应用程序的数据处理请求时,可以劫持内核中通用并行计算架构的驱动接口(CUDA接口),获取从所述用户空间发送至内核的数据处理请求,无需创建新的驱动来监测数据处理请求,操作简单方便。
资源需求方可以调用的资源可以受到所购买的资源的限制,若当前的数据处理请求所需的计算资源超出了资源需求方购买的资源范围,则可以直接拒绝本次请求。具体的,可以在确定与所述数据处理请求匹配的计算资源的资源分配信息之后,通过用户空间查找应用程序对应的资源购买方的资源购买信息;若资源分配信息超出资源购买信息对应的范围,则提示资源无法使用。
本申请实施例中,上述容器可以在资源需求方购买计算资源后配置给该资源需求方,还可以在用户空间提供配置接口,资源购买方可以基于相应的资源购买页面进行资源购买操作,进而实现基于购买的资源对容器进行配置的目的。具体而言,基于用户空间的配置接口获取应用程序对应的资源购买方的资源购买信息,例如资源购买页面可以提供计算资源与价格的对应数据,可以具体是套餐形式,也可以是提供多项计算资源种类以及资源切分比例供用户选择。基于资源购买信息对与资源购买方对应的容器进行参数配置,容器参数包括计算资源的资源种类、资源切分比例,从而在后续有计算需求时,基于容器访问这些计算资源。
上述容器也可以在存在数据处理请求时,临时分配给该资源需求方,本申请对此并不做限制。
本申请实施例中,还可以在用户空间中,对所述计算资源在用户空间中映射的多个容器进行管理,包括容器创建、容器启动、容器停止、容器任务转移中至少一种。容器创建可以是基于资源购买方的请求创建,或是在此之前创建容器,容器启动可以在接收到数据处理请求后需要在某个容器中处理,则可以分配至该容器中,容器停止可以是在需要进行容器维护管理时使用,容器任务转移也可以针对需要容器维护的情况,可以将容器中执行的任务转移到另一台服务器而不中断任务的执行,适用于需要较长时间执行的任务。上述可以更灵活实现对多个容器的调配管理。
上述对容器的管理还可以基于Kubernetes(K8S)容器管理技术实现,将Kubernetes对应的管理架构部署在用户空间,使得部署容器化的应用简单并且高效。具体而言,可以在用户空间包括负责管理和控制集群节点的Master主节点,以及被管理的Node工作节点,Node节点上运行Kubernetes的最小管理单位Pod容器组,每个Pod中包括多个被管理的容器,Master节点可以通过服务接口去调用各个进程来完成对Node的部署和控制。
图1示出了本申请的一种基于智能加速卡的数据处理方法的一个示例。
云端部署有一个或多个智能加速卡,智能加速卡中部署有操作系统和物理硬件XPU,可以是GPU、FPGA、ASIC等等,物理硬件用于提供计算资源,如图所示部署已有n个XPU(Device 1……Device n),每个XPU均可是包括多个XPU的物理硬件的组合,例如,Device 1由8个裸金属实例构成。每个XPU组合均可以进一步分组或是按比例切分,比如Device 1通过分组和切分得到1/4XPU、1/2XPU、1XPU、2XPU。
智能加速卡的操作系统中至少划分出用户空间和内核,内核图中运行有物理硬件对应的驱动,如图所示的XPU1 Driver……XPUn Driver,用于控制物理硬件的计算资源,通过资源分配组件(vXPUhyperviser server)任务调度器劫持用户空间的数据处理请求,并通过资源分配器为数据处理请求分配资源。
用户空间中运行有计算资源映射的多个容器(vXPU container),如图所示的Container1……Container1n。每个容器对应配置有对应的硬件资源,如图Container1对应配置1/8XPU,Container2对应配置1/4XPU,Container4对应配置1XPU,配置功能可以基于容器配置组件实现(vXPU container runtime)。还可以对多个容器进行管理,如图可以基于K8S容器管理组件(K8S+XPU Share Scheduler)实现,通过部署Pod容器组来管理容器,如图中各容器分别有对应的Pod容器组来进行管理。
学校、企业、医院等机构在进行人工智能的研究时,部署有人工智能模型,其运算和预测过程对计算资源提出了较高的需求,通过购买云端的计算资源可以解决自行部署的各种问题。在购买计算资源后,基于用户空间的容器配置组件对容器进行配置,在之后训练人工智能模型或是运行人工智能模型时,可以向用户空间发出数据处理请求,内核劫持到该请求后,进行计算资源的分配,确定与数据处理请求匹配的计算资源的资源种类、资源划分比例和资源占用时间等信息,将该资源分配信息传递至用户空间,由用户空间根据该资源分配信息调用物理硬件的计算资源,在预先对应配置的容器中执行该数据处理请求对应的数据处理操作,并将数据处理结果返回给人工智能模型。
参照图2,示出了根据本申请实施例一的一种基于智能加速卡的数据处理方法的流程图,所述智能加速卡上配置有提供计算资源的一种或多种加速芯片以及操作系统,所述操作系统中至少划分出控制计算资源的内核和运行应用程序的用户空间,所述计算资源在所述用户空间中映射有多个容器;所述方法包括:
步骤101,所述内核从用户空间获取应用程序的数据处理请求,并确定与所述数据处理请求匹配的计算资源的资源分配信息;
步骤102,所述用户空间基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
一种可选的实施例中,所述加速芯片包括图形处理器、现场可编程门阵列或专用集成电路。
一种可选的实施例中,所述内核从用户空间获取应用程序的数据处理请求包括:
劫持内核中通用并行计算架构的驱动接口,获取从所述用户空间发送至内核的数据处理请求。
一种可选的实施例中,所述确定与所述数据处理请求匹配的计算资源的资源分配信息包括:
从所述一种或多种加速芯片提供的计算资源中,确定与所述数据处理请求匹配的资源种类、资源切分比例以及资源占用时间中的一种或多种。
一种可选的实施例中,所述确定与所述数据处理请求匹配的计算资源的资源分配信息包括:
根据计算资源标记的资源占用时间,从可用的计算资源中确定与所述数据处理请求匹配的计算资源的资源分配信息。
依据本申请实施例,在智能加速卡上配置有计算资源和操作系统,操作系统至少划分出内核和用户空间,分别用于控制计算资源和运行应用程序,将智能加速卡的物理硬件提供的计算资源在用户空间中映射有多个容器,应用程序对计算资源的调用可以在容器中实现,从而隔离应用程序之间的运行,避免互相干扰。
应用程序对计算资源的调用过程中,用户空间的应用程序发出的数据处理请求后,由内核劫持该数据处理请求并确定与该数据处理请求匹配的计算资源的资源分配信息,可以更好地对计算资源进行分配,实现资源调度与管理,提升资源的利用率,用户空间基于该资源分配信息可以进一步调用对应的计算资源执行与数据处理请求对应的数据处理操作。
并且,由于数据处理请求的劫持和资源分配在内核完成,与用户空间隔离,可以减少对用户空间的入侵和干扰。
上述对计算资源的调用可以部署在云端,向多个资源需求方提供了面向云原生的计算服务,做到了算力上云以及程序运行的内存和算力的隔离。由于可以根据数据处理请求从面向多个资源购买方提供计算资源的智能加速卡中配置所需的计算资源,相比于自行购买智能加速卡的方案,提高了资源需求方可调配的计算资源的上限,可以实现高扩展、超大规模的弹性计算,可以很好地适用于对计算资源需求较高的应用场景。
参照图3,示出了根据本申请实施例二的一种基于智能加速卡的数据处理方法的流程图,所述智能加速卡上配置有提供计算资源的一种或多种加速芯片以及操作系统,所述操作系统中至少划分出控制计算资源的内核和运行应用程序的用户空间,所述计算资源在所述用户空间中映射有多个容器;所述方法包括:
步骤201,所述用户空间基于配置接口获取所述应用程序对应的资源购买方的资源购买信息;
步骤202,基于所述资源购买信息对与所述资源购买方对应的容器进行参数配置,所述容器参数包括计算资源的资源种类、资源切分比例。
步骤203,所述内核从用户空间获取应用程序的数据处理请求,并确定与所述数据处理请求匹配的计算资源的资源分配信息;
步骤204,所述用户空间查找所述应用程序对应的资源购买方的资源购买信息;
步骤205,若所述资源分配信息超出所述资源购买信息对应的范围,则提示资源无法使用。
步骤206,所述用户空间基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
步骤207,所述用户空间对所述计算资源在所述用户空间中映射的多个容器进行管理,包括容器创建、容器启动、容器停止、容器任务转移中至少一种。
依据本申请实施例,在智能加速卡上配置有计算资源和操作系统,操作系统至少划分出内核和用户空间,分别用于控制计算资源和运行应用程序,将智能加速卡的物理硬件提供的计算资源在用户空间中映射有多个容器,应用程序对计算资源的调用可以在容器中实现,从而隔离应用程序之间的运行,避免互相干扰。
应用程序对计算资源的调用过程中,用户空间的应用程序发出的数据处理请求后,由内核劫持该数据处理请求并确定与该数据处理请求匹配的计算资源的资源分配信息,可以更好地对计算资源进行分配,实现资源调度与管理,提升资源的利用率,用户空间基于该资源分配信息可以进一步调用对应的计算资源执行与数据处理请求对应的数据处理操作。
并且,由于数据处理请求的劫持和资源分配在内核完成,与用户空间隔离,可以减少对用户空间的入侵和干扰。
上述对计算资源的调用可以部署在云端,向多个资源需求方提供了面向云原生的计算服务,做到了算力上云以及程序运行的内存和算力的隔离。由于可以根据数据处理请求从面向多个资源购买方提供计算资源的智能加速卡中配置所需的计算资源,相比于自行购买智能加速卡的方案,提高了资源需求方可调配的计算资源的上限,可以实现高扩展、超大规模的弹性计算,可以很好地适用于对计算资源需求较高的应用场景。
在占用计算资源时,确定计算资源的占用时间,便于占用时间结束后将该计算资源分配给其他处理请求,从而可以提高计算资源的利用率,充分利用计算资源增加营收。
其中,计算资源可以切分为细粒度进行搭配使用,使得多个容器可以共享同一物理硬件,从而可以实现更细粒度的资源使用和更精细化的资源管理。还可以在用户空间向资源购买方提供配置接口,并根据该配置接口获取的资源购买信息对容器进行参数配置,实现资源购买方对容器的配置管理。
并且,本申请实施例中,还可以在用户空间进行容器创建、容器启动、容器停止、容器任务转移等,从而可以更灵活实现对多个容器的调配管理。
参照图4,示出了根据本申请实施例三的一种操作系统的结构框图,一种操作系统3,部署于智能加速卡,所述智能加速卡上配置有提供计算资源的一种或多种加速芯片,所述操作系统中至少划分出控制计算资源的内核31和运行应用程序的用户空间32,所述计算资源在所述用户空间中映射有多个容器321;
所述内核,用于从用户空间获取所述应用程序的数据处理请求,并确定与所述数据处理请求匹配的计算资源的资源分配信息;
所述用户空间,用于基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
依据本申请实施例,在智能加速卡上配置有计算资源和操作系统,操作系统至少划分出内核和用户空间,分别用于控制计算资源和运行应用程序,将智能加速卡的物理硬件提供的计算资源在用户空间中映射有多个容器,应用程序对计算资源的调用可以在容器中实现,从而隔离应用程序之间的运行,避免互相干扰。
应用程序对计算资源的调用过程中,用户空间的应用程序发出的数据处理请求后,由内核劫持该数据处理请求并确定与该数据处理请求匹配的计算资源的资源分配信息,可以更好地对计算资源进行分配,实现资源调度与管理,提升资源的利用率,用户空间基于该资源分配信息可以进一步调用对应的计算资源执行与数据处理请求对应的数据处理操作。
并且,由于数据处理请求的劫持和资源分配在内核完成,与用户空间隔离,可以减少对用户空间的入侵和干扰。
上述对计算资源的调用可以部署在云端,向多个资源需求方提供了面向云原生的计算服务,做到了算力上云以及程序运行的内存和算力的隔离。由于可以根据数据处理请求从面向多个资源购买方提供计算资源的智能加速卡中配置所需的计算资源,相比于自行购买智能加速卡的方案,提高了资源需求方可调配的计算资源的上限,可以实现高扩展、超大规模的弹性计算,可以很好地适用于对计算资源需求较高的应用场景。
参照图5,示出了根据本申请实施例四的一种智能加速卡的结构框图,所述智能加速卡4配置有计算资源41以及操作系统42,所述操作系统42中至少划分出控制计算资源的内核421和运行应用程序的用户空间422,所述计算资源在所述用户空间中映射有多个容器4221;
所述内核421,用于从用户空间获取应用程序的数据处理请求,并确定与所述数据处理请求匹配的计算资源的资源分配信息;
所述用户空间422,用于基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
依据本申请实施例,在智能加速卡上配置有计算资源和操作系统,操作系统至少划分出内核和用户空间,分别用于控制计算资源和运行应用程序,将智能加速卡的物理硬件提供的计算资源在用户空间中映射有多个容器,应用程序对计算资源的调用可以在容器中实现,从而隔离应用程序之间的运行,避免互相干扰。
应用程序对计算资源的调用过程中,用户空间的应用程序发出的数据处理请求后,由内核劫持该数据处理请求并确定与该数据处理请求匹配的计算资源的资源分配信息,可以更好地对计算资源进行分配,实现资源调度与管理,提升资源的利用率,用户空间基于该资源分配信息可以进一步调用对应的计算资源执行与数据处理请求对应的数据处理操作。
并且,由于数据处理请求的劫持和资源分配在内核完成,与用户空间隔离,可以减少对用户空间的入侵和干扰。
上述对计算资源的调用可以部署在云端,向多个资源需求方提供了面向云原生的计算服务,做到了算力上云以及程序运行的内存和算力的隔离。由于可以根据数据处理请求从面向多个资源购买方提供计算资源的智能加速卡中配置所需的计算资源,相比于自行购买智能加速卡的方案,提高了资源需求方可调配的计算资源的上限,可以实现高扩展、超大规模的弹性计算,可以很好地适用于对计算资源需求较高的应用场景。
参照图6,示出了根据本申请实施例五的一种基于智能加速卡的数据处理装置的结构框图,所述智能加速卡上配置有提供计算资源的一种或多种加速芯片以及操作系统,所述操作系统中至少划分出控制计算资源的内核和运行应用程序的用户空间,所述计算资源在所述用户空间中映射有多个容器;所述装置包括:
请求获取模块501,用于通过所述内核从用户空间获取应用程序的数据处理请求;
资源分配获取模块502,用于确定与所述数据处理请求匹配的计算资源的资源分配信息;
请求处理模块503,用于通过所述用户空间基于确定的资源分配信息,在所述应用程序对应的容器中,调用计算资源执行与所述数据处理请求对应的数据处理操作。
本申请的一种可选的实施例中,所述加速芯片包括图形处理器、现场可编程门阵列或专用集成电路。
本申请的一种可选的实施例中,所述请求获取模块,具体用于劫持内核中通用并行计算架构的驱动接口,获取从所述用户空间发送至内核的数据处理请求。
本申请的一种可选的实施例中,所述资源分配模块,具体用于从所述一种或多种加速芯片提供的计算资源中,确定与所述数据处理请求匹配的资源种类、资源切分比例以及资源占用时间中的一种或多种。
本申请的一种可选的实施例中,所述资源分配模块,具体用于根据计算资源标记的资源占用时间,从可用的计算资源中确定与所述数据处理请求匹配的计算资源的资源分配信息。
本申请的一种可选的实施例中,所述装置还包括:
购买信息查找模块,用于在所述确定与所述数据处理请求匹配的计算资源的资源分配信息之后,通过所述用户空间查找所述应用程序对应的资源购买方的资源购买信息;
提示模块,用于若所述资源分配信息超出所述资源购买信息对应的范围,则提示资源无法使用。
本申请的一种可选的实施例中,所述装置还包括:
购买信息获取模块,用于通过所述用户空间基于配置接口获取所述应用程序对应的资源购买方的资源购买信息;
容器配置模块,用于基于所述资源购买信息对与所述资源购买方对应的容器进行参数配置,所述容器参数包括计算资源的资源种类、资源切分比例。
本申请的一种可选的实施例中,所述装置还包括:
容器管理模块,用于通过所述用户空间对所述计算资源在所述用户空间中映射的多个容器进行管理,包括容器创建、容器启动、容器停止、容器任务转移中至少一种。
依据本申请实施例,在智能加速卡上配置有计算资源和操作系统,操作系统至少划分出内核和用户空间,分别用于控制计算资源和运行应用程序,将智能加速卡的物理硬件提供的计算资源在用户空间中映射有多个容器,应用程序对计算资源的调用可以在容器中实现,从而隔离应用程序之间的运行,避免互相干扰。
应用程序对计算资源的调用过程中,用户空间的应用程序发出的数据处理请求后,由内核劫持该数据处理请求并确定与该数据处理请求匹配的计算资源的资源分配信息,可以更好地对计算资源进行分配,实现资源调度与管理,提升资源的利用率,用户空间基于该资源分配信息可以进一步调用对应的计算资源执行与数据处理请求对应的数据处理操作。
并且,由于数据处理请求的劫持和资源分配在内核完成,与用户空间隔离,可以减少对用户空间的入侵和干扰。
上述对计算资源的调用可以部署在云端,向多个资源需求方提供了面向云原生的计算服务,做到了算力上云以及程序运行的内存和算力的隔离。由于可以根据数据处理请求从面向多个资源购买方提供计算资源的智能加速卡中配置所需的计算资源,相比于自行购买智能加速卡的方案,提高了资源需求方可调配的计算资源的上限,可以实现高扩展、超大规模的弹性计算,可以很好地适用于对计算资源需求较高的应用场景。
在占用计算资源时,确定计算资源的占用时间,便于占用时间结束后将该计算资源分配给其他处理请求,从而可以提高计算资源的利用率,充分利用计算资源增加营收。
其中,计算资源可以切分为细粒度进行搭配使用,使得多个容器可以共享同一物理硬件,从而可以实现更细粒度的资源使用和更精细化的资源管理。还可以在用户空间向资源购买方提供配置接口,并根据该配置接口获取的资源购买信息对容器进行参数配置,实现资源购买方对容器的配置管理。
并且,本申请实施例中,还可以在用户空间进行容器创建、容器启动、容器停止、容器任务转移等,从而可以更灵活实现对多个容器的调配管理。
本申请实施例还提供了一种电子设备,其中包括存储器和处理器,其中,所述存储器,用于存储程序;所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以实现上述任意一种实施例所述方法中的步骤。
本申请实施例还提供了一种计算机可读存储介质,用于存储计算机可读取的程序或指令,所述程序或指令被处理器执行时,能够实现上述任意一种实施例所述方法中的步骤。
本申请实施例还提供了一种计算机程序产品,包括计算机程序/指令,当所述计算机程序/指令被处理器执行时,致使所述处理器实现上述任意一种实施例所述方法中的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的系统。图7示意性地示出了可被用于实现本公开中所述的各个实施例的示例性系统(或装置)600。
对于一个实施例,图7示出了示例性系统600,该系统具有一个或多个处理器602、被耦合到(一个或多个)处理器602中的至少一个的系统控制模块(芯片组)604、被耦合到系统控制模块604的系统存储器606、被耦合到系统控制模块604的非易失性存储器(NVM)/存储设备608、被耦合到系统控制模块604的一个或多个输入/输出设备610,以及被耦合到系统控制模块606的网络接口612。
处理器602可包括一个或多个单核或多核处理器,处理器602可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,系统600能够作为本申请实施例中所述的浏览器。
在一些实施例中,系统600可包括具有指令的一个或多个计算机可读介质(例如,系统存储器606或NVM/存储设备608)以及与该一个或多个计算机可读介质相合并被配置为执行指令以实现模块从而执行本公开中所述的动作的一个或多个处理器602。
对于一个实施例,系统控制模块604可包括任意适当的接口控制器,以向(一个或多个)处理器602中的至少一个和/或与系统控制模块604通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块604可包括存储器控制器模块,以向系统存储器606提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
系统存储器606可被用于例如为系统600加载和存储数据和/或指令。对于一个实施例,系统存储器606可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器606可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块604可包括一个或多个输入/输出控制器,以向NVM/存储设备608及(一个或多个)输入/输出设备610提供接口。
例如,NVM/存储设备608可被用于存储数据和/或指令。NVM/存储设备608可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备608可包括在物理上作为系统600被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备608可通过网络经由(一个或多个)输入/输出设备610进行访问。
(一个或多个)输入/输出设备610可为系统600提供接口以与任意其他适当的设备通信,输入/输出设备610可以包括通信组件、音频组件、传感器组件等。网络接口612可为系统600提供接口以通过一个或多个网络通信,系统600可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G或6G,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器602中的至少一个可与系统控制模块604的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统600可以但不限于是:浏览器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统600可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统600包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还识别与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
在一个示例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本申请实施例的方法。
在一个示例中还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请实施例的一个或多个的方法。
虽然某些实施例是以说明和描述为目的的,各种各样的替代、和/或、等效的实施方案、或计算来达到同样的目的实施例示出和描述的实现,不脱离本申请的实施范围。本申请旨在覆盖本文讨论的实施例的任何修改或变化。因此,显然本文描述的实施例仅由权利要求和它们的等同物来限定。