当我跑步时;
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上创建更多进程。
感谢。
答案 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/