【发布时间】:2020-09-14 14:55:40
【问题描述】:
我希望能够为我的并行命令的每次执行替换一个参数。
我有一个处理图像的脚本,我使用 GNU Parallel 同时启动多个进程。 我在这个脚本中使用了 GPU 核心,但我的 2 个 GPU 核心中只使用了一个。
我希望能够使用 2 个不同的配置文件(一个用于 GPU 1,一个用于 GPU 2)但我不知道该怎么做。
gsutil ls -d $ee_repo | parallel -j 10 -k "task {} $PWD $year $config"
$config 每隔一次执行就会从 gpu_1 更改为 gpu_2
这可能吗?
谢谢????
编辑:
使用并行命令的作业号({#})作为参数,然后使用此作业号的模得到 0 或 1:
gsutil ls -d $ee_repo | parallel -j 10 -k "task {} $PWD $year {#}"
在任务函数中:
task(){
...
jobnumber=$4
gpu=$(expr $jobnumber% 2)
...
}
【问题讨论】:
-
作业编号
{%}或作业编号{#}怎么样 -
是的!使用工作编号
{#},然后对工作编号使用模 2 得到 0 或 1。谢谢! -
太好了,作业槽号似乎更好。如果由于任何原因奇数作业号需要更多时间,则 gpu1 上可以同时运行 10 个作业,而插槽号不能超过 5 个。
标签: bash gnu-parallel