Cuda 一个程序出现在两个GPU卡上

Cuda 一个程序出现在两个GPU卡上,cuda,gpu,caffe,Cuda,Gpu,Caffe,我有多个GPU卡(NO.0,NO.1…),每次我在NO.1或2上运行一个进程时。。。(除0)卡外,它将使用0号卡上的73MiB 例如,在下图中,进程11899将在0号卡上使用73MiB,但实际上在1号卡上运行 为什么??我可以禁用此功能吗?CUDA驱动程序就像一个操作系统。当它处于活动状态时,它将为各种目的保留内存。某些特性,例如,可能会导致大量的副作用分配发生(尽管我认为Caffe的情况并非如此)。出于某种原因,应用程序本身可能正在这些设备上执行一些显式分配 如果要防止出现这种情况,一个选项

我有多个GPU卡(NO.0,NO.1…),每次我在NO.1或2上运行一个进程时。。。(除0)卡外,它将使用0号卡上的73MiB

例如,在下图中,进程11899将在0号卡上使用73MiB,但实际上在1号卡上运行


为什么??我可以禁用此功能吗?

CUDA驱动程序就像一个操作系统。当它处于活动状态时,它将为各种目的保留内存。某些特性,例如,可能会导致大量的副作用分配发生(尽管我认为Caffe的情况并非如此)。出于某种原因,应用程序本身可能正在这些设备上执行一些显式分配

如果要防止出现这种情况,一个选项是在启动流程时使用
CUDA\u VISIBLE\u设备

例如,如果您想阻止CUDA使用卡“0”执行任何操作,您可以这样做(在linux上):

请注意,上面使用的枚举(CUDA枚举)与
deviceQuery
示例应用程序报告的枚举相同,但不一定与
nvidia smi
报告的枚举相同(NVML枚举)。您可能需要进行实验或运行
deviceQuery
,以确定要使用的GPU以及要排除的GPU

还请注意,使用此选项实际上会影响应用程序可见的设备,并将导致设备枚举的重新排序(例如,以前为“1”的设备将被枚举为设备“0”)。因此,如果您的应用程序支持多GPU,并且您正在选择要使用的特定设备,则在使用此环境变量时,可能需要更改您(或应用程序)正在选择的特定设备

CUDA_VISIBLE_DEVICES="1,2" ./my_application ...