Overview
Comment: | Fixed presentation of globally optimised equations (ode view). |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/global-optimisation | trunk |
Files: | files | file ages | folders |
SHA3-256: |
39aff6de497fefac94a9ba80d23b32b1 |
User & Date: | geraint@users.sourceforge.net on 2002-09-10 22:09:14 |
Other Links: | branch diff | manifest | tags |
Context
2002-09-10
| ||
23:24:19 |
Rationalised local and global optimisations. Fixes presentation of locally optimised code (ode view). Much more elegant :-) check-in: f9dbeacd23 user: geraint@users.sourceforge.net tags: origin/global-optimisation, trunk | |
22:09:14 | Fixed presentation of globally optimised equations (ode view). check-in: 39aff6de49 user: geraint@users.sourceforge.net tags: origin/global-optimisation, trunk | |
2002-09-05
| ||
11:47:09 |
Does not now attempt optimisation if matrix has zero length. Declaration of matrix size is left to def.r. check-in: eacb84f61f user: geraint@users.sourceforge.net tags: origin/global-optimisation, trunk | |
Changes
Modified mttroot/mtt/bin/trans/def2write_r from [31e9ce13cc] to [f2349eb5aa].
︙ | ︙ | |||
9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.16 2002/09/03 19:34:15 geraint ## Write EdX regardless - csex is needed to create ode when not optimised. ## ## Revision 1.15 2002/08/29 15:45:20 geraint ## Tests for existence of matrix before entering shell loop. ## Tests for existence of expression before attempting to write or optimise. ## | > > > | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # Copyright (C) 2000 by Peter J. Gawthrop ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ ## Revision 1.16.2.1 2002/09/03 23:44:43 geraint ## adding global optimisation (-optg). ## ## Revision 1.16 2002/09/03 19:34:15 geraint ## Write EdX regardless - csex is needed to create ode when not optimised. ## ## Revision 1.15 2002/08/29 15:45:20 geraint ## Tests for existence of matrix before entering shell loop. ## Tests for existence of expression before attempting to write or optimise. ## |
︙ | ︙ | |||
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 | for matrix in $matrices; do matrix_exists=`grep -i MTT${matrix} ${sys}_dae.r | wc -l | gawk '{print $1}'` if [ "$matrix" = "EdX" -o $matrix_exists -gt 0 ]; then n=`first "$ns"`; ns=`rest "$ns"` m=`first "$ms"`; ms=`rest "$ms"` is=`n2m 1 $n`; js=`n2m 1 $m`; if [ $n -ge 1 ]; then for i in $is; do for j in $js; do if [ ${opt:-""} = "-optimise_local" ]; then name=`echo MTT$matrix'('$i','$j')'` mtt_optimise_local $1 "$comma$name" "$name" comma='' else echo 'write' name=`echo MTT$matrix'('$i','$j')'` echo ' '$comma$name ':=' $name '$' fi >> $1_$2_write.r done done fi fi done echo ';END;' >>$1_$2_write.r | > > | 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | for matrix in $matrices; do matrix_exists=`grep -i MTT${matrix} ${sys}_dae.r | wc -l | gawk '{print $1}'` if [ "$matrix" = "EdX" -o $matrix_exists -gt 0 ]; then n=`first "$ns"`; ns=`rest "$ns"` m=`first "$ms"`; ms=`rest "$ms"` is=`n2m 1 $n`; js=`n2m 1 $m`; echo "write \"% Begin Matrix MTT${matrix}\"$" >> $1_$2_write.r if [ $n -ge 1 ]; then for i in $is; do for j in $js; do if [ ${opt:-""} = "-optimise_local" ]; then name=`echo MTT$matrix'('$i','$j')'` mtt_optimise_local $1 "$comma$name" "$name" comma='' else echo 'write' name=`echo MTT$matrix'('$i','$j')'` echo ' '$comma$name ':=' $name '$' fi >> $1_$2_write.r done done fi echo "write \"% End Matrix MTT${matrix}\"$" >> $1_$2_write.r fi done echo ';END;' >>$1_$2_write.r |
Modified mttroot/mtt/bin/trans/mtt_optimise_global from [6fb956c743] to [2e6c7a680f].
︙ | ︙ | |||
33 34 35 36 37 38 39 | counter=`expr $counter + 1` done command="$command INAME mtt_tmp" else command="" fi | < < < < < < < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > | 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | counter=`expr $counter + 1` done command="$command INAME mtt_tmp" else command="" fi logfile=${system}_${representation}_global_optimisation.log tmpfile=${system}_${representation}_global_optimisation.tmp outfile=${system}_${representation}.r if [ ! -f $outfile ]; then exit $E_FILE_NOT_EXIST fi find_code () { file_in=${1:-${IN}} portion=${2:-"body"} head=`cat ${file_in} | gawk '($2 == "Begin" && $3 == "Matrix") { print NR }'` foot=`cat ${file_in} | gawk '($2 == "End" && $3 == "Matrix") { print NR }'` case ${portion} in head) start=0 end=${head} ;; body) start=${head} end=${foot} ;; foot) start=${foot} end=end ;; *) echo "Error in find_code: portion unknown" return -1 ;; esac cat ${file_in} |\ gawk --assign start=${start} --assign end=${end} ' (start < NR && NR < end) { print $0 }' }; # Use Reduce to perform the optimisation ${SYMBOLIC:-reduce} <<EOF > $logfile 2>&1 off nat; in "${system}_def.r"; in "$outfile"; load scope; out "$tmpfile"; $command; shut "$tmpfile"; $end; EOF cp $outfile $outfile.unoptimised cp $tmpfile $outfile.tmp find_code $outfile head > $tmpfile.head cat $tmpfile | mtt_fix_integers > $tmpfile.body find_code $outfile foot > $tmpfile.foot cat $tmpfile.head $tmpfile.body $tmpfile.foot > $outfile echo ";end;" >> $outfile mtt_error_r $logfile |