我正在使用 Mac OSX,并在终端中使用 bash。
我已经能够找到很多关于在 C 中使用 OpenMP 的文献,但是我遇到了一个我正在为其运行 shell 脚本的程序。该脚本使用 1000 个不同的参数调用可执行文件 1000 次。没有一个调用相互依赖,所以我知道这可能是并行化我的代码的好地方。
那么问题是如何在 bash 的 shell 脚本中使用 #pragma omp parallel for。我也想过在 .c 文件中编写 shell 的功能,但我不确定如何调用 .exe 并在 c 中重命名和移动文件。
这是名称易于理解的 shell 脚本:
#!/bin/zsh
for ((x = 0, y = 4 ; x < 1000 ; x++, y *= 1.0162))
do
typeset -F 3 y
echo $y
./program arg1 $y /path0 arg2
mv file1.ppm file1.$(printf %04d $x).ppm
mv file1.$(printf %04d $x).ppm /path1
mv file2.ppm file2.$(printf %04d $x).ppm
mv file2.$(printf %04d $x).ppm /path2
done
paste a.txt b.txt > c.txt
mv c.txt /path3
变量说明:
程序在接受 4 个参数后运行。出于此脚本的目的,只有 y 是变化的。
给出了 arg1 和 arg2。
所有 /path 都是我存储数据的不同位置的路径。
file1.ppm 和 file2.ppm 是从 ./program 调用中计算出来的。
a.txt 和 b.txt 分别在 for 循环中给出和计算。