CN111338649A - 一种异构***及其加速方法、装置及可读存储介质 - Google Patents
一种异构***及其加速方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN111338649A CN111338649A CN202010093665.7A CN202010093665A CN111338649A CN 111338649 A CN111338649 A CN 111338649A CN 202010093665 A CN202010093665 A CN 202010093665A CN 111338649 A CN111338649 A CN 111338649A
- Authority
- CN
- China
- Prior art keywords
- heterogeneous
- consumption
- operators
- loading
- module
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000001133 acceleration Effects 0.000 title claims abstract description 27
- 238000004590 computer program Methods 0.000 claims description 8
- 230000036316 preload Effects 0.000 claims 1
- 238000011161 development Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 5
- 238000005259 measurement Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种异构***,包括:预加载模块,用于对异构device中的所有异构算子进行预加载;选择模块,用于根据所有所述异构算子的理论消耗,确定最优执行方案;烧录模块,用于加载并烧录所述最优执行方案对应的所述异构算子。本申请利用预加载模块,为异构算子的调用提供了实现基础,可直接通过共享内存空间来完成加载和烧录,不需要内存二次拷贝,在不修改原始程序的前提下完成了异构加速,可应用在加速传统软件领域,为传统软件提供了更多拓展可能。相应的,本申请还公开了一种异构***的加速方法、装置及可读存储介质。
Description
技术领域
本发明涉及异构计算领域,特别涉及一种异构***及其加速方法、装置及可读存储介质。
背景技术
当前,异构***各取所长,大大提高***整体算力,主流的异构***有“CPU+GPU”,“CPU+FPGA”以及“CPU+ASIC”。这些***在硬件设计层面充分体现了异构硬件的特点,如相比CPU(central processing unit,中央处理器),GPU(Graphics Processing Unit,图形处理器)有更高的并行度、更高的单机计算峰值;FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)拥有更高的每瓦性能等;ASIC(Application Specific IntegratedCircuit,专用集成电路)专一职能,每个时间单位都能专注于数据处理或者传输,大大提高了效能。
3种主流架构都有自己复杂的开发环境和流程。例如CUDA(Compute UnifiedDevice Architecture,统一计算设备架构),OpenCL等开发框架,这些框架都有环境复杂,开发周期长,门槛高的特点,一般开发者很难充分利用异构性能,难以达到理想效果。也正因此,这些主流架构一般关注在人工智能、数据分析、科学计算、视频图像处理、视频转码等软件开发复杂,开发周期长,全新开发的主流新兴场景,对于传统应用则无法兼顾。传统应用需要通过修改源码,利用相对应的开发框架进行复杂的二次开发,其开发周期长,门槛高,开发完成后续无负载可选择性,导致在加速传统软件领域没有好的应用和突破。
因此,如何提供一种解决上述技术问题的方案是目前本领域技术人员需要解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种提高传统软件领域进行***加速的异构***及其加速方法、装置及可读存储介质。其具体方案如下:
一种异构***,包括:
预加载模块,用于对异构device中的所有异构算子进行预加载;
选择模块,用于根据所有所述异构算子的理论消耗,确定最优执行方案;
烧录模块,用于加载并烧录所述最优执行方案对应的所述异构算子。
优选的,所述异构***还包括:
记录模块,用于记录所述最优执行方案中每个所述异构算子的实际消耗,并将所述实际消耗反馈至所述选择模块,以使所述选择模块根据所述异构算子的所述实际消耗对应调整所述理论消耗。
优选的,所述预加载模块具体用于:
通过hook应用程序对所有所述异构算子进行预加载。
优选的,所述理论消耗包括理想时间消耗;
所述实际消耗包括实际时间消耗。
优选的,所述理论消耗还包括理想功率消耗;
所述实际消耗还包括实际功率消耗。
相应的,本发明还公开了一种异构***的加速方法,包括:
对异构device中的所有异构算子进行预加载;
根据所有所述异构算子的理论消耗,确定最优执行方案;
加载并烧录所述最优执行方案对应的所述异构算子。
优选的,所述异构***的加速方法还包括:
记录所述最优执行方案中每个所述异构算子的实际消耗;
根据所述异构算子的所述实际消耗对应调整所述理论消耗。
优选的,所述对异构device中的所有异构算子进行预加载的过程,具体包括:
通过hook应用程序对所有所述异构算子进行预加载。
相应的,本发明还公开了一种异构***的加速装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述异构***的加速方法的步骤。
相应的,本发明还公开了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任一项所述异构***的加速方法的步骤。
本申请公开了一种异构***,包括:预加载模块,用于对异构device中的所有异构算子进行预加载;选择模块,用于根据所有所述异构算子的理论消耗,确定最优执行方案;烧录模块,用于加载并烧录所述最优执行方案对应的所述异构算子。本申请利用预加载模块,为异构算子的调用提供了实现基础,可直接通过共享内存空间来完成加载和烧录,不需要内存二次拷贝,在不修改原始程序的前提下完成了异构加速,可应用在加速传统软件领域,为传统软件提供了更多拓展可能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中一种异构***的结构分布图;
图2为本发明实施例中一种异构***的加速方法的步骤流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在应用异构***时,传统应用需要通过修改源码,利用相对应的开发框架进行复杂的二次开发,其开发周期长,门槛高,开发完成后续无负载可选择性,导致在加速传统软件领域没有好的应用和突破。
本申请利用预加载模块,为异构算子的调用提供了实现基础,可直接通过共享内存空间来完成加载和烧录,不需要内存二次拷贝,在不修改原始程序的前提下完成了异构加速,可应用在加速传统软件领域,为传统软件提供了更多拓展可能。
本发明实施例公开了一种异构***,参见图1所示,包括:
预加载模块01,用于对异构device中的所有异构算子进行预加载;
选择模块02,用于根据所有异构算子的理论消耗,确定最优执行方案;
烧录模块03,用于加载并烧录最优执行方案对应的异构算子。
本申请公开了一种异构***,包括:预加载模块,用于对异构device中的所有异构算子进行预加载;选择模块,用于根据所有异构算子的理论消耗,确定最优执行方案;烧录模块,用于加载并烧录最优执行方案对应的异构算子。本申请利用预加载模块,为异构算子的调用提供了实现基础,可直接通过共享内存空间来完成加载和烧录,不需要内存二次拷贝,在不修改原始程序的前提下完成了异构加速,可应用在加速传统软件领域,为传统软件提供了更多拓展可能。
进一步的,异构***还包括:
记录模块04,用于记录最优执行方案中每个异构算子的实际消耗,并将实际消耗反馈至选择模块02,以使选择模块02根据异构算子的实际消耗对应调整理论消耗。
可以理解的是,反馈有助于得到更准确的最优执行方案。
进一步的,预加载模块01具体用于:
通过hook应用程序对所有异构算子进行预加载。
可以理解的是,hook应用程序主要有symbol hook负责,完成算子调用并返回最终结果,symbol hook负责与被加速应用程序的交互,对于被加速应用程序而言,symbol hook属于黑盒,只需确定输入和输出即可。
可以理解的是,选择模块02在计算异构算子的理论消耗的同时,还会考虑CPU的理论消耗,这里的理论消耗主要是每个算子的单位计算能力,以确定最优执行方案,此处算子包括异构device中的异构算子以及CPU中的其他算子,最优执行方案中除了确定的部分异构算子外还可以包括CPU。可以理解的是,除了对最优执行方案中的异构算子执行规定的步骤外,如果最优执行方案中涉及到CPU,同样CPU计算时的情况也可以进行相应的步骤执行。
在一些具体的实施例中,理论消耗包括理想时间消耗,实际消耗包括实际时间消耗。在另外一些实施例中,理论消耗还包括理想功率消耗;实际消耗还包括实际功率消耗。可以理解的是,理论消耗和实际消耗除了以时间、功率作参数外,还可以选择其他参量作为计量参量。
相应的,本发明实施例还公开了一种异构***的加速方法,参见图2所示,包括:
S1:对异构device中的所有异构算子进行预加载;
S2:根据所有异构算子的理论消耗,确定最优执行方案;
S3:加载并烧录最优执行方案对应的异构算子。
进一步的,异构***的加速方法还可包括:
记录最优执行方案中每个异构算子的实际消耗;
根据异构算子的实际消耗对应调整理论消耗。
其中,理论消耗包括理想时间消耗,实际消耗包括实际时间消耗。在另外一些实施例中,理论消耗还包括理想功率消耗;实际消耗还包括实际功率消耗。可以理解的是,理论消耗和实际消耗除了以时间、功率作参数外,还可以选择其他参量作为计量参量。
进一步的,对异构device中的所有异构算子进行预加载的过程,具体包括:
通过hook应用程序对所有异构算子进行预加载。
本申请通过预加载为异构算子的调用提供了实现基础,可直接通过共享内存空间来完成加载和烧录,不需要内存二次拷贝,在不修改原始程序的前提下完成了异构加速,可应用在加速传统软件领域,为传统软件提供了更多拓展可能。
相应的,本发明还公开了一种异构***的加速装置,包括处理器和存储器;其中,所述处理执行所述存储器中保存的计算机程序时实现以下步骤:
对异构device中的所有异构算子进行预加载;
根据所有所述异构算子的理论消耗,确定最优执行方案;
加载并烧录所述最优执行方案对应的所述异构算子。
在一些具体的实施例中,所述处理器执行所述存储器中保存的计算机子程序时,具体可以实现以下步骤:
记录所述最优执行方案中每个所述异构算子的实际消耗;
根据所述异构算子的所述实际消耗对应调整所述理论消耗。
在一些具体的实施例中,所述处理器执行所述存储器中保存的计算机子程序时,具体可以实现以下步骤:
通过hook应用程序对所有所述异构算子进行预加载。
在一些具体的实施例中,所述理论消耗包括理想时间消耗;
所述实际消耗包括实际时间消耗。
在一些具体的实施例中,所述理论消耗还包括理想功率消耗;
所述实际消耗还包括实际功率消耗。
本申请通过预加载为异构算子的调用提供了实现基础,可直接通过共享内存空间来完成加载和烧录,不需要内存二次拷贝,在不修改原始程序的前提下完成了异构加速,可应用在加速传统软件领域,为传统软件提供了更多拓展可能。
进一步的,本申请实施例还公开了一种计算机可读存储介质,这里所说的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动硬盘、CD-ROM或技术领域内所公知的任意其他形式的存储介质。计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
对异构device中的所有异构算子进行预加载;
根据所有所述异构算子的理论消耗,确定最优执行方案;
加载并烧录所述最优执行方案对应的所述异构算子。
在一些具体的实施例中,所述计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:
记录所述最优执行方案中每个所述异构算子的实际消耗;
根据所述异构算子的所述实际消耗对应调整所述理论消耗。
在一些具体的实施例中,所述计算机可读存储介质中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:
通过hook应用程序对所有所述异构算子进行预加载。
在一些具体的实施例中,所述理论消耗包括理想时间消耗;
所述实际消耗包括实际时间消耗。
在一些具体的实施例中,所述理论消耗还包括理想功率消耗;
所述实际消耗还包括实际功率消耗。
本申请通过预加载为异构算子的调用提供了实现基础,可直接通过共享内存空间来完成加载和烧录,不需要内存二次拷贝,在不修改原始程序的前提下完成了异构加速,可应用在加速传统软件领域,为传统软件提供了更多拓展可能。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种异构***及其加速方法、装置及可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种异构***,其特征在于,包括:
预加载模块,用于对异构device中的所有异构算子进行预加载;
选择模块,用于根据所有所述异构算子的理论消耗,确定最优执行方案;
烧录模块,用于加载并烧录所述最优执行方案对应的所述异构算子。
2.根据权利要求1所述异构***,其特征在于,还包括:
记录模块,用于记录所述最优执行方案中每个所述异构算子的实际消耗,并将所述实际消耗反馈至所述选择模块,以使所述选择模块根据所述异构算子的所述实际消耗对应调整所述理论消耗。
3.根据权利要求2所述异构***,其特征在于,所述预加载模块具体用于:
通过hook应用程序对所有所述异构算子进行预加载。
4.根据权利要求1至3任一项所述异构***,其特征在于,
所述理论消耗包括理想时间消耗;
所述实际消耗包括实际时间消耗。
5.根据权利要求4所述异构***,其特征在于,
所述理论消耗还包括理想功率消耗;
所述实际消耗还包括实际功率消耗。
6.一种异构***的加速方法,其特征在于,包括:
对异构device中的所有异构算子进行预加载;
根据所有所述异构算子的理论消耗,确定最优执行方案;
加载并烧录所述最优执行方案对应的所述异构算子。
7.根据权利要求6所述异构***的加速方法,其特征在于,还包括:
记录所述最优执行方案中每个所述异构算子的实际消耗;
根据所述异构算子的所述实际消耗对应调整所述理论消耗。
8.根据权利要求7所述异构***的加速方法,其特征在于,所述对异构device中的所有异构算子进行预加载的过程,具体包括:
通过hook应用程序对所有所述异构算子进行预加载。
9.一种异构***的加速装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求6至8任一项所述异构***的加速方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求6至8任一项所述异构***的加速方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010093665.7A CN111338649A (zh) | 2020-02-14 | 2020-02-14 | 一种异构***及其加速方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010093665.7A CN111338649A (zh) | 2020-02-14 | 2020-02-14 | 一种异构***及其加速方法、装置及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111338649A true CN111338649A (zh) | 2020-06-26 |
Family
ID=71181600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010093665.7A Pending CN111338649A (zh) | 2020-02-14 | 2020-02-14 | 一种异构***及其加速方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338649A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899089A (zh) * | 2015-05-25 | 2015-09-09 | 常州北大众志网络计算机有限公司 | 一种面向异构多核体系的任务调度方法 |
CN106335496A (zh) * | 2016-09-24 | 2017-01-18 | 苏州征之魂专利技术服务有限公司 | 一种混合动力新能源汽车优化节能控制装置 |
CN108845886A (zh) * | 2018-07-27 | 2018-11-20 | 中南大学 | 基于相空间的云计算能耗优化方法和*** |
CN108932212A (zh) * | 2018-07-16 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种基于异构计算芯片的数据处理方法、***及相关组件 |
CN109960576A (zh) * | 2019-03-29 | 2019-07-02 | 北京工业大学 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
-
2020
- 2020-02-14 CN CN202010093665.7A patent/CN111338649A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899089A (zh) * | 2015-05-25 | 2015-09-09 | 常州北大众志网络计算机有限公司 | 一种面向异构多核体系的任务调度方法 |
CN106335496A (zh) * | 2016-09-24 | 2017-01-18 | 苏州征之魂专利技术服务有限公司 | 一种混合动力新能源汽车优化节能控制装置 |
CN108932212A (zh) * | 2018-07-16 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种基于异构计算芯片的数据处理方法、***及相关组件 |
CN108845886A (zh) * | 2018-07-27 | 2018-11-20 | 中南大学 | 基于相空间的云计算能耗优化方法和*** |
CN109960576A (zh) * | 2019-03-29 | 2019-07-02 | 北京工业大学 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
Non-Patent Citations (2)
Title |
---|
王桂彬;杨学军;唐滔;徐新海;: "异构并行***能耗优化分析模型" * |
陈杰;: "GPU/CPU异构***任务节能调度方法仿真" * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108280023B (zh) | 任务执行方法、装置和服务器 | |
CN109684319B (zh) | 数据清洗***、方法、装置及存储介质 | |
CN114510339B (zh) | 一种计算任务调度方法、装置、电子设备及可读存储介质 | |
CN111506314B (zh) | 项目开发的方法、装置、服务器及介质 | |
JP6379654B2 (ja) | 処理実行プログラム、処理実行方法、及び情報処理装置 | |
US10496423B2 (en) | Method for opening up data and functions of terminal application based on reconstruction technology | |
Xiao et al. | OpenABLext: An automatic code generation framework for agent‐based simulations on CPU‐GPU‐FPGA heterogeneous platforms | |
CN111338649A (zh) | 一种异构***及其加速方法、装置及可读存储介质 | |
US8276165B2 (en) | Continuation-based runtime callback invocation | |
Park et al. | MpiPython: A robust python MPI binding | |
Giorgi et al. | Bridging a data-flow execution model to a lightweight programming model | |
WO2020158347A1 (ja) | 情報処理装置、方法およびプログラム | |
Cao et al. | Evaluating data redistribution in parsec | |
CN113626207A (zh) | 地图数据处理方法、装置、设备及存储介质 | |
Goli | Visioncpp: A sycl-based computer vision framework | |
US10101920B2 (en) | Disk I/O attribution | |
CN111796806B (zh) | 生成对象的方法、装置、电子设备及可读存储介质 | |
Wilke et al. | DARMA 0.3. 0-alpha Specification | |
US11954510B2 (en) | Native-image in-memory cache for containerized ahead-of-time applications | |
WO2024114226A1 (zh) | 前向推理的处理方法、芯片、介质及处理装置 | |
CN114020476B (zh) | 一种作业的处理方法、设备及介质 | |
CN113312167B (zh) | 业务控制方法和装置、电子设备、计算机可读介质 | |
WO2024108339A1 (zh) | 一种消息注册订阅的方法及*** | |
Albert et al. | Quantified abstractions of distributed systems | |
Rehmann et al. | Applications and evaluation of in-memory mapreduce |
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 |