发明名称 |
一种基于延迟发送机制的GPU虚拟化性能提升的方法 |
摘要 |
本发明公开了一种基于延迟发送机制的GPU虚拟化性能提升的方法,采用GPU独占和API重定向相结合的GPU虚拟化方法,利用延迟发送的机制,并通过虚拟机之间共享内存的方法来减少GPU交互次数,从而提高GPU虚拟化性能。本发明根据循环体中的参数变化和数据依赖的不同情况给出了三种延迟发送指令提交的方法,分别是:第一种是在没有参数和数据变化下延迟发送;第二种是没有数据依赖和有参数的变化下延迟发送;第三种是没有参数变化,却有数据依赖的延迟发送。根据具体情况来选择使用这三种延迟发送方法来降低发送的次数,通过延迟发送指令的方法来充分利用GPU物理资源,使虚拟机几乎达到跟实体机同样的效果。 |
申请公布号 |
CN105487915A |
申请公布日期 |
2016.04.13 |
申请号 |
CN201510818290.5 |
申请日期 |
2015.11.24 |
申请人 |
上海君是信息科技有限公司 |
发明人 |
沈国军 |
分类号 |
G06F9/455(2006.01)I;G06F9/50(2006.01)I |
主分类号 |
G06F9/455(2006.01)I |
代理机构 |
|
代理人 |
|
主权项 |
一种基于延迟发送机制的GPU虚拟化性能提升的方法,使用GPU独占和API重定向相结合的GPU虚拟化方法,通过减少指令传输的次数来提高GPU虚拟化性能;其特征在于,所述方法具体包括以下步骤:步骤一:首先找到CUDA程序中的循环体,然后判断该循环体中是否包含CUDA API;步骤二:如果循环体中不包含CUDA API,则继续寻找下一个循环体;如果循环体中包含有CUDA API,接着判断该循环体中是否有参数变化;步骤三:如果该循环体没有参数变化且没有数据依赖,则使用第一种延迟提交方法,该方法为,每次循环时,不需要将循环体中的有关函数名和参数信息缓存,只要将有关信息缓存一次即可;如果该循环体没有参数变化但有数据依赖,则采用第三种延迟提交方法,该方法为,在缓存循环中CUDA API的函数名和参数信息时,将那些没有数据依赖的参数,直接缓存其参数值,对于那些有数据依赖的参数,采用不直接缓存参数,而是缓存参数表达式系数的方法,等待GPU根据已知计算得出数据,传回,然后等循环结束后再一次性将缓存的信息传给GPU独占设备虚拟机;步骤四:如果该循环体有参数变化但没有数据依赖,则采用第二种延迟提交方法,该方法为,每次将循环时的信息都进行缓存,等到循环结束后再一次性将这些信息传给图形设备虚拟机执行;步骤五:如果该循环体有参数变化且有数据依赖,则采用与第三种延迟提交方法类似的方法,将循环次数也作为参数表达式中的一个变量,对其系数进行待定。 |
地址 |
200030 上海市徐汇区桂平路92号202-35室 |