有两个gpu的时候如何设置Torch使用一个gpu?

我的电脑有两个GPU。 这是我第一次使用两个GPU。 当我有一个GPU时,我只运行Cuda程序,它只在一个GPU上运行。 但是,我不知道如何控制程序使用哪个GPU以及如何在唯一的一个GPU上运行程序。 我search了互联网和post说

导出CUDA_VISIBLE_DEVICES = 0

在运行程序之前必须使用这个。 我有两个程序运行。 一个是火炬脚本,另一个是Cuda脚本。 我打开了两个terminal,在第一个terminal,我使用了上面的命令并运行火炬程序。 之后,在第二个terminal,我也使用了上面的命令,只把数字从0改为1,运行cuda程序。

nvidia-smi的结果

然而,看到nvidia-smi的图片,它显示了这两个程序分配给了第0个GPU。 我想将火炬程序(PID 19520)分配给第0个,将cuda程序(PID 20351)分配给第1个GPU。

我如何将这两个程序分配给不同的GPU设备?

以下是火炬脚本的设置。 (Ubuntu 14.04,nvidia titan gtx x,cuda-7.5)

--[[command line arguments]]-- cmd = torch.CmdLine() cmd:text() cmd:text('Train a Recurrent Model for Visual Attention') cmd:text('Example:') cmd:text('$> th rnn-visual-attention.lua > results.txt') cmd:text('Options:') cmd:option('--learningRate', 0.01, 'learning rate at t=0') cmd:option('--minLR', 0.00001, 'minimum learning rate') cmd:option('--saturateEpoch', 800, 'epoch at which linear decayed LR will reach minLR') cmd:option('--momentum', 0.9, 'momentum') cmd:option('--maxOutNorm', -1, 'max norm each layers output neuron weights') cmd:option('--cutoffNorm', -1, 'max l2-norm of contatenation of all gradParam tensors') cmd:option('--batchSize', 20, 'number of examples per batch') cmd:option('--cuda', true, 'use CUDA') cmd:option('--useDevice', 1, 'sets the device (GPU) to use') cmd:option('--maxEpoch', 2000, 'maximum number of epochs to run') cmd:option('--maxTries', 100, 'maximum number of epochs to try to find a better local minima for early-stopping') cmd:option('--transfer', 'ReLU', 'activation function') cmd:option('--uniform', 0.1, 'initialize parameters using uniform distribution between -uniform and uniform. -1 means default initialization') cmd:option('--xpPath', '', 'path to a previously saved model') cmd:option('--progress', false, 'print progress bar') cmd:option('--silent', false, 'dont print anything to stdout') 

     CUDA_VISIBLE_DEVICES=0 th [torch script] CUDA_VISIBLE_DEVICES=1 [CUDA script]