虚拟化环境下GPU调度算法的研究
2018-05-14刘鹤年
刘鹤年
摘要:在光線跟踪算法中,传统上通过像素递归深度对场景进行划分,然后必须每一个任务分配一个GPU服务器节点服务器,但是这种静态任务分配的算法在虚拟化环境中没办法实现对GPU资源的有效利用,而且一旦有服务器节点宕机就会导致场景绘制失败。对此,提出一种基于hash思想的解决方案,有效的解决该问题。
关键词:实时场景绘制;hash算法;集群
中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2018)02-0127-02
在三维场景绘制领域中已有的负载均衡策略有PBT树的自适应划分算法[1]和基于像素开销[2]以及按像素递归深度对场景进行划分[3]的方法。但是这些方式都没有解决集群中的宕机问题。因此本文采用hash的方式解决在三维场景绘制的过程中出现服务器节点宕机的情况。
1 总体框架
在任务划分上本算法采用按像素递归深度[3]对场景进行划分,然后通过数据传输将划分好的场景发送给GPU集群。本文主要研究的是GPU集群的资源调度方案。通过本算法的资源调度本文优化了实时场景绘制的速度并解决了GPU集群中有服务器节点出现宕机的问题,如图1所示。
2 算法原理
为了能够更有效的分配GPU集群的计算节点,本算法将引入一个足够大的Hash空间,如果hash空间太小,容易在映射时发生冲突,所以将这个用来映射的hash空间大小定为0~232。为了更好的描述本算法,可以将hash空间想象成一个首位相连的圆环。然后将服务器服务器节点也映射到同一个hash空间中。
使用A,B,C和D四台服务器服务器节点,将服务器节点映射到hash空间中,以对应的hash值排列。
使用MD5算法作为服务器节点的hash算法,并使用机器名作为机器IP地址作为hash输入。
将服务器节点和绘制任务都映射到hash空间之后,绘制任务顺时针方向寻找最近的服务器节点,这样就将服务器节点和绘制任务对应起来。
3 服务器节点宕机情况处理
当服务器节点B出项宕机情况导致绘制失败的时候,受到影响的是沿着B逆时针遍历到下一个节点之间的绘制任务。
因此这里仅需变动任务1,将任务1重新映射到C就可以,如图2所示。
此时并没有进行任务的重新划分,任务依旧是4个,只不过将其中两个任务分配给了同一个服务器节点。因此场景绘制不会因其中一个服务器节点的宕机而导致绘制失败。
4 平衡性处理
因为实时场景的绘制的最终效果依赖绘制最慢的服务器节点。为了使场景的绘制任务能够均匀的映射到服务器节点上,引入了“虚拟服务器节点”的概念,一个服务器节点对应多个“虚拟服务器节点”。
节点A1,A2代表了A,D1和D2代表了D,如图3所示。
实际上任务1和任务2被分配到了A上进行计算,任务3和任务4被分配到D上进行了计算;
5 实验结果
本文使用的集群是通过4台微机进行每台配置为:Intel(R)Xeon(R)E3-1255v3CPU,4GB主存,NVQuadroK600GPU。编译环境为:win1064位操作系统,VS2013、OptiX3.8.0、CUDA7.5。
经过测试该算法可以很好的对任务进行分配,而且在任务分配过程中出现服务器宕机的情况也可以很好的进行处理,而且不影响任务分配的情况。
参考文献
[1]任崇辉.基于GPU的高真实感集群渲染系统[D].杭州:浙江大学,2011.
[2]梁鲜,曲福恒,杨勇,等.基于加权处罚的K-均值优化算法[J].长春理工大学学报:自然科学版,2015,38(4):132-137.
[3]蒋聪,陈纯毅.基于手势的交互式三维场景并行光线跟踪绘制研究[J].长春理工大学学报(自然科学版),2016,(2):90-97.
[4]孔令德.计算机图形学基础教程[M].北京:清华大学出版社,2008.
[5]Alan Chalmers,Erik Reinhard.Pratical parallel rendering[M].A.K.Peters,Ltd.,2002:20-35.