CN111190735A - 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统 - Google Patents
一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统 Download PDFInfo
- Publication number
- CN111190735A CN111190735A CN201911392013.7A CN201911392013A CN111190735A CN 111190735 A CN111190735 A CN 111190735A CN 201911392013 A CN201911392013 A CN 201911392013A CN 111190735 A CN111190735 A CN 111190735A
- Authority
- CN
- China
- Prior art keywords
- cpu
- gpu
- task
- core
- computing
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 76
- 238000012545 processing Methods 0.000 title claims abstract description 42
- 230000000977 initiatory effect Effects 0.000 claims abstract description 11
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004422 calculation algorithm Methods 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 13
- 238000012163 sequencing technique Methods 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 8
- 238000004519 manufacturing process Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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
本发明公开一种基于Linux的片上CPU/GPU流水化计算方法计算机系统,包括步骤:对任务按照流水线最大利用率进行重排序;在对所述缓存发起写请求任务完成后进行缓存刷新;在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;将任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。从而使得片上异构多核计算系统同时兼顾CPU和GPU核心的不同计算特性并且能充分利用设备中各部分计算结构,具有性能高、计算利用率高的优点。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统。
背景技术
随着大规模集成电路的发展以及移动互联网、人工智能的大量应用,单纯的中央处理器(Central Processing Unit,CPU)计算已经很难满足计算需求,异构计算系统应运而生。异构多核架构,即在同一芯片上集成多个CPU和图形处理器(Graphics ProcessingUnit,GPU)作为一种先进体系结构逐渐成为主流。现代的内存系统,主要是依据访存请求的局部性原理降低功耗和提高性能,异构多核架构下的CPU和GPU共享片上主存,所以来自不同内核的内存请求会争夺共享内存资源,相互干扰,单个应用程序的访存请求的局部性逐渐消失,从而严重影响到整体系统性能。
现有技术中在CPU/GPU异构混合并行系统进行任务调度的研究一般是采取对各种类型硬件的计算能力或者是任务在各类处理器上的运行时间进行预测,然后进行一次性任务分配。这种方法缺项明显,因此预测可能不够准确,会造成各个计算节点的结束时间不一致,造成有些节点有长尾现象,其他节点可能在最后阶段空闲,没有充分发挥集群的计算能力,任务完成时间没有达到最短。
当前在操作系统(OS)中,还没有专门为GPU提供任务调度机制。由于GPU任务需要由CPU任务发起,因此,OS将所有任务统一视为CPU任务调度执行。这种调度方式,无法充分利用CPU-GPU计算中流水的各个组件,由于以共享内存为桥梁的传输组件与CPU和GPU的计算组件相比具有更大的延时,因此,一方面会让流水线中的一部分组件空闲,另一方面,会使得整个系统的性能下降。为了避免这种情况,会要求程序员手动排布任务,通过计算掩藏掉流水中传输引起的延迟。
片上系统(SoC)通常集成了不同的计算核心,如CPU、GPU、FPGA、DSP等。例如手机、游戏机、应用于无人驾驶的车载计算机等对图像、视频处理等应用有较高要求的设备,通常片上集成了多核CPU和GPU;专用人工智能芯片则通常集成了多核CPU和FPGA。这些计算核心在不同的任务类型上性能有较大差别,例如,CPU更适合进行逻辑、IO等低延迟的串行计算;GPU则更适合大规模高吞吐的并行计算。CPU与GPU共享内存,在计算过程中存在CPU内存使用、GPU内存使用,CPU/GPU通信交互的内存使用,使得系统在一定程度上存在竞争;第三,大量任务在CPU、共享内存、GPU三者之间流动需要一种合理的调度与流水化才能使各个组件的利用率达到最优。因此,如何进行多核CPU/GPU计算系统中的流水化,是有效利用异构系统的各组件资源的关键。
发明内容
本发明的主要目的是提供一种,旨在基于Linux的片上CPU/GPU流水化计算方法及计算机系统,以解决现有的片上异构CPU/GPU系统缺乏良好的流水化任务执行机制,无法充分利用CPU-GPU计算中存在的流水组件,将影响系统的整体效率的技术问题。
为实现上述目的,本发明提出的一种基于Linux的片上CPU/GPU流水化计算方法,包括步骤:
S1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;
S2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;
S31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;
S32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;
S4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。
更优地,所述步骤S1具体包括:
根据所述预设的任务依赖算法对所述任务绘制任务图,对所述任务图进行拓扑排序;
根据所述任务的所述执行类型,将所述拓扑排序后的所述任务中的所述串行、IO或者逻辑型任务存入CPU任务队列,以及将所述拓扑排序后的所述任务中的所述并行计算型任务存入GPU任务队列;
对排序后的所述CPU任务队列以及所述GPU任务队列按照流水线最大利用率进行重排序。
更优地,所述GPU任务队列中的任务的任务优先级高于所述CPU任务队列中任务的任务优先级;所述GPU任务队列中的任务的发射优先级高于所述CPU任务队列中任务的发射优先级。
更优地,所述步骤S31中包括:
判断所述CPU计算核心中的发射CPU核心是否空闲、判断系统共享内存是否足够且存在空余内存带宽、以及判断所述GPU计算核心中的流处理器是否空闲;
在所述发射CPU核心空闲、所系统共享内存足够且存在空余内存带宽、或者所述GPU计算核心中的流处理器空闲三个条件中至少一个满足时,将所述GPU任务中的所述并行计算型任务通过所述发射CPU核心派发给所述GPU计算核心。
更优地,所述判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲的步骤,具体包括:
依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;
根据所述CPU计算核心的五级流水信息,所述GPU计算核心的五级流水信息,以及所述五级流水信息中任务的依赖关系判断所述CPU计算核心中的发射CPU核心是否空闲和判断所述GPU计算核心中的流处理器是否空闲。
更优地,所述判断系统共享内存是否足够且存在空余内存带宽的步骤中通过性能监视器计数器统计从上一个Tick标记到当前Tick标记的两级缓存未命中数来计算所述内存带宽。
更优地,所述步骤S2包括:
在存在有所述GPU计算核心在计算流水线中时,对所述GPU计算核心所执行的当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段,对所述CPU对应的缓存以及所述GPU对应的二级缓存各进行一次缓存状态查询;
在所述GPU计算核心所执行的所述当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段的写请求任务完成后进行缓存刷新,以保证任务数据的缓存一致性。
更优地,在所述CPU包括n核{k0,k1,...kn}所述CPU计算核心时,固定并优先使用所述K0CPU计算核心作为所述GPU的发射CPU核心;其中,所有所述CPU计算核心具备所述GPU任务发射功能。
本发明还提供一种计算机系统,包括:
任务仲裁模块,用于根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;
缓存一致性刷新模块,用于对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;
任务调度模块,包括GPU任务调度单元以及CPU任务调度单元,所述GPU任务调度单元用于根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;
所述CPU任务调度单元,用于根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;
规约模块,用于将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。
本发明还提供一种计算机系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的基于Linux的片上CPU/GPU流水化计算方法的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述的基于Linux的片上CPU/GPU流水化计算方法的步骤。
本发明技术方案中,通过步骤S1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务派;S2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;S31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;S32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;S4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理;从而将片上异构多核计算系统的CPU、共享内存和异构计算核心通过软件组织成CPU-共享内存-GPU计算核心-共享内存-CPU的流水线,能够同时兼顾CPU和GPU核心的不同计算特性并且能充分利用设备中各部分计算结构,具有性能高、计算利用率高的优点。
与现有技术相比,本发明至少具备如下优点:
1、本发明会以最大化流水线利用率为目标对CPU/GPU任务进行仲裁和调度,从而优化计算部件的利用率。
2、本发明在不放弃使用cache的情况下,由系统寻找时机主动刷新cache,在保证cache一致性的同时,不损失并发性。
3、本发明以驱动模块的方式实现在Linux内核层,无需用户额外调用内容,使用方便。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明一实施例中的计算机系统的功能结构框图;
图2为本发明一实施例中的并行处理器的功能结构框图;
图3为本发明一实施例中的基于Linux的片上CPU/GPU流水化计算方法的流程图;
图4为本发明一实施例中的基于Linux的片上CPU/GPU流水化计算方法的任务分配图;
图5为步骤S2的子流程图;
图6为步骤S1的子流程图;
图7为又一实施例中的计算机系统的功能结构框图;
图8为另一实施例中的计算机系统的功能结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明中所讨论的实施例可被应用于任何异构多核处理器(诸如,GPCPU、CPU、多核GPU、CPU/GPU、CPU/FPGA等)、图形控制器等。进一步地,可在包括一个或多个处理器(例如,具有一个或多个处理器核)的计算系统中应用下述的实施例,这些计算系统包括例如移动计算设备,例如智能电话、平板、UMPC(超级移动个人计算机)、膝上型计算机、超极本TM计算设备、可穿戴设备(诸如智能手表或智能眼镜)等等。
如图1所示,本发明的实施例提供了一种计算机系统100的框图。计算系统100包括处理子系统101,所述处理子系统具有一个或多个处理器102和系统存储器104,所述一个或多个处理器和所述系统存储器经由互连路径进行通信,所述互连路径可以包括存储器中枢105。存储器中枢105可以是芯片组部件内的单独的部件,也可以集成在一个或多个处理器102内。存储器中枢105经由通信链路106与I/O子系统111耦合。I/O子系统111包括I/O中枢107,所述I/O中枢可以使得计算系统100能够从一个或多个输入设备108接收输入。另外,I/O中枢107可以使得显示控制器(所述显示控制器可以被包括在一个或多个处理器102中)能够向一个或多个显示设备110A提供输出。在一个实施例中,与I/O中枢107耦合的一个或多个显示设备110A可以包括本地显示设备、内部显示设备或嵌入式显示设备。
在一个实施例中,处理子系统101包括一个或多个并行处理器112,所述一个或多个并行处理器经由总线或其他通信链路113耦合至存储器中枢105。在一个实施例中,一个或多个并行处理器112形成图形处理子系统,所述图形处理子系统可以向经由I/O中枢107耦合的一个或多个显示设备110A中的一个输出像素。一个或多个并行处理器112还可以包括显示控制器和显示接口(未示出)以实现到一个或多个显示设备110B的直接连接。
在I/O子系统111内,系统存储单元114可以连接至I/O中枢107来为计算系统100提供存储机制。I/O开关116可以用于提供接口机制以实现I/O中枢107和可以集成到平台中的其他部件诸如网络适配器118和/或无线网络适配器119以及可以经由一个或多个插入式设备120添加的各种其他设备之间的连接。网络适配器118可以是以太网适配器或另一种有线网络适配器。无线网络适配器119可以包括Wi-Fi、蓝牙、近场通信(NFC)或包括一个或多个无线电装置的其他网络设备中的一个或多个。
计算系统100可以包括未明确示出的其他部件,这些部件包括USB或其他端口连接件、光存储驱动器、视频捕获设备等,也可以连接至I/O中枢107。
应当理解,本文所示的计算系统100是例示性的并且变型和修改是可能的。连接拓扑可以根据需要进行修改,所述连接拓扑包括桥的数量和安排、(多个)处理器102的数量和(多个)并行处理器112的数量。
图2为本发明一实施例的并行处理器200。并行处理器200的各种部件可以使用诸如可编程处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)的一个或多个集成电路设备来实现。根据实施例,所展示的并行处理器200是图1所示的一个或多个并行处理器112的变体。
在一个实施例中,并行处理器200包括并行处理单元202。所述并行处理单元包括I/O单元204,所述I/O单元实现与其他设备包括并行处理单元202的其他实例的通信。I/O单元204可以直接连接至其他设备。在一个实施例中,I/O单元204经由诸如存储器中枢105的中枢或开关接口的使用来与其他设备连接。存储器中枢105与I/O单元204之间的连接形成通信链路113。在并行处理单元202内,I/O单元204与主机接口206和存储器交叉开关216连接,其中主机接口206接收涉及执行处理操作的命令,并且存储器交叉开关216接收涉及执行存储器操作的命令。
当主机接口206经由I/O单元204接收命令缓冲时,主机接口206可以将用于执行那些命令的工作操作引导至前端208。在一个实施例中,前端208与调度器210耦合,所述调度器被配置成将命令或其他工作项目分布至处理集群阵列212。
处理集群阵列212可以包括多达“N”个处理集群(例如,集群214A,集群214B,一直到集群214N)。处理集群阵列212的每个集群214A至214N均可执行大量并发线程。调度器210可以使用各种调度和/或工作分发算法来向处理集群阵列212的集群214A至214N分配工作,这些算法可以依据每种类型的程序或计算引起的工作负荷而变化。
处理集群阵列212可以被配置成执行各种类型的并行处理操作。在一个实施例中,处理集群阵列212被配置成执行通用并行计算操作。在一个实施例中,处理集群阵列212被配置成执行并行图形处理操作。在一些实施例中,处理集群阵列212的各部分可以被配置成执行不同类型的处理。
并行处理单元202的一个或多个实例中的每一个均可与并行处理器存储器222耦合。并行处理器存储器222可以经由存储器交叉开关216来访问,所述存储器交叉开关可以从处理集群阵列212以及I/O单元204接收存储器请求。存储器交叉开关216可以经由存储器接口218访问并行处理器存储器222。存储器接口218可以包括多个分区单元(例如,分区单元220A,分区单元220B,一直到分区单元220N),这些分区单元可以各自耦合至并行处理器存储器222的一部分(例如,存储器单元)。在各种实施例中,存储器单元224A至224N可以包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存储器。
在一个实施例中,处理集群阵列212的集群214A至214N中的任一个可以处理将写入并行处理器存储器222内的存储器单元224A至224N中的任一个的数据。存储器交叉开关216可以被配置成将每个集群214A至214N的输出传递到任何分区单元220A至220N或另一个集群214A至214N,这可以对所述输出执行附加处理操作。每个集群214A至214N均可通过存储器交叉开关216与存储器接口218进行通信以针对各种外部存储器设备进行读取或写入操作。
请一并结合图3和图4,为本发明一实施例中的基于Linux的片上CPU/GPU流水化计算方法的流程图,所述基于Linux的片上CPU/GPU流水化计算方法包括步骤:
S1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务。
通过对任务的执行类型进行判断,可以判断任务的执行计算核心。目前市面上大多数采用CPU串行架构进行运算,因CPU串行架构,采用进程逐个处理的逻辑,对于具备先后次序的任务处理是适用的;但对于大规模连续性例如视频流、具备3维模型的图形应用等,CPU不具备高效的处理能力。相对于CPU来说,GPU采用并行架构,具有更多的计算单元和内存位宽,使其在浮点运算、并行计算等方面具有更加突出的优势。在本申请中,所述任务中的所述并行计算型任务派发给所述GPU计算核心,所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心。
具体的,根据预设的任务依赖算法,计算任务依赖情况,绘制任务图,并对任务图进行拓扑排序,然后将CPU任务按排序顺序存入CPU任务队列,GPU任务按排序顺序存入GPU任务队列。
进一步地,在一较佳的实施例中,所述GPU任务队列中的任务的任务优先级高于所述CPU任务队列中任务的任务优先级;所述GPU任务队列中的任务的发射优先级高于所述CPU任务队列中任务的发射优先级。因为由于GPU执行具有较长流水,要求更大的并发和吞吐,因此,排序时,在考虑实时性和执行顺序的情况下会分配给GPU任务更高的优先级。
其中,在所述CPU包括n核{k0,k1,...kn}所述CPU计算核心时,固定并优先使用所述K0CPU计算核心作为所述GPU的发射CPU核心;其中,所有所述CPU计算核心具备所述GPU任务发射功能。也就是说,通常固定所述K0CPU计算核心作为所述GPU的发射CPU核心,在所述K0CPU计算核心非空闲时,其他空闲的所述CPU计算核心执行所述GPU任务发射功能,作为所述GPU的发射CPU核心。
将任务分配至计算任务依赖情况,绘制任务图,并对任务图进行拓扑排序,然后将CPU任务按排序顺序存入CPU任务队列,GPU任务按排序顺序存入GPU任务队列,然后以流水线最大利用率为目标进行重排序。
S2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新。
在现有的CPU/集成GPU系统的内存管理在并发与缓存(cache)一致性问题上做了一定妥协,很难支撑高效的任务流水化运作。以NVIDIA公司的CUDA(Compute UnifiedDevice Architecture)内存管理平台为例,CUDA为集成GPU提供了零拷贝内存和统一内存的方式对内存进行管理。零拷贝内存具有很好的并发性,但是为了解决cache一致性问题,关闭了CPU和GPU的cache,因此在大量重复访存时,效率会很低下。而统一内存,虽然没有关闭cache,但是为了保证cache一致性,要求CPU到GPU的任务流动必须同步执行,因此,无法使得流水进行乱序执行并且无法大规模并发执行。
在步骤S2中,作为计算流水中的数据一致性保证,当有GPU在计算流水线中,会对任务在数据CPU写入内存和GPU写入内存阶段对CPU的cache以及GPU的L2cache各进行一次cache状态检查,以决定是否进行主动式cache刷新,以保证任务数据的cache一致性。
具体的,请一并结合图5,步骤S2包括:
步骤S21,在存在有所述GPU计算核心在计算流水线中时,对所述GPU计算核心所执行的当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段,对所述CPU对应的缓存以及所述GPU对应的二级缓存各进行一次缓存状态查询;
步骤S22,在所述GPU计算核心所执行的所述当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段的写请求任务完成后进行缓存刷新,以保证任务数据的缓存一致性。
在本实施例中,可以保证大规模并发和Cache一致性能同时完成,是顺利流水化的关键,在CPU/GPU写请求发起后进行监听,一旦写完成,查询Cache状态并主动Flush Cache,从而保证Cache一致性。从而达到在不放弃使用cache的情况下,由系统寻找时机主动刷新cache,在保证cache一致性的同时,不损失并发性。
S31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心。
在检查计算核心的状态时,对于CPU的状态检查,关注的是CPU是否空闲;对于GPU状态的检查,需要检查发起GPU任务的CPU、内存通道、GPU核心这一组GPU运算流水上的组件的空闲状态,然后将队列头部任务流式派发给对应计算核心的相关组件。
具体的,在步骤31中,具体包括:
判断所述CPU计算核心中的发射CPU核心是否空闲、判断系统共享内存是否足够且存在空余内存带宽、以及判断所述GPU计算核心中的流处理器是否空闲;
在所述发射CPU核心空闲、所系统共享内存足够且存在空余内存带宽、或者所述GPU计算核心中的流处理器空闲三个条件中至少一个满足时,将所述GPU任务中的所述并行计算型任务通过所述发射CPU核心派发给所述GPU计算核心。
其中,所述判断系统共享内存是否足够且存在空余内存带宽的步骤中通过性能监视器计数器统计从上一个Tick标记到当前Tick标记的两级缓存未命中数来计算所述内存带宽。
其中,所述判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲的步骤,具体包括:
依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;
根据所述CPU计算核心的五级流水信息,所述GPU计算核心的五级流水信息,以及所述五级流水信息中任务的依赖关系判断所述CPU计算核心中的发射CPU核心是否空闲和判断所述GPU计算核心中的流处理器是否空闲。
S32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心。
具体地,在一较佳的实施例中,所述判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲的步骤,具体包括:
依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;
根据所述CPU计算核心的五级流水信息,所述GPU计算核心的五级流水信息,以及所述五级流水信息中任务的依赖关系判断所述CPU计算核心中的发射CPU核心是否空闲和判断所述GPU计算核心中的流处理器是否空闲。
具体地,所述判断系统共享内存是否足够且存在空余内存带宽的步骤中通过性能监视器计数器统计从上一个Tick标记到当前Tick标记的两级缓存未命中数来计算所述内存带宽。
具体地,判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲,可以利用查询CPU/GPU利用率完成。
S4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。具体的,异构核心计算完成通过共享内存将数据返回CPU,即,所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU计算后续任务。
本发明基于Linux的片上CPU/GPU流水化计算方法,通过步骤S1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务派;S2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;S31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;S32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;S4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理;从而将片上异构多核计算系统的CPU、共享内存和异构计算核心通过软件组织成CPU-共享内存-GPU计算核心-共享内存-CPU的流水线,能够同时兼顾CPU和GPU核心的不同计算特性并且能充分利用设备中各部分计算结构,具有性能高、计算利用率高的优点。
与现有技术相比,本发明至少具备如下优点:
1、本发明会以最大化流水线利用率为目标对CPU/GPU任务进行仲裁和调度,从而优化计算部件的利用率。
2、本发明在不放弃使用cache的情况下,由系统寻找时机主动刷新cache,在保证cache一致性的同时,不损失并发性。
3、本发明以驱动模块的方式实现在Linux内核层,无需用户额外调用内容,使用方便。
进一步地,请一并结合图6,在一较佳的实施例中,所述步骤S1具体包括:
步骤S11,根据所述预设的任务依赖算法对所述任务绘制任务图,对所述任务图进行拓扑排序;
步骤S12,根据所述任务的所述执行类型,将所述拓扑排序后的所述任务中的所述串行、IO或者逻辑型任务存入CPU任务队列,以及将所述拓扑排序后的所述任务中的所述并行计算型任务存入GPU任务队列;
步骤S13,对排序后的所述CPU任务队列以及所述GPU任务队列按照流水线最大利用率进行重排序。
请一并结合图7,为本发明另一实施例中的一种计算机系统的功能模块结构示意图。
计算机系统100包括任务仲裁模块101,缓存一致性刷新模块102,任务调度模块103以及规约模块104;其中,任务调度模块103包括GPU任务调度单元14以及CPU任务调度单元15。
任务仲裁模块101,用于根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务。
具体的,任务仲裁模块101根据所述预设的任务依赖算法对所述任务绘制任务图,对所述任务图进行拓扑排序;根据所述任务的所述执行类型,将所述拓扑排序后的所述任务中的所述串行、IO或者逻辑型任务存入CPU任务队列,以及将所述拓扑排序后的所述任务中的所述并行计算型任务存入GPU任务队列;对排序后的所述CPU任务队列以及所述GPU任务队列按照流水线最大利用率进行重排序。
缓存一致性刷新模块102,用于对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新。具体的,在存在有所述GPU计算核心在计算流水线中时,对所述GPU计算核心所执行的当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段,对所述CPU对应的缓存以及所述GPU对应的二级缓存各进行一次缓存状态查询;在所述GPU计算核心所执行的所述当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段的写请求任务完成后进行缓存刷新,以保证任务数据的缓存一致性。
所述GPU任务调度单元14用于根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心。具体的,判断所述CPU计算核心中的发射CPU核心是否空闲、判断系统共享内存是否足够且存在空余内存带宽、以及判断所述GPU计算核心中的流处理器是否空闲;在所述发射CPU核心空闲、所系统共享内存足够且存在空余内存带宽、或者所述GPU计算核心中的流处理器空闲三个条件中至少一个满足时,将所述GPU任务中的所述并行计算型任务通过所述发射CPU核心派发给所述GPU计算核心。
其中,所述判断系统共享内存是否足够且存在空余内存带宽的步骤中通过性能监视器计数器统计从上一个Tick标记到当前Tick标记的两级缓存未命中数来计算所述内存带宽。
其中,所述判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲,具体包括:依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;根据所述CPU计算核心的五级流水信息,所述GPU计算核心的五级流水信息,以及所述五级流水信息中任务的依赖关系判断所述CPU计算核心中的发射CPU核心是否空闲和判断所述GPU计算核心中的流处理器是否空闲。
所述CPU任务调度单元15,用于根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;
具体地,在一较佳的实施例中,所述GPU任务调度单元14判断所述CPU计算核心中的发射CPU核心是否空闲以及所述CPU任务调度单元15判断所述GPU计算核心中的流处理器是否空闲的步骤,具体包括:依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;根据所述CPU计算核心的五级流水信息,所述GPU计算核心的五级流水信息,以及所述五级流水信息中任务的依赖关系判断所述CPU计算核心中的发射CPU核心是否空闲和判断所述GPU计算核心中的流处理器是否空闲。
具体地,所述判断系统共享内存是否足够且存在空余内存带宽的步骤中通过性能监视器计数器统计从上一个Tick标记到当前Tick标记的两级缓存未命中数来计算所述内存带宽。
规约模块104,用于将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。具体的,异构核心计算完成通过共享内存将数据返回CPU,即,所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU计算后续任务。
其中,在本发明的实施例中,计算机系统100为与上述基于Linux的片上CPU/GPU流水化计算方法对应的装置,同样能够同时兼顾CPU和GPU核心的不同计算特性并且能充分利用设备中各部分计算结构,具有性能高、计算利用率高的优点。需要说明的是,计算机系统100包括实现上述基于Linux的片上CPU/GPU流水化计算方法的所有模块或者单元,为避免过多重复,在此不对计算机系统100的各模块或者单元进行赘述。
如图8所示,本发明的实施例还提供了一种计算机系统,包括存储器51、处理器52以及存储在所述存储器51中并可在所述处理器52上运行的计算机程序53,所述处理器52执行所述计算机程序53时实现上述的基于Linux的片上CPU/GPU流水化计算方法的步骤。
即,在本发明的具体实施例中,计算机系统的处理器52执行所述计算机程序53时实现上述的基于Linux的片上CPU/GPU流水化计算方法的步骤,同样能够同时兼顾CPU和GPU核心的不同计算特性并且能充分利用设备中各部分计算结构,具有性能高、计算利用率高的优点。
此外,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于Linux的片上CPU/GPU流水化计算方法的步骤。
即,在本发明的具体实施例中,计算机可读存储介质的计算机程序被处理器执行时实现上述的基于Linux的片上CPU/GPU流水化计算方法的步骤,同样能够同时兼顾CPU和GPU核心的不同计算特性并且能充分利用设备中各部分计算结构,具有性能高、计算利用率高的优点。
示例性的,计算机可读存储介质的计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
Claims (10)
1.一种基于Linux的片上CPU/GPU流水化计算方法,其特征在于,包括步骤:
S1,根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;
S2,对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;
S31,根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;
S32,根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;
S4,将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。
2.如权利要求1所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述步骤S1具体包括:
根据所述预设的任务依赖算法对所述任务绘制任务图,对所述任务图进行拓扑排序;
根据所述任务的所述执行类型,将所述拓扑排序后的所述任务中的所述串行、IO或者逻辑型任务存入CPU任务队列,以及将所述拓扑排序后的所述任务中的所述并行计算型任务存入GPU任务队列;
对排序后的所述CPU任务队列以及所述GPU任务队列按照流水线最大利用率进行重排序。
3.如权利要求2所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述GPU任务队列中的任务的任务优先级高于所述CPU任务队列中任务的任务优先级;所述GPU任务队列中的任务的发射优先级高于所述CPU任务队列中任务的发射优先级。
4.如权利要求2所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述步骤S31中包括:
判断所述CPU计算核心中的发射CPU核心是否空闲、判断系统共享内存是否足够且存在空余内存带宽、以及判断所述GPU计算核心中的流处理器是否空闲;
在所述发射CPU核心空闲、所系统共享内存足够且存在空余内存带宽、或者所述GPU计算核心中的流处理器空闲三个条件中至少一个满足时,将所述GPU任务中的所述并行计算型任务通过所述发射CPU核心派发给所述GPU计算核心。
5.如权利要求4所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述判断所述CPU计算核心中的发射CPU核心是否空闲以及判断所述GPU计算核心中的流处理器是否空闲的步骤,具体包括:
依次查询所述CPU计算核心以及所述GPU计算核心的五级流水信息;
根据所述CPU计算核心的五级流水信息,所述GPU计算核心的五级流水信息,以及所述五级流水信息中任务的依赖关系判断所述CPU计算核心中的发射CPU核心是否空闲和判断所述GPU计算核心中的流处理器是否空闲。
6.如权利要求4所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述判断系统共享内存是否足够且存在空余内存带宽的步骤中通过性能监视器计数器统计从上一个Tick标记到当前Tick标记的两级缓存未命中数来计算所述内存带宽。
7.如权利要求1-6中任一项所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,所述步骤S2包括:
在存在有所述GPU计算核心在计算流水线中时,对所述GPU计算核心所执行的当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段,对所述CPU对应的缓存以及所述GPU对应的二级缓存各进行一次缓存状态查询;
在所述GPU计算核心所执行的所述当前任务中的数据从所述CPU写入内存和数据从所述GPU写入内存的阶段的写请求任务完成后进行缓存刷新,以保证任务数据的缓存一致性。
8.如权利要求1-6中任一项所述的基于Linux的片上CPU/GPU流水化计算方法,其特征在于,在所述CPU包括n核{k0,k1,...kn}所述CPU计算核心时,固定并优先使用所述K0CPU计算核心作为所述GPU的发射CPU核心;其中,所有所述CPU计算核心具备所述GPU任务发射功能。
9.一种计算机系统,其特征在于,包括:
任务仲裁模块,用于根据预设的任务依赖算法以及任务的执行类型对所述任务进行排序,对排序后的所述任务按照流水线最大利用率进行重排序,其中所述执行类型包括并行计算型任务,以及串行、IO或者逻辑型任务;
缓存一致性刷新模块,用于对缓存进行缓存状态查询,在对所述缓存发起写请求任务完成后进行缓存刷新;
任务调度模块,包括GPU任务调度单元以及CPU任务调度单元,所述GPU任务调度单元用于根据GPU计算核心的计算状态以及所述任务的重排序结果,在所述GPU计算核心空闲时,将所述任务中的所述并行计算型任务派发给所述GPU计算核心;
所述CPU任务调度单元,用于根据CPU计算核心的计算状态以及所述任务的重排序结果,在所述CPU计算核心空闲时,将所述任务中的所述串行、IO或者逻辑型任务派发给所述CPU计算核心;
规约模块,用于将所述GPU计算核心处理的任务数据和所述CPU计算核心处理的任务数据规约到对应的发起CPU中,由CPU进行后续数据处理。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的基于Linux的片上CPU/GPU流水化计算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911392013.7A CN111190735B (zh) | 2019-12-30 | 2019-12-30 | 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911392013.7A CN111190735B (zh) | 2019-12-30 | 2019-12-30 | 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190735A true CN111190735A (zh) | 2020-05-22 |
CN111190735B CN111190735B (zh) | 2024-02-23 |
Family
ID=70711083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911392013.7A Active CN111190735B (zh) | 2019-12-30 | 2019-12-30 | 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190735B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897653A (zh) * | 2020-07-30 | 2020-11-06 | 云知声智能科技股份有限公司 | 一种协同计算方法、装置、系统及介质 |
CN112783803A (zh) * | 2021-01-27 | 2021-05-11 | 于慧 | 一种计算机cpu-gpu共享缓存控制方法及系统 |
CN114385474A (zh) * | 2022-03-25 | 2022-04-22 | 西安芯瞳半导体技术有限公司 | 针对gpu计算核进行性能统计分析的方法、装置及介质 |
CN116483584A (zh) * | 2023-05-26 | 2023-07-25 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的任务处理方法、装置、电子设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110211036A1 (en) * | 2010-02-26 | 2011-09-01 | Bao Tran | High definition personal computer (pc) cam |
CN103927277A (zh) * | 2014-04-14 | 2014-07-16 | 中国人民解放军国防科学技术大学 | Cpu和gpu共享片上高速缓存的方法及装置 |
CN104952096A (zh) * | 2014-03-31 | 2015-09-30 | 中国电信股份有限公司 | Cpu和gpu混合云渲染方法、装置和系统 |
CN108153593A (zh) * | 2017-12-22 | 2018-06-12 | 合肥寰景信息技术有限公司 | 一种高并发的gpu集群架构及其负载均衡方法 |
US20180268027A1 (en) * | 2016-06-30 | 2018-09-20 | Huawei Technologies Co., Ltd. | Systems and methods for managing databases |
US20180307711A1 (en) * | 2017-04-24 | 2018-10-25 | Reniac, Inc. | System and method to accelerate compaction |
CN108874518A (zh) * | 2018-05-21 | 2018-11-23 | 福建省数字福建云计算运营有限公司 | 一种任务调度方法及终端 |
CN110333946A (zh) * | 2019-05-14 | 2019-10-15 | 王娅雯 | 一种基于人工智能cpu数据处理系统及方法 |
WO2019204898A1 (en) * | 2018-04-26 | 2019-10-31 | 10518590 Canada Inc. | Workload scheduling in a distributed computing environment based on an applied computational value |
-
2019
- 2019-12-30 CN CN201911392013.7A patent/CN111190735B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110211036A1 (en) * | 2010-02-26 | 2011-09-01 | Bao Tran | High definition personal computer (pc) cam |
CN104952096A (zh) * | 2014-03-31 | 2015-09-30 | 中国电信股份有限公司 | Cpu和gpu混合云渲染方法、装置和系统 |
CN103927277A (zh) * | 2014-04-14 | 2014-07-16 | 中国人民解放军国防科学技术大学 | Cpu和gpu共享片上高速缓存的方法及装置 |
US20180268027A1 (en) * | 2016-06-30 | 2018-09-20 | Huawei Technologies Co., Ltd. | Systems and methods for managing databases |
US20180307711A1 (en) * | 2017-04-24 | 2018-10-25 | Reniac, Inc. | System and method to accelerate compaction |
CN108153593A (zh) * | 2017-12-22 | 2018-06-12 | 合肥寰景信息技术有限公司 | 一种高并发的gpu集群架构及其负载均衡方法 |
WO2019204898A1 (en) * | 2018-04-26 | 2019-10-31 | 10518590 Canada Inc. | Workload scheduling in a distributed computing environment based on an applied computational value |
CN108874518A (zh) * | 2018-05-21 | 2018-11-23 | 福建省数字福建云计算运营有限公司 | 一种任务调度方法及终端 |
CN110333946A (zh) * | 2019-05-14 | 2019-10-15 | 王娅雯 | 一种基于人工智能cpu数据处理系统及方法 |
Non-Patent Citations (1)
Title |
---|
赵世韬;: "任务并行编程模型研究与进展", 电子技术与软件工程, no. 12 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897653A (zh) * | 2020-07-30 | 2020-11-06 | 云知声智能科技股份有限公司 | 一种协同计算方法、装置、系统及介质 |
CN112783803A (zh) * | 2021-01-27 | 2021-05-11 | 于慧 | 一种计算机cpu-gpu共享缓存控制方法及系统 |
CN112783803B (zh) * | 2021-01-27 | 2022-11-18 | 湖南中科长星科技有限公司 | 一种计算机cpu-gpu共享缓存控制方法及系统 |
CN114385474A (zh) * | 2022-03-25 | 2022-04-22 | 西安芯瞳半导体技术有限公司 | 针对gpu计算核进行性能统计分析的方法、装置及介质 |
CN116483584A (zh) * | 2023-05-26 | 2023-07-25 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的任务处理方法、装置、电子设备和存储介质 |
CN116483584B (zh) * | 2023-05-26 | 2024-05-03 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的任务处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111190735B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111190735B (zh) | 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统 | |
CN110619595B (zh) | 一种基于多fpga加速器互联的图计算优化方法 | |
US8347301B2 (en) | Device, system, and method of scheduling tasks of a multithreaded application | |
US20130212594A1 (en) | Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
US20210248006A1 (en) | Hardware Resource Allocation System for Allocating Resources to Threads | |
CN110990154A (zh) | 一种大数据应用优化方法、装置及存储介质 | |
CN106250348A (zh) | 一种基于gpu访存特性的异构多核架构缓存管理方法 | |
CN114675964A (zh) | 基于联邦决策树模型训练的分布式调度方法、系统及介质 | |
KR20220051158A (ko) | 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술 | |
CN111756802B (zh) | 一种数据流任务在numa平台上的调度方法及系统 | |
US11954518B2 (en) | User-defined metered priority queues | |
CN112306628A (zh) | 一种基于多核服务器的虚拟网络功能资源管理框架 | |
CN115934309A (zh) | 用于核心特定度量收集的技术 | |
CN112949847B (zh) | 神经网络算法加速系统、调度系统及调度方法 | |
US20210406777A1 (en) | Autonomous allocation of deep neural network inference requests in a cluster with heterogeneous devices | |
CN115757204A (zh) | 一种应用于自动驾驶的nuca架构硬件性能优化方法、系统及介质 | |
US20210365804A1 (en) | Dynamic ai model transfer reconfiguration to minimize performance, accuracy and latency disruptions | |
CN110413562B (zh) | 一种具有自适应功能的同步系统和方法 | |
CN107329813B (zh) | 一种面向众核处理器的全局感知数据主动预取方法及系统 | |
CN112114967A (zh) | 一种基于服务优先级的gpu资源预留方法 | |
US20240022625A1 (en) | Streaming batcher for collecting work packets as remote descriptors | |
EP4160423B1 (en) | Memory device, memory device operating method, and electronic device including memory device | |
US11941722B2 (en) | Kernel optimization and delayed execution | |
CN116185670B (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 |