As you know, since CUDA 5.5, Hyper-Q (on NVIDIA GPUs) allows multiple MPI processes to run simultaneously on a single GPU and share its resources, upon resource availability.
Hyper-Q can be activated by a driver command (i.e., nvidia-cuda-mps-control -d ) before running the application.
Considering that Hyper-Q does not necessarily benefit the performance of an application (and in some cases it can even harm the performance), is there anyway to deactivate Hyper-Q (or even activate it) by inserting some driver commands in the application? In other words, is it possible to start Hyper-Q within the program (any runtime/Driver command, that you're aware of)?
Thanks in advance, Iman
Best How To :
Hyper-Q cannot be turned on/off. This is a hardware feature of Kepler cc3.5 and newer GPUs.
The CUDA MPS server can be turned on/off. The method of turning it on and off is described in section 4.1.1 of the documentation. In a nutshell, excerpting:
nvidia-cuda-mps-control -d # Start daemon as a background process.
echo quit | nvidia-cuda-mps-control # Shut the daemon down.
There's nothing to prevent you from issuing these commands from a non-CUDA application (for example via
Regarding CUDA applications:
After the CUDA MPS server is turned on, CUDA applications (or MPI processes) can be launched and "connected" to an instance of the MPS server.
Once these applications (or MPI processes) are launched and connected to the MPS server, the MPS server should not be shut down until those applications/processes are terminated.
Therefore, an application that has launched and connected to an MPS server should not manipulate the state of that server.