我正在研究一台"fujitsu"机器.它安装了2个GPU:Quadro 2000和Tesla C2075.Quadro GPU有1 GB RAM,Tesla GPU有5GB.(我使用nvidia-smi -q的输出检查).当我运行nvidia-smi时,输出显示2个GPU,但特斯拉显示屏显示为关闭.我正在运行一个内存密集型程序,并希望使用5 GB的RAM,但每当我运行程序时,它似乎都在使用Quadro GPU.有没有办法在程序中使用2中的特定GPU?特斯拉GPU是否被"禁用"意味着它的驱动程序没有安装?
您可以使用环境或以编程方式控制对CUDA GPU的访问.
您可以使用环境变量CUDA_VISIBLE_DEVICES
指定任何应用程序可见的1个或多个GPU列表,以及它们的可见性顺序.例如,如果nvidia-smi将您的Tesla GPU报告为GPU 1(以及您的Quadro为GPU 0),那么您可以设置CUDA_VISIBLE_DEVICES=1
为仅启用CUDA代码使用的Tesla.
请参阅我关于此主题的博客文章.
要以编程方式控制应用程序使用的GPU,您应该使用CUDA的设备管理API.查询使用的设备数量cudaGetDeviceCount
,然后您可以cudaSetDevice
使用每个设备查询其属性cudaGetDeviceProperties
,然后选择符合您的应用程序标准的设备.您还可以使用cudaChooseDevice
选择与您指定的设备属性最匹配的设备.
归档时间: |
|
查看次数: |
3895 次 |
最近记录: |