CN108874727A - 一种面向gpdsp的多核并行计算实现方法 - Google Patents
一种面向gpdsp的多核并行计算实现方法 Download PDFInfo
- Publication number
- CN108874727A CN108874727A CN201810533351.7A CN201810533351A CN108874727A CN 108874727 A CN108874727 A CN 108874727A CN 201810533351 A CN201810533351 A CN 201810533351A CN 108874727 A CN108874727 A CN 108874727A
- Authority
- CN
- China
- Prior art keywords
- dsp
- program module
- program
- core
- gpdsp
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开一种面向GPDSP的多核并行计算实现方法,步骤包括:S1.在GPDSP中的CPU端构建实现主体框架部分的CPU程序模块,在DSP端构建实现核心计算部分的DSP程序模块,由CPU程序模块对DSP程序模块进行调用;S2.分别在DSP端对DSP程序模块、以及在CPU端对CPU程序模块进行编译,再进行统一编译,得到单芯片GPDSP程序;S3.运行GPDSP程序,执行程序中CPU程序模块时,通过调用DSP程序模块进行指定的计算任务,由多个DSP核并行进行计算。本发明能够充分发挥多核CPU和多核DSP高性能实现多核并行计算,且具有实现方法简单、使用方便、应用灵活及高效等优点。
Description
技术领域
本发明涉及GPDSP(General-Purpose Digital Signal Processor,通用计算数字信号处理器)技术领域,尤其涉及一种面向GPDSP的多核并行计算实现方法。
背景技术
GPDSP作为一种异构多核处理器,它同时包含了CPU核单元和DSP核单元,其中CPU核单元主要用于负责包括存储管理、文件控制、进程调度、中断管理任务在内的通用事务管理,以及提供对通用操作系统的完整支持,DSP核单元包含若干强大计算能力的64位向量处理阵列,用于支持高密集运算任务的解算。
由于GPDSP是包含CPU核和DSP核的异构多核处理器,包括寄存器文件、片内向量阵列存储器、片内共享存储阵列、片外DDR存储器等多层次存储架构,针对GPDSP的异构多核并行编程,目前还没有有效的解决方案,若简单的直接套用同构多核并行编程方法来实现,不能有效发挥GPDSP的强大计算能力。如现有的CPU多核处理器运行通用操作系统,通常会提供基于OPENMP或MPI的通用并行编程方法,但是如上述,GPDSP除了包含多个CPU核外,同时还包含多个含64位向量处理阵列的DSP核,并且由DSP核提供主要的计算性能,若直接使用现有的基于OPENMP或MPI的通用并行编程方法,不能实现CPU和多DSP核间的并行编程,即无法应用于GPDSP实现构多核并行编程。因此,亟需提供一种适用于GPDSP的多核并行计算实现方法,以能够充分发挥多核CPU和多核DSP高性能。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够充分发挥多核CPU和多核DSP高性能实现多核并行计算,且实现方法简单、使用方便、应用灵活及高效的面向GPDSP的多核并行计算实现方法。
为解决上述技术问题,本发明提出的技术方案为:
一种面向GPDSP的多核并行计算实现方法,步骤包括:
S1. 将目标GPDSP应用程序划分为主体框架部分以及核心计算部分,在GPDSP中的CPU端构建实现所述主体框架部分的CPU程序模块,在DSP端构建实现所述核心计算部分的DSP程序模块,由所述CPU程序模块对所述DSP程序模块进行调用;
S2. 分别在DSP端对所述DSP程序模块、以及在CPU端对所述CPU程序模块进行编译,再将编译后DSP程序模块和CPU程序模块进行统一编译,得到单芯片GPDSP程序;
S3. 运行所述GPDSP程序,执行程序中所述CPU程序模块时,通过调用所述DSP程序模块执行指定的计算任务,并由GPDSP内多个DSP核并行进行计算。
作为本发明的进一步改进:所述步骤S1中具体将包括目标GPDSP应用程序中数据准备、控制逻辑以及任务管理部分划分为主体框架部分,以及将目标GPDSP应用程序中需占用指定时间的算法、计算任务划分为核心计算部分。
作为本发明的进一步改进,所述步骤S2的具体步骤为:所述DSP程序模块通过DSP端的编译器或汇编器编译成二进制可执行代码,得到编译后DSP程序模块;所述CPU程序模块通过CPU端的编译器完成编译,得到编译后CPU程序模块,将编译后DSP程序模块、编译后CPU程序模块在CPU的编译环境下统一链接为单芯片的GPDSP程序可执行代码,得到所述单芯片GPDSP程序。
作为本发明的进一步改进:所述步骤S3中调用所述DSP程序模块时,具体通过所述CPU程序模块根据所需执行的计算任务,将所述DSP程序模块以及所述DSP程序模块计算所需的参数、数据传输到DSP核指定位置处,启动DSP核运行所述DSP程序模块,直到所述DSP程序模块完成计算。
作为本发明的进一步改进,所述步骤S3的具体步骤为:
S31. 运行所述GPDSP程序,执行程序中所述CPU程序模块时,若需要调用所述DSP程序模块,转入执行步骤S32;
S32. 所述CPU程序模块根据所需执行的计算任务,将所述DSP程序模块以及所述DSP程序模块计算所需的参数、数据传输到DSP核指定位置处;
S33. 启动DSP核运行,所述DSP程序模块由多核DSP并行执行,以并行完成所述CPU程序模块传过来的计算任务;
S34. 当所述CPU程序模块检测到所述DSP程序模块的计算结束标志时,退出当前计算;继续执行所述CPU程序模块,若需要调用所述DSP程序模块,返回执行步骤S32,直到全部计算任务运行结束。
作为本发明的进一步改进,所述步骤S32的具体步骤为:
S321. 预先将GPDSP中的DSP核内存地址空间划分为用于存储计算所需参数数据的参数段、用于存储程序代码的代码段以及用于存储计算所需数据的数据段;
S322. 调用所述DSP程序模块时,所述CPU程序模块将计算所需参数数据传递到DSP端的所述参数段,将DSP端的所述DSP程序模块的程序代码传递到所述代码段,以及将所述DSP程序模块计算所需数据传递到所述数据段。
作为本发明的进一步改进:所述步骤S322中具体将计算所需参数数据传递到DSP端的所述参数段的起始地址PARA_ADDR,将DSP端的所述DSP程序模块的程序代码传递到所述代码段的起始地址CODE_ADDR,以及将所述DSP程序模块计算所需数据传递到所述数据段的起始地址DATA_ADDR,并在完成传输后,在指定的程序运行状态地址写入程序计算开启标志。
作为本发明的进一步改进,所述步骤S33的具体步骤为:
S331. 预先在所述DSP程序模块中构建入口程序子模块以及对应不同计算子任务的多个DSP子程序模块,各个DSP子模块对应由不同的DSP核执行,所述入口程序子模块包括每个DSP核均需要执行的入口程序,由所述入口程序子模块读取各DSP核的ID值,并根据读取到的各ID值分别跳转到对应各个DSP核的所述DSP子程序模块;
S332. 启动各DSP核运行时,各DSP核并行执行对应的所述DSP子程序模块,以分别读取所述CPU程序模块传送的参数数据、计算所需数据以及读取的DSP核的ID值,并分别加载各DSP核所需要的数据执行对应计算任务;
S333. 完成当前所有计算任务后,在指定的程序运行状态地址STATE_ADDR写入程序计算结束标志。
作为本发明的进一步改进:所述步骤S332具体分别读取存放在DSP核内参数段的起始地址PARA_ADDR中参数数据、数据段的起始地址DATA_ADDR中数据以及DSP核的ID值,并分别计算各DSP核的计算任务所对应的数据起始地址、数据长度。
作为本发明的进一步改进:所述步骤S33中多核并行执行时,还包括各个DSP核采用基于GPDSP的DSP 核间硬件同步机制实现多核间的同步操作。
与现有技术相比,本发明的优点在于:
1、本发明面向GPDSP的多核并行计算实现方法,考虑GPDSP多核异构的体系结构特征,通过将应用程序进行主体框架、核心计算的划分后,分别在CPU、DSP端构建实现主体框架、核心计算的程序模块,由CPU端程序调用DSP端程序,能够支持GPDSP结构的统一并行编程,由于CPU、DSP端程序分别独立构建,CPU端不需要关注DSP底层的体系结构和硬件细节,只需要关注调用DSP端程序计算所需要的接口参数,在DSP端则可以便于深入挖掘DSP体系结构的指令级并行性、向量处理器阵列的向量化优化以及多核DSP间的并行优化与同步,能够最大限度的发挥出GPDSP中多核DSP的峰值计算性能,从而实现方便、灵活且高效的面向GPDSP的多核并行计算,充分发挥GPDSP的多核性能。
2、本发明面向GPDSP的多核并行计算实现方法,在CPU端与DSP端独立构建程序模块,通过DSP端的编译器或汇编器编译成二进制可执行代码提供给CPU端程序调用,实现了计算任务模块化,可以简化计算任务的调试,保证应用程序的可靠性和稳定性。
3、本发明面向GPDSP的多核并行计算实现方法,通过将DSP端程序综合成一个可执行程序代码,由CPU端程序调用DSP端程序的二进制可执行代码,最终在CPU的编译环境下统一链接为单芯片的GPDSP程序可执行代码,实现GPDSP中多核并行计算的统一并行编程,有利于提高高级语言编程的开发效率,特别是针对多核、向量运算阵列等并行资源,且具有通用性和易用性好、应用范围广的优点。
附图说明
图1是本实施例面向GPDSP的多核并行计算实现方法的实现流程示意图。
图2是本发明具体实施例中生成GPDSP多核并行程序的实现流程示意图。
图3是本发明具体实施例中实现多核并行计算的实现流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例面向GPDSP的多核并行计算实现方法,步骤包括:
S1. 将目标GPDSP应用程序划分为主体框架部分以及核心计算部分,在GPDSP中的CPU端构建实现主体框架部分的CPU程序模块,在DSP端构建实现核心计算部分的DSP程序模块,由CPU程序模块对DSP程序模块进行调用;
S2. 分别在DSP端对DSP程序模块、以及在CPU端对CPU程序模块进行编译,再将编译后DSP程序模块和CPU程序模块进行统一编译,得到单芯片GPDSP程序;
S3. 运行GPDSP程序,执行程序中CPU程序模块时,通过调用DSP程序模块执行指定的计算任务,并由GPDSP内多个DSP核并行进行计算。
本实施例考虑GPDSP多核异构的体系结构特征,通过将应用程序进行主体框架、核心计算的划分后,分别在CPU、DSP端构建实现主体框架、核心计算的程序模块,由CPU端程序(CPU程序模块)调用DSP端程序(DSP程序模块),能够支持GPDSP结构的统一并行编程,由于CPU、DSP端程序分别独立构建,CPU端不需要关注DSP底层的体系结构和硬件细节,只需要关注调用DSP端程序计算所需要的接口参数,在DSP端则可以便于深入挖掘DSP体系结构的指令级并行性、向量处理器阵列的向量化优化以及多核DSP间的并行优化与同步,能够充分发挥GPDSP的多核性能,从而实现方便、灵活且高效的面向GPDSP的多核并行计算。
本实施例上述方法,通过分别在DSP端对DSP程序模块、以及在CPU端对CPU程序模块进行编译,最终是在CPU的编译环境下统一链接为单芯片的GPDSP程序可执行代码,可以实现GPDSP中多核并行计算的统一并行编程,有利于提高高级语言编程的开发效率,特别是针对多核、向量运算阵列等并行资源,且具有通用性和易用性好、应用范围广的优点,同时由CPU程序模块调用DSP程序模块,可以实现计算任务模块化,简化计算任务的调试,保证应用程序的可靠性和稳定性。
本实施例中,步骤S1中具体将包括目标GPDSP应用程序中数据准备、控制逻辑以及任务管理等部分划分为主体框架部分,以及将目标GPDSP应用程序中需占用指定时间的核心算法、计算任务划分为核心计算部分,主体框架部分、核心算法部分的划分具体可根据实际需求进行设定。具体首先对待实现的目标GPDSP应用程序进行功能划分,以分别由CPU端程序、DSP端程序来实现,其中GPDSP程序的主体框架(如数据准备、控制逻辑、任务管理等)采用CPU端程序实现,占主要计算时间的核心算法或计算任务采用DSP端程序实现,CPU端程序、DSP端程序分别独立构建,DSP端程序可以由DSP支持的编程语言实现,能够便于最大限度的发挥出GPDSP中多核DSP的峰值计算性能,CPU端程序可以由CPU支持的编程语言实现,通过CPU端的编译器完成编译,CPU端不需要关注DSP底层的体系结构和硬件细节,只需要关注调用DSP端程序计算所需要的接口参数。
本实施例中,步骤S2的具体步骤为:DSP程序模块通过DSP端的编译器或汇编器编译成二进制可执行代码,得到编译后DSP程序模块;CPU程序模块通过CPU端的编译器完成编译,得到编译后CPU程序模块,最终将编译后DSP程序模块、编译后CPU程序模块在CPU的编译环境下统一链接为单芯片的GPDSP程序可执行代码,得到单芯片GPDSP程序。即将DSP端的所有程序综合成一个可执行程序代码,通过DSP端的编译器或汇编器编译成二进制可执行代码提供给CPU端程序调用,CPU端程序调用的即是DSP端程序的二进制可执行代码,最终在CPU的编译环境下再统一链接为单芯片的GPDSP程序可执行代码,实现GPDSP中多核并行计算的统一并行编程。
本实施例中,步骤S3中调用DSP程序模块时,具体通过CPU程序模块根据所需执行的计算任务,将DSP程序模块以及DSP程序模块计算所需的参数、数据传输到DSP核指定位置处,启动DSP核运行DSP程序模块,直到DSP程序模块完成计算。CPU端程序在运行的过程中,通过调用DSP端程序完成占主要计算时间的核心算法和计算任务,CPU端程序调用DSP端程序的实现方式即是将DSP端程序的二进制可执行代码传输到DSP核的指定位置(如代码段起始地址)处,启动DSP核运行DSP端程序,直到检测到DSP端程序运行结束标志。
本实施例中,步骤S3的具体步骤为:
S31. 运行GPDSP程序,执行程序中CPU程序模块时,若需要调用DSP程序模块,转入执行步骤S32;
S32. CPU程序模块根据所需执行的计算任务,将DSP程序模块以及DSP程序模块计算所需的参数、数据传输到DSP核指定位置处;
S33. 启动DSP核运行,DSP程序模块由多核DSP并行执行,以并行完成CPU程序模块传过来的计算任务;
S34. 当CPU程序模块检测到DSP程序模块的计算结束标志时,退出当前计算;继续执行CPU程序模块,若需要调用DSP程序模块,返回执行步骤S32,直到全部计算任务运行结束。
由上述步骤可实现面向GPDSP的多核并行计算,CPU端程序在运行的过程中,通过调用DSP端程序完成占主要计算时间的核心算法和计算任务,在DSP端由多核DSP并行执行核心计算任务,能够结合GPDSP的结构体系特性充分发挥GPDSP的多核性能。
本实施例中,步骤S32的具体步骤为:
S321. 预先将GPDSP中的DSP核内存地址空间划分为用于存储计算所需参数数据的参数段、用于存储程序代码的代码段以及用于存储计算所需数据的数据段;
S322. 调用DSP程序模块时,CPU程序模块将计算所需参数数据传递到DSP端的参数段,将DSP端的DSP程序模块的程序代码传递到代码段,以及将DSP程序模块计算所需数据传递到数据段。
本实施例中,步骤S322中具体将计算所需参数数据传递到DSP端的参数段的起始地址PARA_ADDR,将DSP端的DSP程序模块的程序代码传递到代码段的起始地址CODE_ADDR,以及将DSP程序模块计算所需数据传递到数据段的起始地址DATA_ADDR,并在完成传输后,在指定的程序运行状态地址写入程序计算开启标志。
本实施例实现CPU端的CPU程序模块调用DSP端的DSP程序模块,具体先将GPDSP的DSP核内存地址空间按照实际程序需求划分为不交叉的三部分:参数段,起始地址为PARA_ADDR,长度为PARA_LEN;代码段,起始地址为CODE_ADDR,长度为CODE_LEN;数据段,起始地址为DATA_ADDR,长度为DATA_LEN;然后由CPU端程序传递DSP端程序计算所需要的接口参数,其中将DSP端程序计算所需要的参数数据传递到DSP端存放参数的起始地址PARA_ADDR,将DSP端程序代码传递到DSP端存放代码的起始地址CODE_ADDR,将DSP端程序计算所需的数据传递到DSP端存放数据的起始地址DATA_ADDR,完成传输后,在指定的程序运行状态地址写入程序计算开启标志,并启动DSP核运行。
本实施例启动DSP核运行后,每个核心算法和计算任务的DSP端程序由多核DSP采用共享数据的并行计算方法,并行完成CPU端程序传过来的计算任务,步骤S33的具体步骤为:
S331. 预先在DSP程序模块中构建入口程序子模块以及对应不同计算子任务的多个DSP子程序模块,各个DSP子模块对应由不同的DSP核执行,入口程序子模块包括每个DSP核均需要执行的入口程序,由入口程序子模块读取各DSP核的ID值,并根据读取到的各ID值分别跳转到对应各个DSP核的DSP子程序模块;
S332. 启动各DSP核运行时,各DSP核并行执行对应的DSP子程序模块,以分别读取CPU程序模块传送的参数数据、计算所需数据以及读取的DSP核的ID值,并分别加载各DSP核所需要的数据执行对应计算任务;
S333. 完成当前所有计算任务后,在指定的程序运行状态地址STATE_ADDR写入程序计算结束标志。
本实施例中,步骤S332具体各DSP子模块读取存放在参数段的起始地址PARA_ADDR中参数数据、数据段的起始地址DATA_ADDR中数据以及DSP核的ID值,并分别计算目标DSP核的计算任务所对应的数据起始地址、数据长度。
在具体应用实施例中,各个DSP核实现并行计算流程为:
a)在DSP端将每个核心算法和计算任务的DSP端程序综合成一个可执行程序代码;设GPDSP包含的DSP核数量为n,DSP端程序代码包含n+1个子代码段:子代码段0(INIT)为DSP端程序代码的运行入口代码,子代码段1(core1),子代码段2(core2),…,子代码段n(coren)分别为核DSP1,DSP2,…,DSPn上运行的程序代码;
b)DSP端程序代码的子代码段0(INIT)是每个DSP核都需要执行的入口代码,该子代码段读取DSP核的ID值,根据DSP核的ID值分别跳转到各个DSP核的子代码段1(core1),子代码段2(core2),…,子代码段n(coren);
c)各个DSP核的程序代码采用共享数据的方法进行并行计算,各个DSP核的程序代码分别读取存放在参数段起始地址PARA_ADDR的参数数据、数据段起始地址DATA_ADDR中数据和读取的DSP核的ID值,分别计算本DSP核计算任务所在的数据起始地址和数据长度,各个DSP核的程序代码分别加载本DSP核计算所需要的数据执行本核的计算子任务。
本实施例中,步骤S33中多核并行执行时,还包括各个DSP核采用基于GPDSP的DSP核间硬件同步机制实现多核间的同步操作,以采用DSP支持的硬件同步机制进行多核DSP间的并行设计与优化,最大限度的发挥出GPDSP中多核DSP的峰值计算性能。
以下以在具体应用实施例中实现面向GPDSP的多核并行计算对本发明进行进一步说明:
首先生成GPDSP多核并行程序,如图2所示,具体流程包括:
步骤1:对待实现的GPDSP应用程序进行功能划分,以划分为CPU端程序(CPU端程序模块)和DSP端程序(DSP端程序模块)两部分;
步骤2:CPU端程序由CPU支持的编程语言实现,包括配置调用DSP端程序计算所需要的接口参数;
步骤3:DSP端程序由采用DSP支持的编程语言实现,包括:
步骤3.1:对DSP体系结构的指令级并行性、向量处理器阵列的向量化等进行充分优化;
步骤3.2:采用DSP支持的硬件同步机制进行多核DSP间的并行设计与优化,以最大限度的发挥出GPDSP中多核DSP的峰值计算性能;
步骤3.3:通过DSP端的编译器或汇编器编译成二进制可执行代码;
步骤4:使用CPU端编译器工具对CPU端的源代码和DSP端的二进制可执行代码进行统一编译和链接,最终生成统一的单芯片GPDSP可执行代码。
生成GPDSP多核并行程序后,执行GPDSP多核并行程序以实现多核并行计算,如图3所示,具体流程包括:
步骤1:GPDSP应用程序在CPU端启动;
步骤2:CPU端程序在运行的过程中,调用DSP端程序完成占主要计算时间的核心算法和计算任务;CPU端程序调用DSP端程序的实现方式是将DSP端程序的二进制可执行代码传输到DSP核的代码段起始地址,启动DSP核运行DSP端程序,直到检测到DSP端程序运行结束标志,详细步骤包括:
步骤2.1:CPU端程序将DSP端程序计算所需要的参数数据传递到DSP端存放参数的起始地址PARA_ADDR,将DSP端程序代码传递到DSP端存放代码的起始地址CODE_ADDR,将DSP端程序代码计算所需的数据传递到DSP端存放数据的起始地址DATA_ADDR,完成传输后,在指定的程序运行状态地址写入程序计算开启标志,并启动DSP核运行;
步骤2.2:DSP端程序由多核DSP采用共享数据的并行计算方法,并行完成CPU端程序传过来的计算任务;
步骤2.3:各个DSP核的程序代码分别读取存放在起始地址PARA_ADDR的参数数据、数据段起始地址DATA_ADDR中的数据和读取的DSP核的ID值,分别计算本DSP核计算任务所在的数据起始地址和数据长度,各个DSP核的程序代码分别加载本DSP核的所需要的数据执行本核的计算子任务;
步骤2.4:各个DSP核的程序代码采用GPDSP提供的DSP 核间硬件同步机制实现多核间的同步操作;
步骤2.5:DSP端程序代码完成计算任务后,由DSP1在指定的程序运行状态地址STATE_ADDR写入程序计算结束标志。
步骤3:当CPU端程序检测到DSP端程序计算结束标志时,DSP核退出当前计算,继续执行CPU端程序,若运行中需要调用DSP端程序计算时,重新执行上述步骤2、步骤3,直到全部计算任务运行结束。
步骤4:计算完毕。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种面向GPDSP的多核并行计算实现方法,其特征在于,步骤包括:
S1. 将目标GPDSP应用程序划分为主体框架部分以及核心计算部分,在GPDSP中的CPU端构建实现所述主体框架部分的CPU程序模块,在DSP端构建实现所述核心计算部分的DSP程序模块,由所述CPU程序模块对所述DSP程序模块进行调用;
S2. 分别在DSP端对所述DSP程序模块、以及在CPU端对所述CPU程序模块进行编译,再将编译后DSP程序模块和CPU程序模块进行统一编译,得到单芯片GPDSP程序;
S3. 运行所述GPDSP程序,执行程序中所述CPU程序模块时,通过调用所述DSP程序模块执行指定的计算任务,并由GPDSP内多个DSP核并行进行计算。
2.根据权利要求1所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S1中具体将包括目标GPDSP应用程序中数据准备、控制逻辑以及任务管理部分划分为主体框架部分,以及将目标GPDSP应用程序中需占用指定时间的算法、计算任务划分为核心计算部分。
3.根据权利要求1所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S2的具体步骤为:所述DSP程序模块通过DSP端的编译器或汇编器编译成二进制可执行代码,得到编译后DSP程序模块;所述CPU程序模块通过CPU端的编译器完成编译,得到编译后CPU程序模块,将编译后DSP程序模块、编译后CPU程序模块在CPU的编译环境下统一链接为单芯片的GPDSP程序可执行代码,得到所述单芯片GPDSP程序。
4.根据权利要求1或2或3所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S3中调用所述DSP程序模块时,具体通过所述CPU程序模块根据所需执行的计算任务,将所述DSP程序模块以及所述DSP程序模块计算所需的参数、数据传输到DSP核指定位置处,启动DSP核运行所述DSP程序模块,直到所述DSP程序模块完成计算。
5.根据权利要求4所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S3的具体步骤为:
S31. 运行所述GPDSP程序,执行程序中所述CPU程序模块时,若需要调用所述DSP程序模块,转入执行步骤S32;
S32. 所述CPU程序模块根据所需执行的计算任务,将所述DSP程序模块以及所述DSP程序模块计算所需的参数、数据传输到DSP核指定位置处;
S33. 启动DSP核运行,所述DSP程序模块由多核DSP并行执行,以并行完成所述CPU程序模块传过来的计算任务;
S34. 当所述CPU程序模块检测到所述DSP程序模块的计算结束标志时,退出当前计算;继续执行所述CPU程序模块,若需要调用所述DSP程序模块,返回执行步骤S32,直到全部计算任务运行结束。
6.根据权利要求5所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S32的具体步骤为:
S321. 预先将GPDSP中的DSP核内存地址空间划分为用于存储计算所需参数数据的参数段、用于存储程序代码的代码段以及用于存储计算所需数据的数据段;
S322. 调用所述DSP程序模块时,所述CPU程序模块将计算所需参数数据传递到DSP端的所述参数段,将DSP端的所述DSP程序模块的程序代码传递到所述代码段,以及将所述DSP程序模块计算所需数据传递到所述数据段。
7.根据权利要求6所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S322中具体将计算所需参数数据传递到DSP端的所述参数段的起始地址PARA_ADDR,将DSP端的所述DSP程序模块的程序代码传递到所述代码段的起始地址CODE_ADDR,以及将所述DSP程序模块计算所需数据传递到所述数据段的起始地址DATA_ADDR,并在完成传输后,在指定的程序运行状态地址写入程序计算开启标志。
8.根据权利要求6所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S33的具体步骤为:
S331. 预先在所述DSP程序模块中构建入口程序子模块以及对应不同计算子任务的多个DSP子程序模块,各个DSP子模块对应由不同的DSP核执行,所述入口程序子模块包括每个DSP核均需要执行的入口程序,由所述入口程序子模块读取各DSP核的ID值,并根据读取到的各ID值分别跳转到对应各个DSP核的所述DSP子程序模块;
S332. 启动各DSP核运行时,各DSP核并行执行对应的所述DSP子程序模块,以分别读取所述CPU程序模块传送的参数数据、计算所需数据以及读取的DSP核的ID值,并分别加载各DSP核所需要的数据执行对应计算任务;
S333.完成当前所有计算任务后,在指定的程序运行状态地址STATE_ADDR写入程序计算结束标志。
9.根据权利要求8所述的面向GPDSP的多核并行计算实现方法,其特征在于:所述步骤S332具体分别读取存放在DSP核内参数段的起始地址PARA_ADDR中参数数据、数据段的起始地址DATA_ADDR中数据以及DSP核的ID值,并分别计算各DSP核的计算任务所对应的数据起始地址、数据长度。
10.根据权利要求6~9中任意一项所述的面向GPDSP的多核并行计算实现方法,其特征在于,所述步骤S33中多核并行执行时,还包括各个DSP核采用基于GPDSP的DSP 核间硬件同步机制实现多核间的同步操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810533351.7A CN108874727B (zh) | 2018-05-29 | 2018-05-29 | 一种面向gpdsp的多核并行计算实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810533351.7A CN108874727B (zh) | 2018-05-29 | 2018-05-29 | 一种面向gpdsp的多核并行计算实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874727A true CN108874727A (zh) | 2018-11-23 |
CN108874727B CN108874727B (zh) | 2019-09-10 |
Family
ID=64335467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810533351.7A Active CN108874727B (zh) | 2018-05-29 | 2018-05-29 | 一种面向gpdsp的多核并行计算实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874727B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656566A (zh) * | 2018-12-14 | 2019-04-19 | 北京中科寒武纪科技有限公司 | 异构计算系统可执行文件获取方法、运行方法及相关产品 |
CN111274996A (zh) * | 2020-02-14 | 2020-06-12 | 深圳英飞拓智能技术有限公司 | 人脸图片特征比对方法、装置、计算机设备及存储介质 |
CN111522600A (zh) * | 2020-04-15 | 2020-08-11 | 中国电子科技集团公司第三十八研究所 | 一种在dsp上的异构计算框架构建方法及系统 |
CN112947932A (zh) * | 2021-02-24 | 2021-06-11 | 上海商汤智能科技有限公司 | 对编译过程中的向量化进行优化的方法、装置及电子设备 |
CN112969999A (zh) * | 2019-01-31 | 2021-06-15 | 宝马股份公司 | 用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统 |
CN113721984A (zh) * | 2021-09-02 | 2021-11-30 | 中国人民解放军国防科技大学 | 一种解耦合的gpdsp汇编图形化方法及系统 |
CN112947932B (zh) * | 2021-02-24 | 2024-06-07 | 上海商汤智能科技有限公司 | 对编译过程中的向量化进行优化的方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923492A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 面向嵌入式异构多核上执行动态分配指令的方法 |
CN103116513A (zh) * | 2012-07-13 | 2013-05-22 | 北京时代民芯科技有限公司 | 一种异构多核处理器编译器 |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104572256A (zh) * | 2013-10-29 | 2015-04-29 | 中国石油化工股份有限公司 | 一种地震处理多核异构并行模式自适应匹配通用计算模型 |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
CN107656773A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种多核dsp启动方法 |
-
2018
- 2018-05-29 CN CN201810533351.7A patent/CN108874727B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923492A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 面向嵌入式异构多核上执行动态分配指令的方法 |
CN103116513A (zh) * | 2012-07-13 | 2013-05-22 | 北京时代民芯科技有限公司 | 一种异构多核处理器编译器 |
CN104572256A (zh) * | 2013-10-29 | 2015-04-29 | 中国石油化工股份有限公司 | 一种地震处理多核异构并行模式自适应匹配通用计算模型 |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104820613A (zh) * | 2015-05-27 | 2015-08-05 | 中国科学院自动化研究所 | 一种异构多核程序的编译方法 |
CN107656773A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种多核dsp启动方法 |
Non-Patent Citations (1)
Title |
---|
王占立: "面向GPDSP科学计算的高性能DMA传输方式的设计与实现", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656566A (zh) * | 2018-12-14 | 2019-04-19 | 北京中科寒武纪科技有限公司 | 异构计算系统可执行文件获取方法、运行方法及相关产品 |
CN109656566B (zh) * | 2018-12-14 | 2020-01-10 | 中科寒武纪科技股份有限公司 | 异构计算系统可执行文件获取方法、运行方法及相关产品 |
US11288050B2 (en) | 2018-12-14 | 2022-03-29 | Cambricon Technologies Corporation Limited | Method for acquiring executable file of heterogeneous computing system, method for running the heterogeneous computing system and related products |
CN112969999A (zh) * | 2019-01-31 | 2021-06-15 | 宝马股份公司 | 用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统 |
CN111274996A (zh) * | 2020-02-14 | 2020-06-12 | 深圳英飞拓智能技术有限公司 | 人脸图片特征比对方法、装置、计算机设备及存储介质 |
CN111274996B (zh) * | 2020-02-14 | 2023-06-09 | 深圳英飞拓仁用信息有限公司 | 人脸图片特征比对方法、装置、计算机设备及存储介质 |
CN111522600A (zh) * | 2020-04-15 | 2020-08-11 | 中国电子科技集团公司第三十八研究所 | 一种在dsp上的异构计算框架构建方法及系统 |
CN111522600B (zh) * | 2020-04-15 | 2023-05-16 | 中国电子科技集团公司第三十八研究所 | 一种在dsp上的异构计算框架构建方法及系统 |
CN112947932A (zh) * | 2021-02-24 | 2021-06-11 | 上海商汤智能科技有限公司 | 对编译过程中的向量化进行优化的方法、装置及电子设备 |
CN112947932B (zh) * | 2021-02-24 | 2024-06-07 | 上海商汤智能科技有限公司 | 对编译过程中的向量化进行优化的方法、装置及电子设备 |
CN113721984A (zh) * | 2021-09-02 | 2021-11-30 | 中国人民解放军国防科技大学 | 一种解耦合的gpdsp汇编图形化方法及系统 |
CN113721984B (zh) * | 2021-09-02 | 2023-08-15 | 中国人民解放军国防科技大学 | 一种解耦合的gpdsp汇编图形化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108874727B (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874727B (zh) | 一种面向gpdsp的多核并行计算实现方法 | |
Jablin et al. | Automatic CPU-GPU communication management and optimization | |
Betkaoui et al. | Comparing performance and energy efficiency of FPGAs and GPUs for high productivity computing | |
CN103714039B (zh) | 通用计算数字信号处理器 | |
Ma et al. | Optimizing tensor contraction expressions for hybrid CPU-GPU execution | |
JPH01108638A (ja) | 並列化コンパイル方式 | |
JPWO2013065687A1 (ja) | プロセッサシステム及びアクセラレータ | |
Coarfa et al. | Co-array Fortran performance and potential: An NPB experimental study | |
Huber et al. | Efficient execution of OpenMP on GPUs | |
Noaje et al. | Source-to-source code translator: OpenMP C to CUDA | |
Yang et al. | A unified optimizing compiler framework for different GPGPU architectures | |
Samadi et al. | Paragon: Collaborative speculative loop execution on gpu and cpu | |
Holk et al. | Declarative parallel programming for GPUs | |
Moses et al. | Scalable automatic differentiation of multiple parallel paradigms through compiler augmentation | |
Thies et al. | PHIST: a pipelined, hybrid-parallel iterative solver toolkit | |
Rasch et al. | dOCAL: high-level distributed programming with OpenCL and CUDA | |
Cao et al. | Mixed model universal software thread-level speculation | |
Pereira et al. | Extending OpenACC for efficient stencil code generation and execution by skeleton frameworks | |
Katel et al. | High performance GPU code generation for matrix-matrix multiplication using MLIR: some early results | |
Hayashi et al. | Exploring compiler optimization opportunities for the OpenMP 4.× accelerator model on a POWER8+ GPU platform | |
Kim et al. | Design evaluation of opencl compiler framework for coarse-grained reconfigurable arrays | |
CN112558977A (zh) | 面向异构众核后端基于代价模型的多面体优化方法 | |
Berger et al. | Assessment of barrier implementations for fine-grain parallel regions on current multi-core architectures | |
Rasch et al. | OCAL: An Abstraction for Host-Code Programming with OpenCL and CUDA | |
Kwon et al. | MPI backend for an automatic parallelizing compiler |
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 |