Bash循环-并行化还有迭代

时间:2019-02-14 01:00:46

标签: bash loops parallel-processing iteration

目标如下:我总共有40个FPGA。单个编程器连接了10个FPGA,即我有4个编程器来刷新所有40个FPGA。 每个程序员只能对FPGA进行连续编程。

现在,我需要一个对所有40个FPGA进行编程的循环。为了加速/加速过程,我想并行地对4个编程器的FPGA进行编程,即并行地对4个Flash脚本进行编程。在执行每个编程器的下一个刷新过程之前,必须完成刷新过程。 为简单起见,我们假设FPGA的编号从01到40。

  • 程序员1:FPGA01,..,FPGA10
  • programmer2:FPGA11,..,FPGA20
  • programmer3:FPGA21,..,FPGA30
  • programmer4:FPGA31,..,FPGA40

这意味着仅在FPGA01完成时才能刷新FPGA02。 但是FPGA01,FPGA11,FPGA21和FPGA31应该并行刷新。

以下代码的问题是,该过程不会等到闪烁完成。

for i in `seq 1 10`
do
   my_flash_script.py --FPGA 0$i &
done

1 个答案:

答案 0 :(得分:3)

似乎您在为错误的事情提供背景信息。试试:

for i in $(seq -w 1 10); do my_flash_script.py --FPGA $i; done &
for i in $(seq -w 11 20); do my_flash_script.py --FPGA $i; done &
for i in $(seq -w 21 30); do my_flash_script.py --FPGA $i; done &
for i in $(seq -w 31 40); do my_flash_script.py --FPGA $i; done &
wait

(请注意,如果您将设备编号为0到39,这将变得更加自然,但这完全是另一个问题。)