云端系统GPU虚拟化与多GPU MapReduce技术解析
云端系统GPU虚拟化
在云端系统中,为了实现GPU虚拟化支持,采用了一系列独特的架构和组件。
共享文件系统
系统使用网络文件系统(NFS)作为共享文件系统,在domain - U和domain - 0之间共享GPU内核代码和数据。具体操作如下:
- domain - U中的每个虚拟机运行一个NFS服务器,导出包含用户GPU内核代码的文件系统。
- domain - 0中的虚拟机运行一个NFS客户端,挂载NFS服务器导出的文件系统。
当用户要执行GPU程序时,Listener将包含用户GPU内核代码的目录名称传递给Combiner,Combiner挂载并合并所有内核代码,编译成一个可执行文件,最后由Executor执行并将结果返回给每个虚拟机。
各组件功能
- Listener :运行在domain - U的每个虚拟机中,负责将共享文件系统导出给Combiner。若用户虚拟机要执行GPU程序,Listener会挂载共享文件系统中的程序目录,并要求用户提供内核的内存使用情况。当Executor成功终止进程后,会向Listener发送终止消息,Listener再通知用户结果已就绪。
- Combiner :运行在domain - 0的虚拟机中,负责合并要执行的CUDA程序。它接收来自Listener的消息,通过共享文件系统处理内核代码。Combiner解析各机器的源代码,创建不同的CUDA流,确保它们互不干扰,并为并发执行准备合并后的内核。选择执