CN111522600B - 一种在dsp上的异构计算框架构建方法及系统 - Google Patents
一种在dsp上的异构计算框架构建方法及系统 Download PDFInfo
- Publication number
- CN111522600B CN111522600B CN202010294972.1A CN202010294972A CN111522600B CN 111522600 B CN111522600 B CN 111522600B CN 202010294972 A CN202010294972 A CN 202010294972A CN 111522600 B CN111522600 B CN 111522600B
- Authority
- CN
- China
- Prior art keywords
- dsp
- kernel
- kernel function
- host
- readflag
- 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.)
- Active
Links
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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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
- G06F15/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种在DSP上的异构计算框架构建方法及系统,包括;S1、开发Kernel函数;S2、在DSP与主机的共享存储器中创建共享标志Flag;S3、创建一个Kernel信息表;S4、开发、编译控制程序并编译成可执行程序B;S5、读取Kernel信息表,执行异构计算框架程序。本发明通过离线编译和预先下载程序可以让DSP在执行阶段就处于就绪状态,将对Kernel函数的编译和加载提前完成,提高了运行时效率;并且采用共享标志Flag来同步主机和DSP之间的程序,软硬件开销小,易于实现;且对设备DSP的软件环境要求低,不需要提供动态加载执行的能力也可以实现异构计算框架。
Description
技术领域
本发明涉及嵌入式异构计算技术领域,具体而言,本发明涉及一种在DSP上的异构计算框架构建方法及系统。
背景技术
数字信号处理器DSP在雷达、自动控制、航空航天、医疗、音频处理和人工智能等领域应用广泛,实际工作中,比如雷达制造,或者是实现工厂生产线的自动化控制,数字信号处理器DSP都有着及其重要的作用,同时为提升其通用性而出现了由DSP和CPU构成的异构计算平台。
当前,使用异构多处理器搭建异构计算平台已成为嵌入式计算领域的重要趋势。这种异构计算平台整合了多种处理器类型,将控制密集型与计算密集型程序有效分离,分别部署到通用处理器和专用计算设备上执行,大大提高了系统的灵活性和资源分配的合理性。例如,CPU和DSP构成的异构计算平台在音频处理领域中得到广泛应用;CPU和FPGA构成的异构计算平台在高性能数据采集和数据处理设备中得到广泛应用;CPU和GPU构成的异构计算平台在图像处理领域和人工智能领域得到广泛应用。
异构计算框架是支持异构计算平台并行编程的软件框架,是决定异构计算平台可用性和效率的重要因素。目前已有OpenCL等支持GPU、DSP及FPGA的具体编程框架实现。一般而言,异构计算框架将异构计算平台抽象为一个主机(Host)和多个设备(Device)组成。主机一般是通用中央处理器CPU,用于管理设备,负责控制程序主体执行;设备一般是数字信号处理器DSP、图形处理器GPU或可编程逻辑电路FPGA,负责执行计算密集型的程序,即Kernel(核心)代码。主机程序通过调用运行时API函数来控制执行过程,并将以Kernel(核心)函数为组织形式的Kernel代码在线下载到DSP等设备上,在设备所有计算资源上并行执行,分别对不同的输入数据进行处理。
以OpenCL为代表的异构计算框架通常需要在执行的过程中动态完成对Kernel代码的编译、加载和运行,其过程包括:在主机上将Kernel代码编译成设备上的可执行程序,然后将可执行程序和所需数据搬移到设备上,并启动Kernel代码的执行,最终等待执行结束后将结果数据搬回主机的内存。一方面,由于主机需要从全局掌握Kernel函数的信息,因此通常用主机来在线编译Kernel函数,这会导致在动态执行过程中产生额外的时间和空间开销;另一方面,由于Kernel代码被动态加载到设备上执行,要求设备具备动态加载和执行程序的能力,而以数字信号处理器DSP为代表的很多嵌入式领域处理器并不具备该能力,这会导致嵌入式处理器无法适用异构计算框架中动态执行的场景。
发明内容
本发明所要解决的技术问题在于提供一种在DSP上的异构计算框架构建方法及系统,以解决动态完成对Kernel代码的编译、加载等降低运行时效率的问题。
本发明通过以下技术手段实现解决上述技术问题的:
一种在DSP上的异构计算框架构建方法,包括以下步骤;
S1、开发DSP上将要执行的Kernel函数,并进行离线编译和预先下载;
S2、在DSP与主机的共享存储器中创建共享标志Flag;
S3、基于所述共享标志Flag,将所有Kernel函数创建一个Kernel信息表,以文件的形式保存;
S4、开发、编译主机上执行的控制程序,并将控制程序编译成可执行程序B;
S5、利用可执行程序B读取Kernel信息表,并在主机与DSP的异构平台上开始执行异构计算框架程序。
通过离线编译和预先下载程序可以让DSP在执行阶段就处于就绪状态,将对Kernel函数的编译和加载提前完成,提高了运行时效率,减少了通常异构计算实现中的动态编译和加载过程。
作为本发明进一步的方案:所述步骤S1还包括将编写的源文件进行离线编译和预先下载;与DSP运行时的程序一起构成DSP上可加载执行的可执行程序A;
DSP预先进行可执行程序A的加载,使DSP处于就绪状态,并等待主机的通知,准备执行相应的Kernel函数。
作为本发明进一步的方案:所述共享标志Flag由ReadFlag和WriteFlag两个全局变量组成,存储在共享存储器中。
作为本发明进一步的方案:所述控制程序具备完成输入数据的准备和调用设备DSP上执行的Kernel函数等功能;通过主机编译器将控制程序编译成主机上的可执行程序B。
作为本发明进一步的方案:所述步骤S5包括以下步骤;
S51、所述可执行程序B读取Kernel信息表文件,获取Kernel函数对应的共享标志Flag的位置信息和输入缓冲区信息、输出缓冲区信息;
S52、通过查找Kernel函数对应的表项,获得共享标志Flag索引;
S53、主机准备好Kernel函数所需要的输入数据,将输入数据传输至输入缓冲区地址,然后在ReadFlag中对应的位置位写入1,以通知DSP调度执行相应的Kernel函数;
S54、主机检测到WriteFlag中对应的位置位为1,表示该Kernel函数已经执行完毕;从输出缓冲区读取输出数据,完成本次Kernel函数的调用过程;完成本次Kernel函数的调用后,返回步骤S52并继续执行步骤S52,直至所有核函数调用完结束。
作为本发明进一步的方案:所述通知DSP调度执行相应的Kernel函数;
为ReadFlag值发生改变这一中断事件注册一个中断服务程序;中断服务程序以非阻塞方式读取ReadFlag的值;判断被写入1的位置,调用该位置所对应的的Kernel函数;
当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后WriteFlag中对应的位置位写入1。
作为本发明进一步的方案:所述通知DSP调度执行相应的Kernel函数还包括;
在DSP上使用操作系统启动一个守护任务Task_DSPDAEMON;守护任务Task_DSPDAEMON以反复循环的查询方式执行,以阻塞方式读取ReadFlag的值;判断被写入1的位置后,调用该位置所对应的的Kernel函数;该Kernel函数执行结束后,将ReadFlag中对应置1的位清零,然后WriteFlag中对应的位置位写入1。
作为本发明进一步的方案:所述通知DSP调度执行相应的Kernel函数还包括;
在DSP操作系统上为每个Kernel函数启动一个任务C,每个任务C都以阻塞方式读取ReadFlag的值,如果ReadFlag中被置1的位置正好对应本任务C对应的Kernel函数,则调用该Kernel函数执行。当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后向WriteFlag中对应的位置位写入1。
一种基于所述的在DSP上的异构计算框架构建方法的构建系统,其特征在于,包括;
开发模块,用于开发DSP上将要执行的Kernel函数;
创建模块,用于在DSP与主机的共享存储器中创建共享标志Flag;
信息表模块,用于基于所述共享标志Flag,将所有Kernel函数创建一个Kernel信息表,以文件的形式保存;
开发编译模块,用于开发、编译主机上执行的控制程序,并将控制程序编译成可执行程序B;
执行模块,用于利用可执行程序B读取Kernel信息表,在主机与DSP的异构平台上开始执行异构计算框架程序。
本发明的优点在于:
1、本发明可以不再需要对设备上执行的Kernel函数进行在线编译和动态加载执行,通过离线编译和预先下载程序可以让DSP在执行阶段就处于就绪状态,将对Kernel函数的编译和加载提前完成,提高了运行时效率和易用性,减少了通常异构计算实现中的动态编译和加载过程。
2、本发明采用共享标志Flag来同步主机和DSP之间的程序,执行简单直接,软硬件开销小,易于实现。使用本发明中描述的方法对设备DSP的软件环境要求低,不需要提供动态加载执行的能力也可以实现异构计算框架。
附图说明
图1为本发明实施例1的流程图。
图2为本发明实施例1的输入输出缓冲区和输出缓冲区数据格式图;
图3本发明实施例1的Kernel信息表文件数据格式图;
图4为本发明实施例1调用Kernel函数的流程方框图。
图5为本发明实施例1另一种调用Kernel函数的流程方框图。
图6为本发明实施例1另一种调用Kernel函数的流程方框图。
图7为本发明实施例2的结构示意图。
图中,301-开发模块,302-创建模块,303-信息表模块,304-开发编译模块,305-执行模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1,图1为本发明实施例1的流程图;一种在DSP上的异构计算框架构建方法,包括以下步骤:
S1、开发DSP上将要执行的Kernel(核心)函数,并进行离线编译和预先下载;
进一步的,DSP上执行的Kernel函数可能有多个;对需要执行的Kernel函数进行离线编译和链接,与DSP运行时程序一起构成DSP上可加载执行的可执行程序A;
示例性的,本实施例中,所开发的两个核函数分别为:
1、FFT32(int N,float*inputA,float*inputW,float*outputA);
2、FIR(int M,int*inputB,int*outputB);
其中,FFT/FIR运算是数字信号处理领域的常见算法;int表示整形,float表示浮点型,
FFT32函数表示一个进行32位浮点数组的快速傅里叶变换计算的程序,参数N表示将要进行FFT运算的数组长度,参数inputA和inputW是浮点型输入数组,参数outputA是浮点型输出数组;
FIR函数表示一个进行整形数组的有限冲激响应滤波计算的程序,参数inputB是整数型输入数组,outputB是整数型输出数组,参数M表示将要进行FIR运算的数组长度。
DSP预先进行可执行程序A的加载,使DSP处于就绪状态,并等待主机的通知,准备执行相应的Kernel函数;
上述Kernel函数是由使用本方法的用户自行设计开发的,并不属于本发明的方法要涵盖的范畴;
S2、在DSP与主机的共享存储器中创建共享标志Flag,
共享标志Flag由ReadFlag和WriteFlag两个全局变量组成,存储在共享存储器中;在本实施例中可以采用32位整型数来存储ReadFlag和WriteFlag两个全局变量。
所述ReadFlag和WriteFlag分别用于存储读标志和写标志。
需要注意的是,创建共享标志Flag为现有技术,此处不再详细描述,而使用何种类型来保存共享标志Flag是根据应用场景中Kernel函数的种类来确定的,可以选择采用32/64/128位的整型数来存储,当Kernel函数种类较多时,例如超过128位时也可以使用多个整型数组成的结构体来保存。
示例性的,在本实施例中,ReadFlag和WriteFlag中第1位对应Kernel函数FFT32,第2位对应Kernel函数FIR。
S3、基于所述共享标志Flag,对所有Kernel函数创建一个Kernel信息表,以文件的形式保存;如图3所示,图3本发明实施例1的Kernel信息表文件数据格式图。
针对本实施例中的两个Kernel函数创建一个Kernel信息表,如下:
其中FFT32函数对应的函数名为字符串“FFT32”,对应的共享标志Flag中的第1位,输入缓冲区地址和输出缓冲区地址分别为0x1000,0x2000;FIR函数对应的函数名为字符串“FIR”,对应的共享标志Flag中的第2位,输入和输出缓冲区地址分别为0x3000,0x4000。
输入缓冲区、输出缓冲区可以采用如图2所示的数据结构来进行存储;图2为本发明实施例1的输入输出缓冲区和输出缓冲区数据格式图;且输输入缓冲区、输出缓冲区地址对应缓冲区在DSP内存中保存的位置。
需要注意的是,各个Kernel函数输入缓冲区、输出缓冲区的地址可以通过读取DSP上离线编译产生的可执行程序A的符号表,从符号表信息中抽取相应Kernel函数的相关信息产生。这一步工作可以手工完成或借助工具自动完成,且该工作为现有技术,不在本发明的保护范围内,此处不再详细描述。
将建立的Kernel信息表按照图2所示的数据格式写入文件,供CPU执行时使用。
步骤S4、开发、编译主机上执行的控制程序;
开发主机上执行的控制程序,所述控制程序具备完成输入数据的准备和调用设备DSP上执行的Kernel函数等功能;通过主机编译器将控制程序编译成主机上的可执行程序B;
步骤S5、在主机与DSP的异构平台上开始执行异构计算框架程序;执行过程如下:
步骤S51、所述可执行程序B读取Kernel信息表文件,获取Kernel函数对应的共享标志Flag的位置信息和输入缓冲区信息、输出缓冲区信息;
具体的,本实施例中,所述可执行程序B读取所述Kernel信息表,获得需要调用的两个Kernel函数对应的共享标志Flag的位置信息和输入缓冲区信息、输出缓冲区信息;
步骤S52、通过查找Kernel函数对应的表项,获得共享标志Flag索引;
步骤S53、主机准备好Kernel函数所需要的输入数据,将输入数据传输至输入缓冲区地址,然后在ReadFlag中对应的位置位写入1,以通知DSP执行相应的Kernel函数;
具体的,本实施例中,DSP运行时程序采用以下三种方式之一来实现对Kernel函数的调度执行:
如图4,图4为本发明实施例1调用Kernel函数的流程方框图,方式1:前后台方式;在DSP上使用中断服务程序完成对Kernel函数的调用;
如图,为ReadFlag值发生改变这一中断事件注册一个中断服务程序;中断服务程序以非阻塞方式读取ReadFlag的值;判断被写入1的位置,调用该位置所对应的的Kernel函数,示例性的,本实施例中,如果是第1位则调用FFT32函数,如果是第2位则调用FIR函数;
当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后WriteFlag中对应的位置位写入1。
如图5,图5为本发明实施例1另一种调用Kernel函数的流程方框图,方式2:操作系统守护任务方式;
在DSP上使用操作系统启动一个守护任务Task_DSPDAEMON;守护任务Task_DSPDAEMON以反复循环的查询方式执行,以阻塞方式读取ReadFlag的值;判断被写入1的位置后,调用该位置所对应的的Kernel函数,示例性的,本实施例中,如果是第1位则调用FFT32函数,如果是第2位则调用FIR函数;该Kernel函数执行结束后,将ReadFlag中对应置1的位清零,然后WriteFlag中对应的位置位写入1;
如图6,图6为本发明实施例1另一种调用Kernel函数的流程方框图,方式3:操作系统多任务调度方式;
在DSP操作系统上为每个Kernel函数启动一个任务C;
每个任务C都以阻塞方式读取ReadFlag的值,如果ReadFlag中被置1的位置正好对应本任务C对应的Kernel函数,则调用该Kernel函数执行。当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后向WriteFlag中对应的位置位写入1;
步骤S54、主机检测到WriteFlag中对应的位为1,表示该Kernel函数已经执行完毕;从输出缓冲区读取输出数据,完成本次Kernel函数的调用过程;
完成本次Kernel函数的调用后,返回步骤S52并继续执行步骤S52,直至所有核函数调用完结束。
实施例2
图7为本发明实施例2的结构示意图,如图7,一种基于所述的一种在DSP上的异构计算框架构建方法的构建系统,包括;
开发模块,用于开发DSP上将要执行的Kernel函数;
还包括将编写的源文件进行离线编译和预先下载;与DSP运行时的程序一起构成DSP上可加载执行的可执行程序A;
DSP预先进行可执行程序A的加载,使DSP处于就绪状态,并等待主机的通知,准备执行相应的Kernel函数;
创建模块,用于在DSP与主机的共享存储器中创建共享标志Flag;
所述共享标志Flag由ReadFlag和WriteFlag两个全局变量组成,存储在共享存储器中;
信息表模块,用于基于所述共享标志Flag,将所有Kernel函数创建一个Kernel信息表,以文件的形式保存;
开发编译模块,用于开发、编译主机上执行的控制程序,并将控制程序编译成可执行程序B;
所述控制程序具备完成输入数据的准备和调用设备DSP上执行的Kernel函数等功能;通过主机编译器将控制程序编译成主机上的可执行程序B。
执行模块,用于利用可执行的程序B读取Kernel信息表,在主机与DSP的异构平台上开始执行异构计算框架程序;还包括以下步骤:
S51、所述可执行程序B读取Kernel信息表文件,获取Kernel函数对应的共享标志Flag的位置信息和输入缓冲区信息、输出缓冲区信息;
S52、通过查找Kernel函数对应的表项,获得共享标志Flag索引;
S53、主机准备好Kernel函数所需要的输入数据,将输入数据传输至输入缓冲区地址,然后在ReadFlag中对应的位置位写入1,以通知DSP调度执行相应的Kernel函数;
所述通知DSP调度执行相应的Kernel函数包括以下三种方法;
1)、为ReadFlag值发生改变这一中断事件注册一个中断服务程序;中断服务程序以非阻塞方式读取ReadFlag的值;判断被写入1的位置,调用该位置所对应的的Kernel函数;
当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后WriteFlag中对应的位置位写入1;
2)、在DSP上使用操作系统启动一个守护任务Task_DSPDAEMON;守护任务Task_DSPDAEMON以反复循环的查询方式执行,以阻塞方式读取ReadFlag的值;判断被写入1的位置后,调用该位置所对应的的Kernel函数;该Kernel函数执行结束后,将ReadFlag中对应置1的位清零,然后WriteFlag中对应的位置位写入1。
3)、在DSP操作系统上为每个Kernel函数启动一个任务C,每个任务C都以阻塞方式读取ReadFlag的值,如果ReadFlag中被置1的位置正好对应本任务C对应的Kernel函数,则调用该Kernel函数执行。当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后向WriteFlag中对应的位置位写入1;
S54、主机检测到WriteFlag中对应的位置位为1,表示该Kernel函数已经执行完毕;从输出缓冲区读取输出数据,完成本次Kernel函数的调用过程;完成本次Kernel函数的调用后,返回步骤S52并继续执行步骤S52,直至所有核函数调用完结束。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种在DSP上的异构计算框架构建方法,其特征在于,包括以下步骤;
S1、开发DSP上将要执行的Kernel函数,并进行离线编译和预先下载;
S2、在DSP与主机的共享存储器中创建共享标志Flag;
S3、基于所述共享标志Flag,将所有Kernel函数创建一个Kernel信息表,以文件的形式保存;
S4、开发、编译主机上执行的控制程序,并将控制程序编译成可执行程序B;
S5、利用可执行程序B读取Kernel信息表,并在主机与DSP的异构平台上开始执行异构计算框架程序;所述步骤S5包括以下步骤;
S51、所述可执行程序B读取Kernel信息表文件,获取Kernel函数对应的共享标志Flag的位置信息和输入缓冲区信息、输出缓冲区信息;
S52、通过查找Kernel函数对应的表项,获得共享标志Flag索引;
S53、主机准备好Kernel函数所需要的输入数据,将输入数据传输至输入缓冲区地址,然后在ReadFlag中对应的位置位写入1,以通知DSP调度执行相应的Kernel函数;
S54、主机检测到WriteFlag中对应的位为1,表示该Kernel函数已经执行完毕;从输出缓冲区读取输出数据,完成本次Kernel函数的调用过程;完成本次Kernel函数的调用后,返回步骤S52并继续执行步骤S52,直至所有核函数调用完结束。
2.根据权利要求1所述的在DSP上的异构计算框架构建方法,其特征在于,所述步骤S1还包括将编写的源文件进行离线编译和预先下载;与DSP运行时的程序一起构成DSP上可加载执行的可执行程序A;
DSP预先进行可执行程序A的加载,使DSP处于就绪状态,并等待主机的通知,准备执行相应的Kernel函数。
3.根据权利要求1所述的在DSP上的异构计算框架构建方法,其特征在于,所述共享标志Flag由ReadFlag和WriteFlag两个全局变量组成,存储在共享存储器中。
4.根据权利要求1所述的在DSP上的异构计算框架构建方法,其特征在于,所述步骤S4包括;
所述控制程序具备完成输入数据的准备和调用设备DSP上执行的Kernel函数功能;通过主机编译器将控制程序编译成主机上的可执行程序B。
5.根据权利要求1所述的在DSP上的异构计算框架构建方法,其特征在于,所述通知DSP调度执行相应的Kernel函数包括;
为ReadFlag值发生改变这一中断事件注册一个中断服务程序;中断服务程序以非阻塞方式读取ReadFlag的值;判断被写入1的位置,调用该位置所对应的Kernel函数;
当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后WriteFlag中对应的位置位写入1。
6.根据权利要求1所述的在DSP上的异构计算框架构建方法,其特征在于,所述通知DSP调度执行相应的Kernel函数还包括;
在DSP上使用操作系统启动一个守护任务Task_DSPDAEMON;守护任务Task_DSPDAEMON以反复循环的查询方式执行,以阻塞方式读取ReadFlag的值;判断被写入1的位置后,调用该位置所对应的Kernel函数;该Kernel函数执行结束后,将ReadFlag中对应置1的位清零,然后WriteFlag中对应的位置位写入1。
7.根据权利要求1所述的在DSP上的异构计算框架构建方法,其特征在于,所述通知DSP调度执行相应的Kernel函数还包括;
在DSP操作系统上为每个Kernel函数启动一个任务C;
每个任务C都以阻塞方式读取ReadFlag的值,如果ReadFlag中被置1的位置正好对应本任务C对应的Kernel函数,则调用该Kernel函数执行,当Kernel函数执行结束后,将对应ReadFlag中置1的位清零,然后向WriteFlag中对应的位置位写入1。
8.一种基于权利要求1-7任一所述的在DSP上的异构计算框架构建方法的构建系统,其特征在于,包括;
开发模块,用于开发DSP上将要执行的Kernel函数;
创建模块,用于在DSP与主机的共享存储器中创建共享标志Flag;
信息表模块,用于基于所述共享标志Flag,将所有Kernel函数创建一个Kernel信息表,以文件的形式保存;
开发编译模块,用于开发、编译主机上执行的控制程序,并将控制程序编译成可执行程序B;
执行模块,用于利用可执行程序B读取Kernel信息表,在主机与DSP的异构平台上开始执行异构计算框架程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010294972.1A CN111522600B (zh) | 2020-04-15 | 2020-04-15 | 一种在dsp上的异构计算框架构建方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010294972.1A CN111522600B (zh) | 2020-04-15 | 2020-04-15 | 一种在dsp上的异构计算框架构建方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522600A CN111522600A (zh) | 2020-08-11 |
CN111522600B true CN111522600B (zh) | 2023-05-16 |
Family
ID=71901153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010294972.1A Active CN111522600B (zh) | 2020-04-15 | 2020-04-15 | 一种在dsp上的异构计算框架构建方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522600B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016077393A1 (en) * | 2014-11-12 | 2016-05-19 | Xilinx, Inc. | Heterogeneous multiprocessor program compilation targeting programmable integrated circuits |
CN108107872A (zh) * | 2017-12-28 | 2018-06-01 | 北京翼辉信息技术有限公司 | 一种基于网络的dsp应用在线调试系统及调试方法 |
CN108874727A (zh) * | 2018-05-29 | 2018-11-23 | 中国人民解放军国防科技大学 | 一种面向gpdsp的多核并行计算实现方法 |
US10481814B1 (en) * | 2017-06-28 | 2019-11-19 | Xilinx, Inc. | Architecture for asynchronous memory transfer for kernels implemented in integrated circuits |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621438B2 (en) * | 2010-02-22 | 2013-12-31 | Red Hat, Inc. | Generating debug information on demand |
-
2020
- 2020-04-15 CN CN202010294972.1A patent/CN111522600B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016077393A1 (en) * | 2014-11-12 | 2016-05-19 | Xilinx, Inc. | Heterogeneous multiprocessor program compilation targeting programmable integrated circuits |
US10481814B1 (en) * | 2017-06-28 | 2019-11-19 | Xilinx, Inc. | Architecture for asynchronous memory transfer for kernels implemented in integrated circuits |
CN108107872A (zh) * | 2017-12-28 | 2018-06-01 | 北京翼辉信息技术有限公司 | 一种基于网络的dsp应用在线调试系统及调试方法 |
CN108874727A (zh) * | 2018-05-29 | 2018-11-23 | 中国人民解放军国防科技大学 | 一种面向gpdsp的多核并行计算实现方法 |
Non-Patent Citations (1)
Title |
---|
张翰 ; 李迪 ; 王世勇 ; .软PLC系统运行环境的设计.电子设计工程.2017,(08),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111522600A (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9626187B2 (en) | Transactional memory system supporting unbroken suspended execution | |
US8544022B2 (en) | Transactional memory preemption mechanism | |
JP2786574B2 (ja) | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 | |
EP2542973B1 (en) | Gpu support for garbage collection | |
JP4690988B2 (ja) | 持続的なユーザレベルスレッド用の装置、システムおよび方法 | |
US20080109795A1 (en) | C/c++ language extensions for general-purpose graphics processing unit | |
JP5906325B2 (ja) | トランザクションをサポートするコンピューターアーキテクチャにおけるコード特殊化のための例外を用いるプログラム及びコンピューティングデバイス | |
US20180157531A1 (en) | Technologies for dynamic acceleration of general-purpose code using hardware accelerators | |
JP5710434B2 (ja) | アシスト・ハードウエア・スレッドの拡張可能な状態追跡のための方法、情報処理システム、およびプロセッサ | |
EP2494468A2 (en) | Context-sensitive slicing for dynamically parallelizing binary programs | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
JP2021501947A (ja) | メモリ・ネットワーク・プロセッサ | |
US7620951B2 (en) | Hiding memory latency | |
US8095829B1 (en) | Soldier-on mode to control processor error handling behavior | |
WO2017127180A1 (en) | Random-access disjoint concurrent sparse writes to heterogeneous buffers | |
US20240045787A1 (en) | Code inspection method under weak memory ordering architecture and corresponding device | |
JP2014085839A (ja) | 並列実行機構及びその動作方法 | |
CN101425052B (zh) | 一种事务性内存的实现方法 | |
CN111522600B (zh) | 一种在dsp上的异构计算框架构建方法及系统 | |
TW201732565A (zh) | 用於迴圈不變性指令偵測及去除的方法和裝置 | |
US20230236878A1 (en) | Efficiently launching tasks on a processor | |
JP2023070069A (ja) | 仮想マシンにおけるユーザレベル割り込み | |
US20140136818A1 (en) | Fetch less instruction processing (flip) computer architecture for central processing units (cpu) | |
CN104166633B (zh) | 用于存储器访问保护的方法和系统 | |
TW201005649A (en) | Operating system fast run command |
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 |