如何简化CUDA_VISIBLE_DEVICES=0,1,6,7

zhe*_*ang -2 bash alias multi-gpu

每次开始训练时,我都需要手动输入类似的命令CUDA_VISIBLE_DEVICES=0,1,6,7,具体取决于我将使用多少个 GPU 以及哪些当前是空闲的。

这个答案提供了一个丑陋但实用的解决办法。即在 bashrc 中为每个组合编写一个别名:

alias gpu4='CUDA_VISIBLE_DEVICES=4'
alias gpu25='CUDA_VISIBLE_DEVICES=2,5'
alias gpu256='CUDA_VISIBLE_DEVICES=2,5,6'
alias gpu0467='CUDA_VISIBLE_DEVICES=0,4,6,7'
Run Code Online (Sandbox Code Playgroud)

例如,这可以节省输入“CUDA_VISIBLE_DEVICES”的大量时间。

如何进一步简化使用CUDA_VISIBLE_DEVICES

或者,有人可以分享一种更优雅的方法来替换alias上面的 -list 吗?

tri*_*eee 6

也许是这样一个简单的函数?

cuda () {
    local devs=$1
    shift
    CUDA_VISIBLE_DEVICES="$devs" "$@"
}
Run Code Online (Sandbox Code Playgroud)

你会像这样运行它

cuda 2,3,7 command --options
Run Code Online (Sandbox Code Playgroud)

一般来说,更喜欢函数而不是别名。