如何解决GNU并行-备用参数
我希望能够为每次执行并行命令替换一个参数。
我有一个脚本来处理图像,并且我使用GNU Parallel同时启动多个进程。 我在此脚本中使用GPU内核,但仅使用了我的2个GPU内核之一。
我希望能够使用2个不同的配置文件(一个用于GPU 1,一个用于GPU 2),但是我不知道该怎么做。
Embed with signing
$ config每隔一次执行将从gpu_1更改为gpu_2
这可能吗?
谢谢?
编辑:
使用并行命令(JitsiMeet
)的作业号作为参数,然后使用该作业号的模数得到0或1:
gsutil ls -d $ee_repo | parallel -j 10 -k "task {} $PWD $year $config"
在 task 函数中:
{#}
解决方法
鉴于您的描述,您可能不希望GNU Parallel替代。想象一下,所有奇数作业都需要1秒,所有偶数作业都需要2秒。然后,您最终将在同一GPU上运行作业,而在另一个GPU上却没有运行。
您想要的是在GPU2上完成作业后立即在GPU2上开始作业。为此制作了{%}
(又称工作槽):
parallel -j2 'sleep {}; echo {}-GPU{%} seq {#}' ::: 1 2 1 2 1 2 1 2 1 2 1 2
,
类似的事情应该起作用:
seq 14 | parallel -k echo task {} {= '$_=seq() % 2 ? "gpu1" : "gpu2"' =}
输出
task 1 gpu1
task 2 gpu2
task 3 gpu1
task 4 gpu2
task 5 gpu1
task 6 gpu2
task 7 gpu1
task 8 gpu2
task 9 gpu1
task 10 gpu2
task 11 gpu1
task 12 gpu2
task 13 gpu1
task 14 gpu2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。