X-Git-Url: https://s3miclassical.com/gitweb/?p=weak_simulation_stab_extent.git;a=blobdiff_plain;f=timing_t_enforceddelta.bash;fp=timing_t_enforceddelta.bash;h=7026a1096434f9d44f3b23b32e11058588f2e1ea;hp=0000000000000000000000000000000000000000;hb=7bc25656311c391af6a4d5814cc82080981c63c4;hpb=d914e7c183347b1340988e0869a6e053dd573991 diff --git a/timing_t_enforceddelta.bash b/timing_t_enforceddelta.bash new file mode 100644 index 0000000..7026a10 --- /dev/null +++ b/timing_t_enforceddelta.bash @@ -0,0 +1,127 @@ +#!/bin/bash +# Bash script to get some timing analysis + +# Runtime for different t's + +# number of runs to run in parallel +maxthreads=10 +# NOTE: that this is not the same as running weaksim in parallel! For that you need to set OMP_NUM_THREADS appropriately (see README.txt) +# Note that setting OMP_NUM_THREADS>1 will lead to more pessimistic runtime analysis, due to parallelization overhead, though the runs should complete faster! + +## For the most accurate time analysis, run with +## export OMP_NUM_THREADS=1 +## export OMP_PROC_BIND=false +#export OMP_NUM_THREADS=6 +#export OMP_PROC_BIND=true +export OMP_NUM_THREADS=1 +export OMP_PROC_BIND=false + +delta=0.1 +deltasquared=`bc -l <<< $delta^2` + +numruns=10 #1000 + +#for t in 4 8 +for t in 8 +#for t in 16 +#for t in 32 +#for t in 2 4 8 #16 #32 +#for t in 8 16 32 +do + #delta=`bc -l <<< 10^-$deltapower` + echo "t=$t" + # alpha is the fraction of t supplemental states that we will take to keep the cost the same + # alpha = delta*xi^t/t + #echo "0.25*$delta*1.17^$t/$t" + #alpha=`bc -l <<< 0.25*$delta*1.17^$t/$t` + #%echo "alpha=$alpha" + TIMEFORMAT='%3R'; + #number of runs + for (( i=1; i<=$numruns; i++ )) + do + # Generate two t-Pauli measurements + ./randominputcommutingHermitianPauli2 $t $t 1000 | head -n $[2*$t+4] > inputPauli_$[i].txt + sleep 1 + done + for (( i=1; i<=$numruns; i++ )) + do + # Exact measurements + ./multipauli < inputPauli_$[i].txt | tail -1 | cut -d ' ' -f 1 > tmp_$[t]_exact_$[i].txt & + #seed=`od -A n -t d -N 4 /dev/urandom |tr -d ' '|tr -d '-'` + #./weaksim 0.001 0.25 2 $seed < inputPauli_$[i].txt | tail -1 | cut -d ' ' -f 3 > tmp_$[t]_exact_$[i].txt & + #./weaksim 0.01 0.25 2 $seed < inputPauli_$[i].txt | tail -1 | cut -d ' ' -f 3 > tmp_$[t]_exact_$[i].txt & + # minus one below so as not to count grep search job + numthreads=$[`ps -aux | grep multipauli | wc -l`-1] + #numthreads=$[`ps -aux | grep weaksim | wc -l`-1] + while [ $numthreads -gt $[$maxthreads-1] ] + do + sleep 10 + numthreads=$[`ps -aux | grep multipauli | wc -l`-1] + #numthreads=$[`ps -aux | grep weaksim | wc -l`-1] + done + done + + for (( i=1; i<=$numruns; i++ )) + do + echo "run: $i" + + approxerror=1.0 + approxcoherror=1.0 + + samplePrefactor=0.001 + seed=`od -A n -t d -N 4 /dev/urandom |tr -d ' '|tr -d '-'` + while (( $(echo "$approxerror > $deltasquared" |bc -l) )); do + echo "samplePrefactor=$samplePrefactor" + ( time ( ./weaksim $delta 0.25 0 $seed $samplePrefactor < inputPauli_$[i].txt >> tmp_$[t]_iid_$[i].txt ) ) 2> tmp_$[t]_iid_$[i]_timing.txt + + exactanswer=`tail -1 tmp_$[t]_exact_$[i].txt` + approxanswer=`tail -1 tmp_$[t]_iid_$[i].txt | cut -d ' ' -f 3` + approxerror=`bc -l <<< "sqrt(($exactanswer-$approxanswer)^2)"` + echo $approxerror + samplePrefactor=`bc -l <<< "scale=4;($samplePrefactor*1.1)/1"` + done + samplePrefactor=`bc -l <<< "scale=4;($samplePrefactor/1.1)/1"` + echo "samplePrefactor used=$samplePrefactor" + echo $approxerror >> tmp_$[t]_iid_$[i]_error.txt + + samplePrefactor=0.001 + while (( $(echo "$approxcoherror > $deltasquared" |bc -l) )); do + echo "samplePrefactor=$samplePrefactor" + ( time ( ./weaksim $delta 0.25 2 $seed $samplePrefactor < inputPauli_$[i].txt >> tmp_$[t]_t_$[i].txt ) ) 2> tmp_$[t]_t_$[i]_timing.txt + + exactanswer=`tail -1 tmp_$[t]_exact_$[i].txt` + approxcoherentanswer=`tail -1 tmp_$[t]_t_$[i].txt | cut -d ' ' -f 3` + approxcoherror=`bc -l <<< "sqrt(($exactanswer-$approxcoherentanswer)^2)"` + echo $approxcoherror + samplePrefactor=`bc -l <<< "scale=4;($samplePrefactor*1.1)/1"` + done + samplePrefactor=`bc -l <<< "scale=4;($samplePrefactor/1.1)/1"` + echo "samplePrefactor used=$samplePrefactor" + echo $approxcoherror >> tmp_$[t]_t_$[i]_error.txt + + done + + for (( i=1; i<=$numruns; i++ )) + do + rm tmp_$[t]_exact_$[i].txt; + rm tmp_$[t]_iid_$[i].txt; + rm tmp_$[t]_t_$[i].txt; + rm inputPauli_$[i].txt; + #echo "*******************" >> tmp_$[t]_iid.txt + #echo "*******************" >> tmp_$[t]_t.txt + # sleep 1 + done + echo "Longest runtime:" >> tmp_$[t]_iid.txt + cat tmp_$[t]_iid_[1-9]*_timing.txt | sort -n | tail -2 >> tmp_$[t]_iid.txt + rm tmp_$[t]_iid_[1-9]*_timing.txt + echo "Longest runtime:" >> tmp_$[t]_t.txt + cat tmp_$[t]_t_[1-9]*_timing.txt | sort -n | tail -2 >> tmp_$[t]_t.txt + rm tmp_$[t]_t_[1-9]*_timing.txt + echo "Largest error:" >> tmp_$[t]_iid.txt + cat tmp_$[t]_iid_[1-9]*_error.txt | sort -n | tail -1 >> tmp_$[t]_iid.txt + rm tmp_$[t]_iid_[1-9]*_error.txt + echo "Largest error:" >> tmp_$[t]_t.txt + cat tmp_$[t]_t_[1-9]*_error.txt | sort -n | tail -1 >> tmp_$[t]_t.txt + rm tmp_$[t]_t_[1-9]*_error.txt + echo "delta=$delta done!" +done