Parallel processing Gnu并行:嵌套并行

Parallel processing Gnu并行:嵌套并行,parallel-processing,gnu-parallel,Parallel Processing,Gnu Parallel,是否可以从gnu并行程序生成的脚本的多个运行中调用gnu并行程序 我有一个python脚本,它连续运行100次迭代,在每次迭代中的某个地方,并行计算了4个值(使用gnu并行)。现在我想再次使用gnu并行在同一时间生成多个这样的脚本。这可能吗?gnu并行会很好地利用可用的内核吗 例如,如果在内部循环中,在4个值中,有2个已完成,2个正在运行,因此在计算所有4个值之前,单个脚本无法继续进行下一次迭代。两个免费内核是否会自动用于计算不同脚本运行的结果? 如何指定可用的内核总数?在内部调用中是并行调用还

是否可以从gnu并行程序生成的脚本的多个运行中调用gnu并行程序

我有一个python脚本,它连续运行100次迭代,在每次迭代中的某个地方,并行计算了4个值(使用gnu并行)。现在我想再次使用gnu并行在同一时间生成多个这样的脚本。这可能吗?gnu并行会很好地利用可用的内核吗

例如,如果在内部循环中,在4个值中,有2个已完成,2个正在运行,因此在计算所有4个值之前,单个脚本无法继续进行下一次迭代。两个免费内核是否会自动用于计算不同脚本运行的结果? 如何指定可用的内核总数?在内部调用中是并行调用还是外部调用

问题表明可以嵌套对parallel的调用,但是当我从脚本内部调用嵌套的parallel时,我不确定这是否会改变

PS:抖动不是一个问题,我可以使用一个大型集群中的大量内核


PS2:gnu并行是一个很棒的工具。。。谢谢!:)

是的。GNUparallel的设计(并经过大量测试)是为了能够直接或通过脚本从GNUparallel调用

如果直接调用,您可能需要更改
-I
。第二个{}在这里是什么意思(它指的是第一个平行线还是第二个平行线?)

这里很清楚:

seq 10 | parallel 'seq {} | parallel -I // echo //'
seq 10 | parallel 'seq {} | parallel -I // echo {} //'
PS很高兴听到你发现GNU并行真棒。如果您喜欢GNU并行:

  • 浏览教程 ()
  • 在本地用户组/团队/同事处进行演示
  • 在Reddit/Diaspora*/论坛/博客上发布介绍视频和教程/ Identi.ca/Google+/Twitter/Facebook/Linkedin/邮件列表
  • 为您喜爱的博客或杂志请求或撰写评论
  • 邀请我参加你的下一次会议
如果您使用GNU Parallel进行研究:

  • 请在您的出版物中引用GNU Parallel(使用--bibtex)
如果GNU Parallel为您省钱:

  • (让贵公司)向FSF捐款

是否有文档支持通过GNU parallel实现嵌套并行的步骤顺序和资源消耗?我担心一些读者可能会看到这一点,并尝试多个嵌套的并行调用,而没有真正考虑整个过程。GNU并行通常占用16 MB的RAM。在我的脑海中,只有这些情况会改变:强制生成所有组合的多个输入源(例如,
并行回音:::file1 file2
)-所有组合都将在RAM中
--bar/--eta
使用
total_jobs()
将在内存中生成所有参数(大约400字节/作业)
--linebuffer
将为每个作业读取一整行,因此非常长的一行(比如1GB)将增加RAM的使用<代码>--sql*将在作业完成时在内存中缓冲单个作业的输出。但也许这应该成为
人的并行设计
seq 10 | parallel 'seq {} | parallel -I // echo //'
seq 10 | parallel 'seq {} | parallel -I // echo {} //'