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

时间:2015-11-19 15:03:31

标签: luajit torch

当我跑步时;

require 'cutorch'

在lua中,它会自动为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上创建更多进程。

感谢。

2 个答案:

答案 0 :(得分:5)

您可以使用CUDA_VISIBLE_DEVICES环境变量启动 来控制您的进程在上运行哪个GPU,仅在CPU 0上运行:

export CUDA_VISIBLE_DEVICES=0
luajit your-script.lua

答案 1 :(得分:1)

正如之前的回答所说,在调用torch或torch-lua-script之前,可以在命令行上使用CUDA_VISIBLE_DEVICES环境变量来选择GPU。这是CUDA的一般方法,可以用于任何应用程序,而不仅仅是火炬。此处的数字可能会与cutorch.setDevice()中设置的数字发生冲突(也就是从1开始)。可以通过逗号分隔列表选择多个特定GPU:例如:

CUDA_VISIBLE_DEVICES=1,2

这将导致火炬仅在GPU 1和2上运行。更多信息可在此处找到:

https://devblogs.nvidia.com/parallelforall/cuda-pro-tip-control-gpu-visibility-cuda_visible_devices/