跟CPU相比,gpu在计算能力、能耗上具有显著的优势,被广泛应用于高性能计算领域。虚拟化是云计算的主要支撑技术之一,屏蔽硬件基础设施使多台虚拟机透明地共享集群中的gpu设备,从而降低配置成本,提高资源利用率。目前,gpu通用计算的虚拟化技术尚处于研究阶段,虚拟化环境下资源共享方案普遍缺乏对gpu的有效支持。本文以通用计算框架CUDA为研究对象,设计一种基于多GPgpu并行计算的虚拟化的方案,实现一种可动态调度、支持多任务并发的gpu虚拟化解决方案。具体工作包括以下几个方面:第一,采用动态库拦截的方法将gpu引入虚拟机,设计了基于多gpu计算资源特征的动态分配与管理的架构,该架构分为虚拟化用户层、虚拟化资源管理层和虚拟化资源服务层,解决了gpu通用计算在虚拟化环境下的适应问题,实现gpu资源在多个计算节点间的共享。第二,针对大规模计算任务场景,提出了在虚拟化环境下多gpu并行计算的实现方案,使用多线程或流处理的方式实现多gpu并行计算,分析了gpu多层次存储结构、传输、通信等方面内容,通过实验分别对数据松耦合交互模式(如蒙特卡罗方法)和紧耦合交互模式(如QFT算法)实现多gpu并行计算。第三,提出了一种基于动态负载量多负载状态的gpu负载均衡算法DMLS-gpu(Dynamic and Multi-Load Status algorithm for gpu),通过将负载与gpu设备的硬件能力和任务本身的特性相结合,解决了虚拟化方案中动态评估gpu设备计算能力的问题。实验分析表明,在虚拟化环境下可实现多个CUDA程序并发地使用一块或者多块gpu设备,并验证了本文的虚拟化方案具有良好的可扩展性和高效性。本文工作针对gpu通用计算虚拟化过程中面临的挑战和制约,研究虚拟化环境下的多任务gpu资源共享和多gpu并行计算,以进一步拓展其应用空间。
暂无评论