Torch Cuda - 在两个GPU核心上生成两个进程。

当我在Lua中运行;

require 'cutorch'

时,它会自动将两个进程分配给我的GPU中的两个核心。例如,在nvidia-smi中获得以下输出;

---------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
|    1      6091    C   /home/msmith/torch/install/bin/qlua             98MiB |
|    2      6091    C   /home/msmith/torch/install/bin/qlua             99MiB |
+-----------------------------------------------------------------------------+

我想能够控制进程所在的GPU。我尝试过;

cutorch.setDevice(<Device Number>)

但这只会在GPU上创建更多进程。

谢谢。

点赞
用户1417179
用户1417179

你可以在启动进程之前使用CUDA_VISIBLE_DEVICES环境变量来控制你的进程将在哪个GPU上运行,例如只在CPU 0上运行:

export CUDA_VISIBLE_DEVICES=0
luajit your-script.lua
2015-11-19 15:49:03
用户5979961
用户5979961

如前面的回答所说,在调用 torch 或 torch-lua-script 之前,可以在命令行上使用 CUDA_VISIBLE_DEVICES 环境变量选择使用 GPU。这是 CUDA 中的通用方式,可以用于任何应用程序,不仅仅是 torch。在这里设置的数字可能会与 cutorch.setDevice() 中设置的数字冲突(后者是基于 1 的)。您可以通过逗号分隔的列表选择多个特定的 GPU,例如:

CUDA_VISIBLE_DEVICES=1,2

这将导致 torch 仅在 GPU 1 和 2 上运行。更多信息可以在此处找到:https://devblogs.nvidia.com/parallelforall/cuda-pro-tip-control-gpu-visibility-cuda_visible_devices/

2017-01-12 13:27:18