论文部分内容阅读
跟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并行计算,以进一步拓展其应用空间。