如何将csh脚本与嵌套循环并行化

时间:2015-06-10 11:28:28

标签: parallel-processing fortran csh

我有四种不同的实验因素。

对于每个实验,我需要改变三个参数并调用fortran程序。我使用EOF结构将参数传递给fortran程序。

以下是代码示例:

set expfac=(0.1 0.3 0.5 0.7)
set fact1=(1 3 2 8)
set fact2=(9 2 1 4)
set fact3=(5 6 1 4)

@ exp = 1
while ( $exp <= $#expfac )
 foreach i ($fact1)
   foreach k ($fact2)
    foreach h ($fact3)
 ./PROGRAM << EOF
expfac     |$expfac[$exp]
fact1      |${i}
fact2      |${k}
fact3      |${h}
EOF
   end
  end
 end
@ exp += 1
end

如何对while循环进行并行化?使用GNU parallel可能吗?

1 个答案:

答案 0 :(得分:0)

我的csh技能很糟糕,所以这里是bash:

parallel --header : './PROGRAM << EOF
expfac     |{expfac}
fact1      |{fact1}
fact2      |{fact2}
fact3      |{fact3}
EOF' ::: expfac 0.1 0.3 0.5 0.7 ::: fact1 1 3 2 8 ::: fact2 9 2 1 4 ::: fact3 5 6 1 4

如果值包含需要引用shell的字符(&#34;&amp; \&#39; *等),上述情况很可能会失败。从你的例子看,它似乎不会对你造成任何问题。