GPU Multi-Process Service(MPS)是NVIDIA推出的一种多进程服务技术,以下是关于它的详细介绍:

工作原理

  • Client-Server架构:MPS采用Client-Server架构。Control Daemon Process负责启动和停止MPS Server,并协调客户端和MPS Server之间的连接。Client Runtime集成于CUDA驱动程序库内部,当应用程序使用CUDA驱动进行GPU操作时,Client Runtime会自动处理与MPS Server的交互。Server Process接收来自不同客户端的请求,通过高效的调度策略将请求运行在一个GPU设备上,实现客户端之间的并发性。

  • 利用Hyper-Q能力:MPS利用GPU上的Hyper-Q技术,允许多个CPU进程共享同一GPU context,让多个进程并发执行kernel和memcpy操作,在没有Hyper-Q的GPU上,命令必须顺序执行,而在支持Hyper-Q的GPU上,命令可以并发执行,从而提高GPU利用率。

技术优势

  • 提高GPU利用率:当单个应用程序无法充分利用GPU资源时,MPS允许不同的应用程序在同一个GPU设备上并发执行,使多个应用程序的操作能够重叠,充分利用GPU的计算和内存带宽资源,提高GPU的整体利用率,减少资源闲置。

  • 减少上下文切换开销:在没有MPS时,多个进程共享GPU时需要频繁进行上下文切换,开销较大。MPS通过共享CUDA context,允许多个进程在同一GPU上并发执行,减少了上下文切换的开销。

  • 降低GPU存储占用:没有MPS时,每个使用GPU的CUDA进程都要在GPU上分配独立的存储和调度资源。而MPS Server只需为所有客户端分配一份GPU存储和调度资源,减少了GPU上的资源占用。

应用场景

  • 深度学习训练:在深度学习训练中,通常会有多个训练任务或模型需要在GPU上运行,MPS可以让这些任务并发执行,提高GPU的利用率,加速训练过程。

  • 高性能计算:在科学计算、工程计算等高性能计算领域,经常会有多个计算任务需要使用GPU进行加速,MPS能够使这些任务高效地共享GPU资源,提升计算效率。

  • 多用户环境:在数据中心、云计算等多用户环境中,不同用户的应用程序可能需要使用GPU,MPS可以实现多个用户的应用程序在同一GPU上的并发运行,提高资源的共享性和利用率。

局限性

  • 对硬件的要求:MPS需要NVIDIA的GPU支持,且不同的GPU架构对MPS的支持程度和性能表现可能有所不同。

  • 对应用程序的限制:虽然MPS声称具有二进制兼容性,但在实际应用中,某些特殊的CUDA应用程序或特定的使用场景可能无法很好地与MPS兼容,需要进行额外的调试和优化。

  • 管理和配置的复杂性:在多用户或多任务环境中,使用MPS需要进行合理的资源分配和管理,以确保各个应用程序或任务能够公平、高效地使用GPU资源,这增加了系统管理和配置的复杂性。