📄 svdrun.mac
字号:
# svdrun (MAC version)############################################################################# This script is used to run SVDPACKC codes on the MAC. The script# takes as input the parameters described in the sample input file "svdin".# You should invoke the runs specified by svdin via "svdrun svdin".# The ouput file from each execution of a SVDPACKC code, will be named# DATA.outN, where# DATA = name of the file containing sparse matrix # data structure,# N = id of run taken from the svdin file.## This script will execute any SVDPACKC code found # in the paths defined by "las1path, las2path, blspath, sispath, tmspath".# Any changes in the paths of the SVDPACKC source will require changes to# this script (see comments below). The user must specify the path to# the datasets (compressed Harwell-Boeing input matrices) via "filepath",# and scratch space via "workarea".# The script "svdsum" can be used to produce summary tables from the# output files generated by "svdrun".## Author: G. O'Brien, Dept. of Computer Science, UTK (March 1993)############################################################################# Set up Paths ------------------------------------------------------------set las1path "CIDER:MPW Folder:svdcodes:"set las2path "CIDER:MPW Folder:svdcodes:"set blspath "CIDER:MPW Folder:svdcodes:"set tmspath "CIDER:MPW Folder:svdcodes:"set sispath "CIDER:MPW Folder:svdcodes:"set filepath "Fritter HD:work:datasets:"set workarea "CIDER:MPW Folder:"# Check command line arguments --------------------------------------------if ({#} == 1) set inputfile {1} if Not "`Exists -f {inputfile}`" echo "{inputfile} unreadable." exit 1 endelse echo "Usage: svdrun <filename>" exitend# Read inputfile ---------------------------------------------------------set id "`streamedit {inputfile} -d -e '!/%#/ && /([\ ]+[0-9]+)(1/Pr -n (1 " "'`"set files "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*[0-9]+)([\ ]+[a-z0-9]+)([\ ]+)([a-z0-9]+)(1/ Pr -n (1 " "'`"# Get files ---------------------------------------------------------------for file in {files} if Not "`Exists -f {file}`" echo "------------------------------" echo "File Name: {filepath}{file}" duplicate -n "{filepath}{file}" "{file}" endend# Beginning of loop -------------------------------------------------------for item in {id} set file "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]+[a-z0-9]+)([\ ]+)([a-z0-9]+)(1/ Pr -n (1 '`" set program "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]+)([a-z0-9]+)(1/ Pr -n (1 '`" set iteration "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+)([0-9]+)(1/ Pr -n (1'`" set triplets "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+)([0-9]+)(2/ Pr -n (2'`" if {program} =~ /bls1/ || {program} =~ /bls2/ set subspace "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([0-9]+)(2/ Pr -n (2'`" set blocksize "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([0-9]+)(2/ Pr -n (2'`" set accuracy "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([-.[a-z0-9]+)(2/ Pr -n (2'`" set vectors "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[-.[a-z0-9]+)([\ ]+[truefals]+)(2/ Pr -n (2'`" else if {program} =~ /tms1/ || {program} =~ /tms2/ set subspace "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([0-9]+)(2/ Pr -n (2'`" set residual "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([.[0-9De\-+]+)(2/ Pr -n (2'`" set ritz "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([.[0-9De\-+]+)([\ ]+)([0-9]+)(2/ Pr -n (2'`" set accuracy "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([.[0-9De\-+]+)([\ ]+)([0-9]+)([\ ]+)([-.[a-z0-9]+)(2/ Pr -n (2'`" set vectors "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([.[0-9De\-+]+)([\ ]+[0-9]+)([\ ]+[-.[a-z0-9]+)([\ ]+[truefals]+)(2/ Pr -n (2'`" else if {program} =~ /sis1/ || {program} =~ /sis2/ set subspace "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([0-9]+)(2/ Pr -n (2'`" set accuracy "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([-.[a-z0-9]+)(2/ Pr -n (2'`" set vectors "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[-.[a-z0-9]+)([\ ]+[truefals]+)(2/ Pr -n (2'`" set extravectors `evaluate {subspace} - {triplets}` else set accuracy "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+)([-.[a-z0-9]+)(2/ Pr -n (2'`" set vectors "`streamedit {inputfile} -d -e '!/%#/ && /%(" "*'{item}')([\ ]*[a-z0-9]+)([\ ]*[a-z0-9]+)([\ ]+[0-9]+)([\ ]+[0-9]+)([\ ]+[-.[a-z0-9]+)([\ ]+)([truefals]+)(2/ Pr -n (2'`" end# Check parameters -------------------------------------------------------- if {iteration} < {triplets} echo "Iterations must be greater than tripletss." exit end # End of if echo "-----------------------------"echo "Iterations: {iteration}"echo "Triplets: {triplets}"echo "Subspace {subspace}"echo "Blocksize: {blocksize}"echo "Accuracy: {accuracy}"echo "Vectors: {vectors}"echo "Residual: {residual}"echo "Extravectors: {extravectors}"echo "Ritz: {ritz}"echo "-----------------------------"# Run programs ------------------------------------------------------------ echo -n "Duplicating {file} to a file called matrix... " duplicate -y {file} matrix echo "done." echo -n "Running {program}... " if {program} =~ /las1/ echo "'{file}' {iteration} {triplets} -1.e-30 1.e-30 {vectors} {accuracy} 5" > parameters{item} # normally this is 5 rename -y parameters{item} lap1 execute "{las1path}"{program} rename -y lao1 out1 delete -c lap1 lav1 else if {program} =~ /las2/ echo "'{file}' {iteration} {triplets} -1.e-30 1.e-30 {vectors} {accuracy} 5" > parameters{item} # normally this is 5 rename -y parameters{item} lap2 execute "{las2path}"{program} rename -y lao2 out1 delete -c lap2 lav2 else if {program} =~ /bls1/ echo "'{file}' {iteration} {subspace} {blocksize} {triplets} {accuracy} {vectors}" > parameters{item} rename -y parameters{item} blp1 execute "{blspath}"{program} rename -y blo1 out1 delete -c blp1 blv1 else if {program} =~ /bls2/ echo "'{file}' {iteration} {subspace} {blocksize} {triplets} {accuracy} {vectors}" > parameters{item} rename -y parameters{item} blp2 execute "{blspath}"{program} rename -y blo2 out1 delete -c blp2 blv2 else if {program} =~ /sis1/ echo "'{file}' {triplets} {extravectors} {iteration} {accuracy} {vectors}" > parameters{item} rename -y parameters{item} sip1 execute "{sispath}"{program} rename -y sio1 out1 delete -c sio4 sip1 else if {program} =~ /sis2/ echo "'{file}' {triplets} {extravectors} {iteration} {accuracy} {vectors}" > parameters{item} rename -y parameters{item} sip2 execute "{sispath}"{program} rename -y sio2 out1 delete -c sio5 sip2 else if {program} =~ /tms1/ echo "'{file}' {triplets} {subspace} {ritz} {accuracy} {residual} {vectors} {iteration}" > parameters{item} rename -y parameters{item} tmp1 execute "{tmspath}"{program} rename -y tmo1 out1 delete -c -i tmp1 ivec else if {program} =~ /tms2/ echo "'{file}' {triplets} {subspace} {ritz} {accuracy} {residual} {vectors} {iteration}" > parameters{item} rename -y parameters{item} tmp2 execute "{tmspath}"{program} rename -y tmo2 out1 delete -c -i tmp2 ivec end echo "done." # duplicate -n "{las1path}{program}" "{workarea}{program}" # execute {program} -f parameters{item} {file} out1 outw echo -n "Creating output file... " echo -n " ... DATE: " > {file}.out{item} date -a >> {file}.out{item} catenate out1 >> {file}.out{item} echo "done." end # End of loop# Cleanup ------------------------------------------------------------------delete matrixdelete out1for file in {files} if "`Exists -f {file}`" echo -n "Deleting {file}... " delete {file} echo "done." end end echo " "echo "**** SVDRUN Complete ****"I have not done final testing for these scripts. The results I have obtained so far have been produced with this script. Basically this ismy caveat for future revisions.obrien.---Gavin O'Brien ......................................... a1b Ayres HallDepartment of Computer Science ........... The University of Tennesseeobrien@cs.utk.edu (615) 974-8990 ............ Knoxville, TN 37996-1301
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -