【问题标题】:Torch Cuda - Generates two processes on both GPU coresTorch Cuda - 在两个 GPU 内核上生成两个进程
【发布时间】:2016-02-21 19:15:38
【问题描述】:

当我跑步时;

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 上创建更多进程。

谢谢。

【问题讨论】:

    标签: luajit torch


    【解决方案1】:

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

    export CUDA_VISIBLE_DEVICES=0
    luajit your-script.lua
    

    【讨论】:

    • 我在 iTorch 笔记本之前运行了这个,它运行良好。许多 CUD
    • 只是一句让我不快的评论:您在此处使用的 id 是 CUDA deviceQuery 报告的 ID(为 cutorch.setDevice() 添加 +1,因为 lua 以 1 而不是 0 开头)。 nvidia-smi 可以显示不同的 GPU id!它超级令人困惑......
    【解决方案2】:

    正如前面的回答所说,在调用torch或torch-lua-script之前,可以在命令行中使用CUDA_VISIBLE_DEVICES环境变量来选择GPU。这是 CUDA 的通用方式,可用于任何应用程序,而不仅仅是火炬。这里的数字可能会与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-06-21
      • 1970-01-01
      • 2016-11-24
      • 2015-12-11
      • 2016-10-21
      • 2011-05-19
      • 2011-05-01
      • 2013-09-14
      • 2016-10-05
      相关资源
      最近更新 更多