###前提・実現したいこと
Linuxにて並列計算をさせたいです。そこで、"1-1_equi_423K", "1-1-1_equi423K", "1-1-1-1_normalequi_423K","1-1-1-1-1_run"という各フォルダにて、この順に計算結果のファイルを読んで次のフォルダに移り計算を実行する、これを繰り返したいです。その操作をコマンド一個で行えるとうれしいです。
###発生している問題・エラーメッセージ
sakkalab-ws-h25@sakkalab-ws-h25:/mnt/Volume-WD3000/DL_POLY/dl_class_1.9/Arai/C4mimTFSA_bulk$ mpirun -np 8 ./auto_dl_poly2.sh
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
Directory names
Directory names
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
Directory names
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
Directory names
Directory names
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
Directory names
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
Directory names
./auto_dl_poly2.sh: 6: ./auto_dl_poly2.sh: Dir0[0]=1-1_equi_423K: not found
./auto_dl_poly2.sh: 7: ./auto_dl_poly2.sh: Dir0[1]=1-1-1_equi_423K: not found
./auto_dl_poly2.sh: 8: ./auto_dl_poly2.sh: Dir0[2]=1-1-1-1_normalequi_423K: not found
./auto_dl_poly2.sh: 9: ./auto_dl_poly2.sh: Dir0[3]=1-1-1-1-1_run_423K: not found
Directory names
./auto_dl_poly2.sh: 1: eval: Bad substitution
./auto_dl_poly2.sh: 1: eval: Bad substitution
./auto_dl_poly2.sh: 1: eval: Bad substitution
./auto_dl_poly2.sh: 1: eval: Bad substitution
./auto_dl_poly2.sh: 1: eval: Bad substitution
./auto_dl_poly2.sh: 1: eval: Bad substitution
./auto_dl_poly2.sh: 1: eval: Bad substitution
./auto_dl_poly2.sh: 1: eval: Bad substitution
===================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= EXIT CODE: 2
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
###該当のソースコード
#!/bin/bash
Dir0[0]="1-1_equi_423K"
Dir0[1]="1-1-1_equi_423K"
Dir0[2]="1-1-1-1_normalequi_423K"
Dir0[3]="1-1-1-1-1_run_423K"
#Dir1[0]="2-1"
#Dir1[1]="2-2"
#Dir1[2]="2-3"
node=8
DirMax=0 #Dir?[0]の?のMax
DirEach=3 #Dir0[?]の?のMax
Directory name readed
echo "Directory names"
for i in seq 0 ${DirMax}
do
for j in seq 0 ${DirEach}
do
tmp="{Dir${i}[${j}]}"
eval echo '$'$tmp
done
done
echo " "
Directory name check
for i in seq 0 ${DirMax}
do
for j in seq 0 ${DirEach}
do
if [ $? -eq 0 ]; then
tmp="{Dir${i}[${j}]}"
eval cd '$'$tmp
if [ $? -eq 0 ]; then
eval echo '$'$tmp "checked"
cd ../
else
eval echo "Directory error" '$'$tmp
exit 1
fi
fi
done
done
for i in seq 0 ${DirMax}
do
for j in seq 1 ${DirEach}
do
if [ $? -eq 0 ]; then
PrevDir="{Dir${i}[${j}-1]}"
CurDir="{Dir${i}[${j}]}"
eval cd '$'$CurDir
if [ $? -eq 0 ]; then
echo " "
eval echo '$'$CurDir" started"
eval echo "Copying "'$'$PrevDir"/REVCON"
eval cp ../'$'$PrevDir/REVCON ./CONFIG
echo "DL POLY run"
mpirun -np ${node} ./DLPOLY.X
if [ $? -ne 0 ]; then
eval echo '$'$CurDir" DL POLY calculation error"
cd ../
break
fi
cd ../
eval echo '$'$CurDir" finished"
else
eval echo "Directory error" '$'$tmp
exit 1
fi
fi
done
done
###試したこと
一つ一つ計算することは出来ました。
mpirun -np 8 ./DLPOLY.X
というコマンドで同じ計算を各フォルダで端末を開いて行うならば出来るのですが、計算に時間がかかることと、計算終了と同時に次の計算を行う(深夜など)ことが自動に出来たらうれしいです。
###補足情報(言語/FW/ツール等のバージョンなど)
Linuxです。宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー