CUDA_VISIBLE_DEVICES – Masking GPUs
Does your CUDA application need to target a specific GPU? If you are writing GPU enabled code, you would typically use a device query to select the desired GPUs. However, a quick and easy solution for testing is to use the environment variable CUDA_VISIBLE_DEVICES to restrict the devices that your CUDA application sees. This can be useful if you are attempting to share resources on a node or you want your GPU enabled executable to target a specific GPU.
|Environment Variable Syntax||Results|
|CUDA_VISIBLE_DEVICES=1||Only device 1 will be seen|
|CUDA_VISIBLE_DEVICES=0,1||Devices 0 and 1 will be visible|
|CUDA_VISIBLE_DEVICES=”0,1”||Same as above, quotation marks are optional|
|CUDA_VISIBLE_DEVICES=0,2,3||Devices 0, 2, 3 will be visible; device 1 is masked|
CUDA will enumerate the visible devices starting at zero. In the last case, devices 0, 2, 3 will appear as devices 0, 1, 2. If CUDA_VISIBLE_DEVICES is set to a device that does not exist, all devices will be masked. To determine the device ID for the available hardware in your system, you can run NVIDIA’s deviceQuery executable included in the CUDA SDK. Happy programming!