私は Mac OSX で作業しており、ターミナルで bash を使用しています。
C での OpenMP の使用に関する多くの文献を見つけることができましたが、シェル スクリプトを実行しているプログラムに出くわしました。スクリプトは、1000 個の異なるパラメーターを使用して実行可能ファイルを 1000 回呼び出します。どの呼び出しも相互に依存していないため、これがコードを並列化するのに適した場所であることがわかっています。
問題は、bash のシェル スクリプトで #pragma omp parallel for をどのように使用するかです。また、シェルが行うことを .c ファイルに記述することも考えましたが、.exe を呼び出してファイルの名前を変更し、c で移動する方法がわかりませんでした。
わかりやすい名前のシェル スクリプトを次に示します。
#!/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 ループで計算されます。