掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Cache的多核DSP并行编程优化方法

文献发布时间:2023-06-19 18:37:28



技术领域

本发明属于多核处理器领域,具体涉及一种基于Cache的多核DSP并行编程优化方法。

背景技术

当前对于多核DSP并行程序的并行编程优化的方法主要包括以下几类:

(1)使用编译器提供的优化选项:部分编译器提供了一些直接影响或者控制程序优化的编译选项,通过合理地配置这些优化选项,可以达到提升程序运行效率的目的。

(2)改变代码的编排形式或调用方式:编译器提供了许多内联函数,内联函数的执行效率与汇编指令类似,可快速优化C代码。另外,SIMD(单指令多数据)也是一种提高数据处理效率的优化方式之一,例如,在实现单精度乘法操作时,可以将操作数以32位形式存储在64位寄存器组的高位部分或低位部分,使用一条双精度乘法指令,同时完成两对单精度数据的乘法。这种数据打包处理方式,在存取和计算数据时可以节省指令周期,提高代码的执行速度。

(3)改进C语言循环程序:软件流水化的目的就是在同一时刻,排满最大的可并行指令数,达到提升程序执行效率的目的,循环展开是将小循环的迭代展开,使得可能并行的指令数增加,形成较好的软件流水编排。另外,在多重循环的嵌套中,只有内层循环可以执行软件流水化。因此一般把多重循环的内循环展开。

(4)使用Cache提升程序性能:Cache的访问速度高于内存,因此在程序中开Cache,把经常访问的程序和数据放入缓存中,会提高程序的运行效率。一般程序会用到两级缓存,一级缓存是固定的,二级缓存可以配置。如果每次CPU要访问的数据都能直接从Cache中获得,则Cache的命中率高,程序执行的效率就高。因此,为了提高命中率,需要合理配置二级缓存的大小。L2空间可全部配置为Cache,但Cache的容量并非越大越好,要根据程序中的计算规模来定。Cache开的比较大,有时候对程序的执行效率并无明显提升,反而会影响L2空间SRAM容量的配置。

当前针对Cache大小的设置,一般按照经验值进行设定,或者进行多次次试验进行设定,按照经验值进行设定,可能无法获取合理的Cache大小,进行多次试验,会花费比较多的时间。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是如何提供一种基于Cache的多核DSP并行编程优化方法,以解决针对Cache大小的设置,一般按照经验值进行设定,或者进行多次次试验进行设定,按照经验值进行设定,可能无法获取合理的Cache大小,进行多次试验,会花费比较多的时间的问题。

(二)技术方案

为了解决上述技术问题,本发明提出一种基于Cache的多核DSP并行编程优化方法,该方法包括如下步骤:

S11、原始数据库的生成:分析多种并行算法包括的运算次数和循环次数,并尝试设定不同的Cache大小,运行既定的并行算法程序,得到运行时间;记录多种并行算法的运算次数及循环次数,以及运行时间最短的五次Cache大小的设定,将运行时间、运算次数和循环次数作为参数,Cache大小的设定作为查询结果存为一条数据;

S12、运用数据库进行新算法的Cache大小设定:计算并行化改造后的算法的运算次数及循环次数,在数据库中进行相应的搜索;

若存在相近的某一个参数设定,根据数据库中的Cache值,进行预定次数运算,从结果中取时间最短的Cache大小的设定;

若两个参数都存在相近的结果,但不在同一条目,则分别计算取最优值;

若运算次数及循环次数两者都比较接近,且在同一条目,搜索筛选出时间最短的预设数量个Cache大小,按照搜索结果进行Cache大小的设定,得到运行时间,从预设数量个搜索结果中取时间最短的Cache大小进行设定;

S13、更新数据库:若新算法的运算次数及循环次数在数据库中均无相近的值,则按照S11的方式将新算法的运算结果加入数据库中。

进一步地,循环次数包括单层循环次数或多层循环中内循环次数。

进一步地,所述步骤S12中,查询条件分别是运算次数和循环次数,但两个条件可能只能命中一个,根据查询到的结果,将Cache大小按照数据库中命中的条目的Cache大小进行设定,进行并行算法的并行计算,记录运行完成时间。

进一步地,所述步骤S12中,最优值是指运算次数和循环次数两个参数都命中了,但不是同样的条目,则需要根据所有命中条目的Cache大小设定Cache大小,看取哪个Cache大小的设定,运行既定并行算法所用时间最短。

进一步地,预设数量为3个。

进一步地,所述步骤S12中,预定次数为5次。

一种基于Cache的多核DSP并行编程优化方法,该方法包括如下步骤:

S21、数据库的搭建:计算相对成熟的并行化算法的运算次数及循环次数,并尝试设定不同的Cache值,取时间最短的五条数据进行记录,数据库条目以运算次数、循环次数、运行时间、Cache大小设定为一条数据;

S22、计算需设定Cache大小算法的运行次数、循环次数,并以这两个参数进行搜索;

S23、若只有一个参数找到相近的条目,按照记录的Cache大小的设定,进行预定次数运算,得到最优Cache大小的值进行设定,并将结果记录在数据库中;

S24、若有两个参数均找到相近的数值,但不在同一条目,按照S23分别计算两个参数,取最优值,并将结果记录在数据库中;

S25、若两个参数在同一条目中找到相近的值,则取时间最短的预设数量个Cache大小进行设定计算,得到运行时间,从预设数量个结果中取时间最短的Cache大小进行设定,并将结果记录在数据库中;

S26、若未找到对应参数相近的值,按照S21进行计算及记录更新数据库。

进一步地,预定次数为5次。

进一步地,预设数量为3个。

进一步地,所述步骤S24中,最优值是指运算次数和循环次数两个参数都命中了,但不是同样的条目,则需要根据所有命中条目的Cache大小设定Cache大小,看取哪个Cache大小的设定,运行既定并行算法所用时间最短。

(三)有益效果

本发明提出一种基于Cache的多核DSP并行编程优化方法,本发明提出一种基于数据库的Cache大小设定方法,来快速准确的定位Cache设定的大小,并通过前期一些基础算法的训练生成原始数据库,后续新的算法进行使用过程中,再根据新的数据更新数据库。随着数据库数据的不断增加,Cache大小设定的最优值也越来越准确。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。

随着信息技术的飞速发展,对数据信息的处理需求也在不断增长,仅通过提高单核处理器的性能,已经无法满足系统的实时性需求,因此多核处理器已成为后续处理器的发展方向,面向多核处理器的并行编程及优化方法也成为后续研究的热点,是提高多核处理器实际应用性能的关键。

本发明的基于Cache的多核DSP并行编程优化方法包括如下步骤:

S11、原始数据库的生成:分析多种并行算法包括的运算次数,以及单层循环次数或多层循环中内循环次数,并尝试设定不同的Cache大小,运行既定的并行算法程序,得到运行时间;记录多种并行算法的运算次数及循环次数,以及运行时间最短的五次Cache大小的设定,将运行时间、运算次数和循环次数作为参数,Cache大小的设定作为查询结果存为一条数据。某个实施例中,数据存储在数据库中,例如mysql数据库。

S12、运用数据库进行新算法的Cache大小设定:计算并行化改造后的算法的运算次数及单层循环或多层循环中内循环次数,在数据库中进行相应的搜索;

若存在相近的某一个参数设定,根据数据库中的Cache值,进行五次运算,从结果中取时间最短的Cache大小的设定;

若两个参数都存在相近的结果,但不在同一条目,则分别计算取最优值;

若运算次数及循环次数两者都比较接近,且在同一条目,搜索筛选出时间最短的三个Cache大小,按照搜索结果进行Cache大小的设定,得到运行时间,从三个搜索结果中取时间最短的Cache大小进行设定;

将上述三种情况的最优的结果记录在数据库中。

某个实施例中,查询条件分别是运算次数和循环次数,但两个条件可能只能命中一个,根据查询到的结果,将Cache大小按照数据库中命中的条目的Cache大小进行设定,进行并行算法的并行计算,记录运行完成时间。

某个实施例中,最优值是指运算次数和循环次数两个参数都命中了,但不是同样的条目,则需要根据所有命中条目的Cache大小设定Cache大小,看取哪个Cache大小的设定,运行既定并行算法所用时间最短。

S13、更新数据库:若新算法的运算次数及单层循环或多层循环中内循环次数在数据库中均无相近的值,则按照构造原始数据库的方式将新算法的运算结果加入数据库中。

本发明的基于Cache的多核DSP并行编程优化方法包括如下步骤:

S21、数据库的搭建:计算相对成熟的并行化算法的运算次数及循环次数,并尝试设定不同的Cache值,取时间最短的五条数据进行记录,数据库条目以运算次数、循环次数、运行时间、Cache大小设定为一条数据;

S22、计算需设定Cache大小算法的运行次数、循环次数,并以这两个参数进行搜索;

S23、若只有一个参数找到相近的条目,按照记录Cache大小的设定,进行五次运算,得到最优Cache大小的值进行设定,并将结果记录在数据库中;

S24、若有两个参数均找到相近的数值,但不在同一条目,按照S23分别计算两个参数,取最优值,并将结果记录在数据库中;

S25、若两个参数在同一条目中找到相近的值,则取时间最短的三个Cache大小进行设定计算,得到运行时间,从三个结果中取时间最短的Cache大小进行设定,并将结果记录在数据库中;

S26、若未找到对应参数相近的值,按照S21进行计算及记录更新数据库。

本发明提出一种基于数据库的Cache大小设定方法,来快速准确的定位Cache设定的大小,并通过前期一些基础算法的训练生成原始数据库,后续新的算法进行使用过程中,再根据新的数据更新数据库。随着数据库数据的不断增加,Cache大小设定的最优值也越来越准确。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

技术分类

06120115636021