我有四个不同的实验因素。
对于每个实验,我需要改变三个参数并调用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并行?
我的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引用的字符("&'*"等),则上述操作将失败。从你的例子来看,这对你来说似乎不是问题。