System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种异构编译优化方法、设备及介质技术_技高网

一种异构编译优化方法、设备及介质技术

技术编号:44343810 阅读:3 留言:0更新日期:2025-02-18 20:57
本申请公开了一种异构编译优化的方法、设备及介质,涉及计算机软件技术领域,用于解决编译器如何准确合理地设置线程层次结构的问题。方法包括:编译器编译程序时,检测到优化线程结构的宏后,设定迭代次数阈值、动态变化的迭代耗时逼近阈值和目标线程访问耗时。查询GPU硬件参数确定初始线程块和网格参数值并编译程序,获取运行时线程访问耗时。对比该耗时与目标耗时、迭代次数阈值及动态阈值,若满足条件则执行迭代编译,调整线程块和网格参数值后重新编译。如此循环,直至得出优化的线程块和网格参数值,逼近目标线程访问耗时,优化线程层次结构,这种迭代调整线程块和网格大小的方式,大幅提升程序性能。

【技术实现步骤摘要】

本申请涉及计算机软件,尤其涉及一种异构编译优化方法、设备及介质


技术介绍

1、随着计算机图形处理与并行计算技术的飞速发展,cuda(compute unifieddevice architecture)作为nvidia推出的一种并行计算平台和编程模型,已经在科学计算、图像处理、机器学习等众多领域得到了广泛应用。cuda编译器通过允许开发者直接在nvidia gpu上编写程序,极大地提高了计算性能,使得原本需要长时间运行的复杂计算任务能够在短时间内完成。

2、然而,要充分发挥cuda程序的性能潜力,合理设置cuda kernel的线程层次结构(线程块大小和网格大小)至关重要。这两个参数直接决定了gpu上并行执行线程的组织方式和数量,对程序的执行效率和资源利用率有着显著影响。

3、但是,通常程序员需要根据具体问题和gpu硬件特性手动设置这些参数。这要求程序员具备深厚的cuda编程知识和对gpu架构的深入理解,增加了编程的复杂性和难度。同时,由于不同gpu型号之间的硬件特性存在差异,手动设置的参数往往难以在所有目标平台上都达到最优性能。因此,在cuda编程实践中,线程层次结构的手动设置已成为制约程序性能提升和可移植性的瓶颈之一。


技术实现思路

1、本申请实施例提供一种异构编译优化的方法、设备及介质,用于解决cuda编译器如何自动准确合理地设置线程层次结构的问题。

2、本申请实施例采用下述技术方案:

3、一方面,本申请实施例提供了一种异构编译优化的方法,该方法包括:在cuda编译器对cuda程序进行编译时,若cuda编译器检测到用于优化线程层次结构的宏定义,确定设定的迭代次数阈值、迭代耗时逼近动态阈值和目标线程访问耗时;迭代耗时逼近动态阈值在迭代过程中会发生变化,以使得cuda程序在运行时的线程访问耗时逐步逼近目标线程访问耗时;通过查询当前gpu的硬件参数值,确定初始的线程块参数值和网格参数值;硬件参数包括线程块最大线程数、gpu中流多处理器的数量;根据线程块参数值和网格参数值对cuda程序进行编译,得到运行时的线程访问耗时;根据线程访问耗时、目标线程访问耗时、迭代次数阈值和迭代耗时逼近动态阈值,确定是否执行迭代编译;若执行迭代编译,根据线程访问耗时对线程块参数值和网格参数值进行调整,根据调整线程块参数值与调整网络参数值,对cuda程序进行重新编译;循环执行上述重新编译过程,直至停止迭代编译,生成优化线程块参数值和优化网格参数值。

4、一个示例中,根据线程访问耗时、目标线程访问耗时、迭代次数阈值和迭代耗时逼近动态阈值,确定是否执行迭代编译,具体包括:在迭代次数小于迭代次数阈值时,将线程访问耗时与目标线程访问耗时进行对比;若线程访问耗时大于目标线程访问耗时,将线程访问耗时与迭代耗时逼近动态阈值进行对比;若线程访问耗时高于迭代耗时逼近动态阈值,确定执行迭代编译。

5、一个示例中,方法还包括:若线程访问耗时小于或等于目标线程访问耗时,将迭代耗时逼近动态阈值与目标线程访问耗时输入至预设耗时逼近表达式,根据输出结果对迭代耗时逼近动态阈值进行更新;将更新的迭代耗时逼近动态阈值与线程访问耗时进行重新对比;循环执行上述重新对比过程,直至线程访问耗时高于更新的迭代耗时逼近动态阈值,确定执行迭代编译。

6、一个示例中,预设耗时逼近表达式如下:

7、=

8、其中,为迭代耗时逼近动态阈值,为目标线程访问耗时。

9、一个示例中,方法还包括:在迭代次数等于迭代次数阈值时,确定停止执行迭代编译;或若线程访问耗时小于或等于目标线程访问耗时,确定停止执行迭代编译。

10、一个示例中,根据线程访问耗时对线程块参数值和网格参数值进行调整,具体包括:将线程访问耗时、线程块参数值、网格参数值、目标线程访问耗时和硬件参数值输入至预先构建的调整神经网络模型,得到多组访问性能接近的线程层次结构;对多组线程层次结构进行运行测试,得到最小线程访问耗时;根据最小线程访问耗时所对应的线程层次结构,确定调整线程块参数值和调整网格参数值。

11、一个示例中,方法还包括:获取样本gpu的样本硬件参数值、样本线程块参数值、样本网格参数值;根据样本线程块参数值和样本网格参数值对cuda样本程序进行编译,得到样本线程访问耗时;确定理论上为了缩小样本线程访问耗时所对应的多组样本线程层次结构;将样本线程访问耗时、样本线程块参数值、样本网格参数值和样本硬件参数值作为样本输入,将多组样本线程层次结构作为样本标签,对初始神经网络模型进行训练,得到调整神经网络模型。

12、一个示例中,生成优化线程块参数值和优化网格参数值之后,方法还包括:获取迭代过程中每次迭代的线程层次结构数据与线程访问耗时;生成每次迭代的线程层次结构数据与线程访问耗时的展示图表,将展示图表在客户端进行展示。

13、另一方面,本申请实施例提供了一种异构编译优化设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述任一项的一种异构编译优化方法。

14、另一方面,本申请实施例提供了一种异构编译优化非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令能够执行上述任一项的一种异构编译优化方法。

15、本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

16、采用迭代的方式进行优化,设定迭代耗时逼近动态阈值作为迭代的重要依据,为迭代过程提供了迭代条件,保证了每次迭代都会根据前一次运行的线程访问耗时调整线程块和网格大小,并且重新编译和运行程序,直到达到用户指定的迭代次数或满足目标线程访问耗时。这种迭代机制有助于逐步逼近最优的线程层次结构配置,大大提升了优化后的程序性能表现。同时,采用宏定义来控制是否启用线程层次结构的编译优化功能,提供了灵活的优化开关选项,方便用户根据需求决定是否启用该优化功能。采用根据线程访问耗时对线程块参数值和网格参数值进行调整,保证了每次调整的依据性和可靠性,大大减少了迭代过程的计算复杂度。

本文档来自技高网...

【技术保护点】

1.一种异构编译优化方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述根据所述线程访问耗时、所述目标线程访问耗时、所述迭代次数阈值和所述迭代耗时逼近动态阈值,确定是否执行迭代编译,具体包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,所述预设耗时逼近表达式如下:

5.根据权利要求2所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1所述的方法,其特征在于,所述根据所述线程访问耗时对所述线程块参数值和所述网格参数值进行调整,具体包括:

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

8.根据权利要求1所述的方法,其特征在于,所述生成优化线程块参数值和优化网格参数值之后,所述方法还包括:

9.一种异构编译优化设备,其特征在于,包括:

10.一种异构编译优化非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令能够执行上述权利要求1-8任一项所述的一种异构编译优化方法。

...

【技术特征摘要】

1.一种异构编译优化方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述根据所述线程访问耗时、所述目标线程访问耗时、所述迭代次数阈值和所述迭代耗时逼近动态阈值,确定是否执行迭代编译,具体包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,所述预设耗时逼近表达式如下:

5.根据权利要求2所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1所述的方法,其特征...

【专利技术属性】
技术研发人员:刘敏姜凯赵鑫鑫薛海军
申请(专利权)人:山东浪潮科学研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1