一种基于指令流分析的图形混合加速模式的验证方法技术

技术编号:38246367 阅读:12 留言:0更新日期:2023-07-25 18:06
本发明专利技术涉及一种基于指令流分析的图形混合加速模式的验证方法。本发明专利技术通过为图形接口标准的从最低版本开始的两个相邻版本分别构造有关联的测试集,并计算两个测试集中的测试程序在执行相同代码时的运行数据的偏差,来确定GPU驱动对于图像接口标准的第M个版本和第N个版本使用的是不是不同的渲染方式,且准确判断切换到CPU加速的图形加速接口的版本。断切换到CPU加速的图形加速接口的版本。

【技术实现步骤摘要】
一种基于指令流分析的图形混合加速模式的验证方法


[0001]本专利技术属于计算机软件开发
,具体涉及一种基于指令流分析的图形混合加速模式的验证方法。

技术介绍

[0002]图形处理器(graphics processing unit,GPU)对于图形接口标准的支持都是需要明确到具体版本的,比如说支持OpenGL就必须指明支持到OpenGL的哪个版本(例如最高支持到4.6),图形接口标准的不同版本间增量也很大,支持到最新的图形接口标准难度非常大。
[0003]对于能力较弱的GPU,很难支持到高版本的图形接口标准。例如,经过实测,目前国产桌面GPU基本只支持到OpenGL 4.0(最新版本是4.6,OpenGL标准在4.6版本之后就未再更新),即便支持到版本4.0的GPU也有不少扩展没有支持。但是,实际上,往往有些GPU厂商“号称”自己的GPU支持到了4.5版本的图形接口标准,而实际情况通常是当应用请求的最低版本是4.0版的图形接口标准时,这些GPU的驱动确实使用GPU硬件加速,而请求的最低版本是更高版本的图形接口标准时(4.0+),则切换到CPU渲染(如使用llvmpipe)。
[0004]为了验证GPU到底是不是这种CPU/GPU混合的图形加速模式,并且确定是从哪个版本的图形加速接口开始切换到CPU加速的,需要一种软件的验证方法。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种基于指令流分析的图形混合加速模式的验证方法,用软件的方式,能够甄别出GPU到底是不是CPU/GPU混合的图形加速模式,而且可以准确判断出到底是从哪个版本的图形加速接口开始切换到CPU加速的。
[0006]本专利技术提供的一种基于指令流分析的图形混合加速模式的验证方法,包括以下步骤:步骤S1:针对图形接口标准的第M个版本构造测试集,记为测试集CTS

M,其中包括Count
CTS

M
个程序;针对所述第M个版本之后的最接近所述第M个版本的图形接口标准的第N个版本构造测试集,记为测试集CTS

N,其中也包括Count
CTS

M
个程序;其中,所述第M个版本大于等于图形接口标准的最低版本;所述第N个版本小于图形接口标准的最高版本;所述测试集CTS

N是由在所述测试集CTS

M中的每个程序的源代码后插入特定代码片段的Count
CTS

M
个程序组成;步骤S2:修改Linux内核,监视GPU相关中断的调用情况;步骤S3:修改Linux的窗口管理器,实现只刷新指定进程的窗口;步骤S4:关闭除测试程序外所有窗口程序;步骤S5:针对所述测试集CTS

M中的每个程序,分别执行T次,并记录每个程序的运行数据;针对所述测试集CTS

N中的每个程序,分别执行T次,并记录每个程序的运行数据,其中,针对所述测试集CTS

N中的每个程序的运行数据的记录仅记录到插入的所述特定代
码片段前;步骤S6:对上述记录的所述测试集CTS

M中的每个程序的T个运行数据对T求均值;对上述记录的所述测试集CTS

N中的每个程序的T个运行数据对T求均值;步骤S7:将上述步骤S6中得到的所述测试集CTS

M中的每个程序的运行数据的均值分别与所述测试集CTS

N中与测试集CTS

M中每个程序相对应的程序的运行数据的均值进行比较,得到所述测试集CTS

M和所述测试集CTS

N之间的Count
CTS

M
个程序的运行数据的偏差;步骤S8:计算Count
CTS

M
个程序的运行数据的偏差的平均偏差,判断所述平均偏差是否大于预设阈值,如果不小于预设阈值,则认为在所述第N个版本时,GPU采用的是CPU和GPU混合的图形加速模式,验证结束;如果小于预设阈值,则使M等于N,使N等于第N个版本之后的最接近所述第N个版本的图形接口标准的版本的值,继续顺序执行步骤S1至步骤S8,直至验证结束。
[0007]进一步地,所述步骤S1中所述测试集CTS

M是由标准测试集中与3D相关的测试程序构造而成。
[0008]进一步地,所述步骤S1中所述测试集CTS

N的构造方法如下:步骤S1.1:基于第N个版本的图形接口标准,提取出第N个版本相对于第M个版本增加的API和扩展;步骤S1.2:针对每个增加的API和扩展,从标准测试集中提取出包含所述API和扩展的代码片段,并插入到所述测试集CTS

M中每个程序的源代码后和图形接口的反初始化函数前,形成所述测试集CTS

N。
[0009]进一步地,所述步骤S2还包括:步骤S2.1:根据GPU的内核设备文件的路径,获取GPU内核设备对象的内核操作函数指针集合;步骤S2.2:基于内核hook技术,在write、read和seek操作函数前加入统计计数hook代码,记录给定进程调用hook函数的次数。
[0010]进一步地,所述步骤S5包括:每次执行所述测试集CTS

M中的每个程序时,声明所需的图形接口标准为第M个版本;每次执行所述测试集CTS

N中的每个程序时,声明所需的图形接口标准为第N个版本;并在调用初始化图形接口前,通知内核统计函数开始记录当前测试程序所在进程对所述write、read和seek操作函数的调用计数,并通知窗口管理器只刷新当前测试程序所在进程的窗口。
[0011]进一步地,所述运行数据包括:运行时间和CPU中断数。
[0012]进一步地,所述运行时间包括:用户态CPU时间和内核态CPU时间。
[0013]有益效果
[0014]本专利技术通过为图形接口标准的从最低版本开始的两个相邻版本分别构造有关联的测试集,并计算两个测试集中的测试程序在执行相同代码时的运行数据的偏差,来确定GPU驱动对于图像接口标准的第M个版本和第N个版本使用的是不是不同的渲染方式,即通过软件的方式实现确定GPU到底是不是CPU/GPU混合的图形加速模式,而且准确判断到底是从哪个版本的图形加速接口开始切换到CPU加速的。
具体实施方式
[0015]以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。
[0016]下面对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。
实施例
[0017]本实施例采用本专利技术提供的一种基于指令流分析的图形混合加速模式的验证方法,具体包括以下步骤:步骤S1:针对图形接口标准的第M个版本(大于等于最低版本)和此版本之后的最接近该版本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于指令流分析的图形混合加速模式的验证方法,其特征在于,所述方法包括:步骤S1:针对图形接口标准的第M个版本构造测试集,记为测试集CTS

M,其中包括Count
CTS

M
个程序;针对所述第M个版本之后的最接近所述第M个版本的图形接口标准的第N个版本构造测试集,记为测试集CTS

N,其中也包括Count
CTS

M
个程序;其中,所述第M个版本大于等于图形接口标准的最低版本;所述第N个版本小于图形接口标准的最高版本;所述测试集CTS

N是由在所述测试集CTS

M中的每个程序的源代码后插入特定代码片段的Count
CTS

M
个程序组成;步骤S2:修改Linux内核,监视GPU相关中断的调用情况;步骤S3:修改Linux的窗口管理器,实现只刷新指定进程的窗口;步骤S4:关闭除测试程序外所有窗口程序;步骤S5:针对所述测试集CTS

M中的每个程序,分别执行T次,并记录每个程序的运行数据;针对所述测试集CTS

N中的每个程序,分别执行T次,并记录每个程序的运行数据,其中,针对所述测试集CTS

N中的每个程序的运行数据的记录仅记录到插入的所述特定代码片段前;步骤S6:对上述记录的所述测试集CTS

M中的每个程序的T个运行数据对T求均值;对上述记录的所述测试集CTS

N中的每个程序的T个运行数据对T求均值;步骤S7:将上述步骤S6中得到的所述测试集CTS

M中的每个程序的运行数据的均值分别与所述测试集CTS

N中与测试集CTS

M中每个程序相对应的程序的运行数据的均值进行比较,得到所述测试集CTS

M和所述测试集CTS

N之间的Count
CTS

M
个程序的运行数据的偏差;步骤...

【专利技术属性】
技术研发人员:温研
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

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

1