CN108874727A - 一种面向gpdsp的多核并行计算实现方法 - Google Patents

一种面向gpdsp的多核并行计算实现方法 Download PDF

Info

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
Application number
CN201810533351.7A
Other languages
English (en)
Other versions
CN108874727B (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201810533351.7A priority Critical patent/CN108874727B/zh
Publication of CN108874727A publication Critical patent/CN108874727A/zh
Application granted granted Critical
Publication of CN108874727B publication Critical patent/CN108874727B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

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的多核并行计算实现方法
技术领域
本发明涉及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 核间硬件同步机制实现多核间的同步操作。
CN201810533351.7A 2018-05-29 2018-05-29 一种面向gpdsp的多核并行计算实现方法 Active CN108874727B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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启动方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
王占立: "面向GPDSP科学计算的高性能DMA传输方式的设计与实现", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 *

Cited By (12)

* Cited by examiner, † Cited by third party
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