Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Script
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Script
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Script/SelfTest.sh
r110 r112 20 20 "Behavioural/Custom" 21 21 22 "Behavioural/Generic/Comparator" 22 23 "Behavioural/Generic/Counter" 24 "Behavioural/Generic/Divider" 25 "Behavioural/Generic/Multiplier" 23 26 "Behavioural/Generic/Priority" 24 27 "Behavioural/Generic/Queue_Control" -
trunk/IPs/systemC/processor/Morpheo/Script/execute.sh
r85 r112 5 5 #----------------------------------------------------------- 6 6 7 declare -a COMMAND; 8 declare -i CPT_OLD; 9 declare -i CPT; 10 declare FILE_CMD=; 11 declare FILE_CPT=; 12 declare FILE_CPU=; 13 declare LOCK_CPT="${HOME}/.lock-cpt"; 14 declare LOCK_CPU="${HOME}/.lock-cpu"; 7 #-----[ global variable ]----------------------------------- 15 8 16 9 #-----[ lock ]---------------------------------------------- 17 10 function lock () 18 11 { 19 lockfile -1 $ 1;12 lockfile -1 ${1}; 20 13 } 21 14 … … 23 16 function unlock () 24 17 { 25 rm -f $ 1;18 rm -f ${1}; 26 19 } 27 20 28 #-----[ m ain ]----------------------------------------------29 function m ain()21 #-----[ my_date ]------------------------------------------- 22 function my_date () 30 23 { 31 # no test, because the script execute_n have make all test 32 FILE_CMD=$1; 33 FILE_CPT=$2; 34 FILE_CPU=$3; 24 date +"%F %T"; 25 } 35 26 36 lock $LOCK_CPT; 37 if test ! -s $FILE_CPT; then 38 echo "0" > $FILE_CPT; 27 #-----[ execute_usage ]------------------------------------- 28 function execute_usage () 29 { 30 echo "Usage : ${0} work_dir file_cmd file_cpt file_cpu"; 31 echo "Arguments : "; 32 echo " * work_dir : directory to execute command"; 33 echo " * file_cmd : list of command"; 34 echo " * file_cpt : file with the index of next command to execute"; 35 echo " * file_cpu : tmp file to stock the current index"; 36 exit; 37 } 38 39 #-----[ execute_test_usage ]-------------------------------- 40 function execute_test_usage () 41 { 42 if test ${#} -ne 4; then 43 execute_usage; 39 44 fi; 40 unlock $LOCK_CPT;41 45 42 # lit les fichiers ligne par ligne et le place dans un tableau 46 if test ! -d ${1}; then 47 echo "Directory ${1} is invalid"; 48 fi; 49 } 50 51 #-----[ execute ]------------------------------------------- 52 function execute () 53 { 54 # test_usage 55 execute_test_usage ${*}; 56 57 local -a COMMAND; 58 local -i CPT_OLD; 59 local -i CPT; 60 local WORK_DIR=${1}; 61 local FILE_CMD=${2}; 62 local FILE_CPT=${3}; 63 local FILE_CPU=${4}; 64 local LOCK_CPT="${WORK_DIR}/.lock-cpt"; 65 local LOCK_CPU="${WORK_DIR}/.lock-cpu"; 66 local FILE_CMD="distexe.command"; 67 local FILE_OUT="distexe.output"; 68 69 70 # Init CPT if this thread is the first 71 lock ${LOCK_CPT}; 72 if test ! -s ${FILE_CPT}; then 73 echo "0" > ${FILE_CPT}; 74 fi; 75 unlock ${LOCK_CPT}; 76 77 # read, line by line, the command file and write in array 43 78 CPT=0; 44 79 45 80 while read line; do 46 COMMAND[$ CPT]="$line";47 CPT=$(($ CPT+1));48 done < $ 1;81 COMMAND[${CPT}]="${line}"; 82 CPT=$((${CPT}+1)); 83 done < ${FILE_CMD}; 49 84 50 echo " * <$ $> {"`date +"%F %T"`"} is ready";85 echo " * <${HOSTNAME}-$$> {"$(my_date)"} is ready"; 51 86 52 87 # infinite loop … … 56 91 while test 1; do 57 92 # Take a number 58 CPT_OLD=$ CPT;93 CPT_OLD=${CPT}; 59 94 60 lock $LOCK_CPT; 61 CPT=`cat $FILE_CPT`; # read the index 62 echo "$(($CPT+1))" > $FILE_CPT; # write the next index 63 unlock $LOCK_CPT; 95 # Read the index, and increase 96 lock ${LOCK_CPT}; 97 CPT=$(cat ${FILE_CPT}); 98 echo "$((${CPT}+1))" > ${FILE_CPT}; 99 unlock ${LOCK_CPT}; 64 100 65 101 # test if this number is valid 66 if test $ CPT-ge ${#COMMAND[*]}; then102 if test ${CPT} -ge ${#COMMAND[*]}; then 67 103 CPT=${#COMMAND[*]}; 68 104 fi; … … 70 106 # test if between the cpt_old and cpt, there are a synchronisation command 71 107 72 # local -i CPT_SYNC=$ CPT_OLD;108 # local -i CPT_SYNC=${CPT}_OLD; 73 109 # 74 # while test $ CPT_SYNC -lt $CPT; do75 # if test -z "${COMMAND[$ CPT_SYNC]}"; then76 # echo " * <$ $> {"`date +"%F %T"`"} synchronisation [$CPT_SYNC]";110 # while test ${CPT}_SYNC -lt ${CPT}; do 111 # if test -z "${COMMAND[${CPT}_SYNC]}"; then 112 # echo " * <${HOSTNAME}-$$> {"$(my_date)"} synchronisation [${CPT}_SYNC]"; 77 113 # fi; 78 # CPT_SYNC=$(($ CPT_SYNC+1));114 # CPT_SYNC=$((${CPT}_SYNC+1)); 79 115 # done; 80 116 81 117 # test if this number is valid 82 if test $ CPT-eq ${#COMMAND[*]}; then118 if test ${CPT} -eq ${#COMMAND[*]}; then 83 119 break; 84 120 fi; 85 121 86 122 # Test if command is empty ! 87 if test ! -z "${COMMAND[$ CPT]}"; then88 local CUR _DIR=$PWD;89 90 mkdir "Task_$ CPT" &> /dev/null;91 cd "Task_$ CPT" &> /dev/null;92 echo " * <$ $> {"`date +"%F %T"`"} execute command [$CPT] : ${COMMAND[$CPT]}";93 echo "${COMMAND[$ CPT]}" > "command";94 chmod +x "command";95 eval "${COMMAND[$ CPT]}" &> "output";96 cd $ CUR_DIR&> /dev/null;123 if test ! -z "${COMMAND[${CPT}]}"; then 124 local CURREN_DIR=${PWD}; 125 cd ${WORK_DIR} &> /dev/null; 126 mkdir "Task_${CPT}" &> /dev/null; 127 cd "Task_${CPT}" &> /dev/null; 128 echo " * <${HOSTNAME}-$$> {"$(my_date)"} execute command [${CPT}] : ${COMMAND[${CPT}]}"; 129 echo "${COMMAND[${CPT}]}" > ${FILE_CMD}; 130 # chmod +x ${FILE_CMD}; 131 eval "${COMMAND[${CPT}]}" &> ${FILE_OUT}; 132 cd ${CURREN_DIR} &> /dev/null; 97 133 fi; 98 134 done; 99 135 100 echo " * <$ $> {"`date +"%F %T"`"} is done";136 echo " * <${HOSTNAME}-$$> {"$(my_date)"} is done"; 101 137 102 lock $ LOCK_CPU;103 CPT= `cat $FILE_CPU`;# read the index104 CPT=$(($ CPT-1));105 echo "$ CPT" > $FILE_CPU; # write the next index106 unlock $ LOCK_CPU;138 lock ${LOCK_CPU}; 139 CPT=$(cat ${FILE_CPU}); # read the index 140 CPT=$((${CPT}-1)); 141 echo "${CPT}" > ${FILE_CPU}; # write the next index 142 unlock ${LOCK_CPU}; 107 143 108 if test $ CPT-eq 0; then109 echo " * <$ $> {"`date +"%F %T"`"} All task is executed";110 rm $ FILE_CPU;144 if test ${CPT} -eq 0; then 145 echo " * <${HOSTNAME}-$$> {"$(my_date)"} All task is executed"; 146 rm ${FILE_CPU}; 111 147 fi; 112 148 } 113 149 114 150 #-----[ Corps ]--------------------------------------------- 115 main $*;151 execute ${*}; -
trunk/IPs/systemC/processor/Morpheo/Script/execute_n.sh
r85 r112 5 5 #----------------------------------------------------------- 6 6 7 #-----[ variable ]------------------------------------------ 8 declare -a COMMAND; 9 declare -i NB_PROCESS; 10 declare -i CPT; 11 declare FILE_CMD; 12 declare FILE_CPT; 13 declare FILE_CPU; 14 declare ID="cpu-${HOSTNAME}-$$" 7 #-----[ global variable ]----------------------------------- 15 8 16 #-----[ usage ]---------------------------------------------17 function usage()9 #-----[ nb_cpu ]-------------------------------------------- 10 function nb_cpu () 18 11 { 19 echo "Usage : $0 file [ nb_process ]"; 12 local FILE_CPUINFO=/proc/cpuinfo; 13 if test ! -f ${FILE_CPUINFO}; then 14 echo "\"${FILE_CPUINFO}\" don't exist." 15 usage; 16 fi; 17 18 #eval "${1}=`grep -c \"processor\" ${FILE_CPUINFO}`"; 19 grep -c "processor" ${FILE_CPUINFO}; 20 } 21 22 #-----[ execute_n_usage ]----------------------------------- 23 function execute_n_usage () 24 { 25 echo "Usage : ${0} word_dir file [ nb_process ]"; 20 26 echo "Arguments : "; 27 echo " * work_dir : directory to execute command"; 21 28 echo " * file : list of command"; 22 29 echo " * nb_process : number of process (default (and maximum) is the number of processor)"; … … 25 32 echo " * This script, for each command, create a directory : Task_X (X is the number of command), and execute the command in this directory."; 26 33 echo " * Two file is generate : \"output\" is the output of the execution, and \"command\" is the command lunch."; 27 28 echo " * Don't forgot the final end of line (else the last command is not executed ";34 # echo " * A command empty (no command on a line of file) is a synchronisation with all process" 35 echo " * Don't forgot the final end of line (else the last command is not executed)"; 29 36 echo ""; 30 37 exit; 31 38 } 32 39 33 #-----[ nb_cpu ]--------------------------------------------34 function nb_cpu()40 #-----[ execute_n_test_usage ]------------------------------ 41 function execute_n_test_usage () 35 42 { 36 local FILE_CPUINFO=/proc/cpuinfo; 37 if test ! -f $FILE_CPUINFO; then 38 echo "\"${FILE_CPUINFO}\" don't exist." 39 usage; 43 if test ${#} -ne 2 -a ${#} -ne 3; then 44 execute_n_usage; 40 45 fi; 41 46 42 eval "$1=`grep -c \"processor\" ${FILE_CPUINFO}`"; 43 } 44 45 #-----[ test_usage ]---------------------------------------- 46 function test_usage () 47 { 48 if test $# -ne 1 -a $# -ne 2; then 49 usage; 47 if test ! -d ${1}; then 48 echo "Directory ${1} is invalid"; 50 49 fi; 51 50 52 if test ! -f $1; then53 echo "File \"$1\" don't exist";54 51 if test -z "${MORPHEO_SCRIPT}"; then 52 echo "Environment variable MORPHEO_SCRIPT is not set"; 53 distexe_usage; 55 54 fi; 56 55 57 if test ! -s $1; then 58 echo "File \"$1\" is empty"; 59 usage; 56 if test ! -f ${2}; then 57 echo "File \"${2}\" don't exist"; 58 execute_n_usage; 59 fi; 60 61 if test ! -s ${2}; then 62 echo "File \"${2}\" is empty"; 63 execute_n_usage; 60 64 fi; 61 65 } 62 66 63 #-----[ main ]----------------------------------------------64 function main ()67 #-----[ execute_n_main ]------------------------------------ 68 function execute_n () 65 69 { 66 nb_cpu NB_PROCESS; 70 local -i NB_PROCESS=$(nb_cpu); 71 local -i CPT; 72 local WORK_DIR=${1}; 73 local FILE_CMD=${2}; 74 local FILE_CPT; 75 local FILE_CPU; 76 local ID="cpu-${HOSTNAME}-$$" 67 77 68 test_usage $*;78 execute_n_test_usage ${*}; 69 79 70 if test $ #-eq 2; then71 if test $ 2 -lt $NB_PROCESS; then72 NB_PROCESS=$ 2;80 if test ${#} -eq 2; then 81 if test ${3} -lt ${NB_PROCESS}; then 82 NB_PROCESS=${3}; 73 83 fi; 74 84 fi; 75 85 76 FILE_CMD=$1; 77 FILE_CPT="$HOME/control-"`basename $1`; 78 FILE_CPU="$HOME/$ID"; 86 FILE_CPT="${WORK_DIR}/control-"$(basename ${FILE_CMD}); 87 FILE_CPU="${WORK_DIR}/${ID}"; 79 88 80 echo "<$0>" ; 81 echo " * Initialisation ...." ; 82 echo " - host name : $HOSTNAME" ; 83 echo " - number of process : $NB_PROCESS" ; 89 echo " * <${HOSTNAME}> ${NB_PROCESS} process"; 84 90 85 91 local -i IT_NB_PROCESS=1; 86 92 local -i PID=$$; 87 93 88 echo "$ NB_PROCESS" > $FILE_CPU;94 echo "${NB_PROCESS}" > ${FILE_CPU}; 89 95 90 96 # create the same number of thread that processor 91 while test $ IT_NB_PROCESS -le $NB_PROCESS; do92 execute.sh $FILE_CMD $FILE_CPT $FILE_CPU&93 IT_NB_PROCESS=$(($ IT_NB_PROCESS+1));97 while test ${IT_NB_PROCESS} -le ${NB_PROCESS}; do 98 ${MORPHEO_SCRIPT}/execute.sh ${WORK_DIR} ${FILE_CMD} ${FILE_CPT} ${FILE_CPU} & 99 IT_NB_PROCESS=$((${IT_NB_PROCESS}+1)); 94 100 95 if test "$$" -ne $ PID; then101 if test "$$" -ne ${PID}; then 96 102 break; 97 103 fi; … … 100 106 101 107 #-----[ Corps ]--------------------------------------------- 102 main $*;108 execute_n ${*};
Note: See TracChangeset
for help on using the changeset viewer.