cuda mpi gpgpu nvidia multi-gpu

¿Debo usar MPS(SERVICIO DE PROCESO MÚLTIPLE) cuando uso CUDA6.5+MPI?



gpgpu nvidia (1)

Por el enlace está escrito: https://docs.nvidia.com/deploy/pdf/CUDA_Multi_Process_Service_Overview.pdf

1.1. AT A GLANCE

1.1.1. MPS

El servicio multiproceso (MPS) es una implementación alternativa compatible con binarios de la interfaz de programación de aplicaciones (API) de CUDA. La arquitectura de tiempo de ejecución de MPS está diseñada para habilitar de forma transparente aplicaciones CUDA multiproceso cooperativas, normalmente trabajos MPI , para utilizar las capacidades Hyper-Q en las últimas GPU Tesla y Quadro basadas en NVIDIA (basadas en Kepler). Hyper-Q permite que los kernels CUDA se procesen al mismo tiempo en la misma GPU; esto puede beneficiar el rendimiento cuando la capacidad de cálculo de la GPU es subutilizada por un solo proceso de aplicación.

  1. ¿Debo usar MPS (SERVICIO MULTIPROCESOS) cuando uso CUDA6.5 + MPI (OpenMPI / IntelMPI), o no puedo usar MPS con pérdida de rendimiento pero sin ningún error?

  2. Si no voy a usar MPS, ¿significa que todos mis procesos MPI en un solo servidor ejecutarán sus funciones GPU-kernel secuencialmente (no concurrentes) en una sola tarjeta GPU, pero el resto del comportamiento seguirá siendo el mismo?


  1. MPS no está obligado a usar MPI

  2. Si no usa MPS, pero inicia múltiples rangos de MPI por nodo (es decir, por GPU), entonces si tiene el modo de cálculo establecido en predeterminado, su actividad de GPU se serializará. Si tiene su modo de cálculo establecido en EXCLUSIVE_PROCESS o EXCLUSIVE_THREAD, obtendrá errores cuando varios rangos de MPI intenten usar una sola GPU.

La documentación de CUDA MPS está disponible aquí .