diff --git a/performance/qbit_scaling_graph.csv b/performance/qbit_scaling_graph.csv index 2dcd90c..d453fd8 100644 --- a/performance/qbit_scaling_graph.csv +++ b/performance/qbit_scaling_graph.csv @@ -1,12 +1,12 @@ -4.000000000000000000e+00 5.000000000000000000e+01 3.429655850231938768e-04 3.964784429570424898e-07 -5.000000000000000000e+00 5.000000000000000000e+01 3.475331880617887111e-04 6.532202621031675207e-07 -6.000000000000000000e+00 5.000000000000000000e+01 3.569947167003799425e-04 6.858285888009526683e-07 -7.000000000000000000e+00 5.000000000000000000e+01 3.670373971337019710e-04 8.737464017398305182e-07 -8.000000000000000000e+00 5.000000000000000000e+01 3.798681950138416120e-04 8.880263000414631264e-07 -9.000000000000000000e+00 5.000000000000000000e+01 3.896756644503006329e-04 8.241847954707531607e-07 -1.000000000000000000e+01 5.000000000000000000e+01 4.098476440485683504e-04 1.154128418230815053e-06 -1.100000000000000000e+01 5.000000000000000000e+01 4.220041636488697039e-04 1.070578629651815833e-06 -1.200000000000000000e+01 5.000000000000000000e+01 4.430631950223565502e-04 1.530158225225066135e-06 -1.300000000000000000e+01 5.000000000000000000e+01 4.633520061347204356e-04 1.692271924113339457e-06 -1.400000000000000000e+01 5.000000000000000000e+01 4.852215242759225157e-04 1.838279848627781220e-06 -1.500000000000000000e+01 5.000000000000000000e+01 5.214459826529491832e-04 1.847875920612266566e-06 +4.000000000000000000e+00 5.000000000000000000e+01 3.484509700274429590e-04 9.681730019426008163e-07 +5.000000000000000000e+00 5.000000000000000000e+01 3.547070120002899260e-04 9.733495917822248312e-07 +6.000000000000000000e+00 5.000000000000000000e+01 3.644156266606539646e-04 8.595537339256123852e-07 +7.000000000000000000e+00 5.000000000000000000e+01 3.754197057086067777e-04 1.223686105133776916e-06 +8.000000000000000000e+00 5.000000000000000000e+01 3.907352674923458922e-04 1.315732635550278415e-06 +9.000000000000000000e+00 5.000000000000000000e+01 4.001314888854621372e-04 1.049960208967149392e-06 +1.000000000000000000e+01 5.000000000000000000e+01 4.195807880005304595e-04 1.334920356876227909e-06 +1.100000000000000000e+01 5.000000000000000000e+01 4.363701709073873071e-04 1.471394078704268421e-06 +1.200000000000000000e+01 5.000000000000000000e+01 4.579273133367678362e-04 1.285867017818870099e-06 +1.300000000000000000e+01 5.000000000000000000e+01 4.767101661505316278e-04 1.872249450138078510e-06 +1.400000000000000000e+01 5.000000000000000000e+01 5.013123571461619967e-04 2.227174447433320657e-06 +1.500000000000000000e+01 5.000000000000000000e+01 5.362610986679404706e-04 2.000896704568743328e-06 diff --git a/performance/qbit_scaling_naive.csv b/performance/qbit_scaling_naive.csv index 0c78f48..1c3e424 100644 --- a/performance/qbit_scaling_naive.csv +++ b/performance/qbit_scaling_naive.csv @@ -1,12 +1,12 @@ -4.000000000000000000e+00 5.000000000000000000e+01 5.892368650893331028e-04 9.659514404922622761e-07 -5.000000000000000000e+00 5.000000000000000000e+01 6.003430280397878665e-04 1.065010131039797397e-06 -6.000000000000000000e+00 5.000000000000000000e+01 6.182032666644470377e-04 8.375309081009639130e-07 -7.000000000000000000e+00 5.000000000000000000e+01 6.621159000392905052e-04 1.116822172068341379e-06 -8.000000000000000000e+00 5.000000000000000000e+01 7.066036874857672999e-04 1.045121177378059615e-06 -9.000000000000000000e+00 5.000000000000000000e+01 7.926702222660727193e-04 1.521812902193708585e-06 -1.000000000000000000e+01 5.000000000000000000e+01 9.538586060516536600e-04 2.519431877046405846e-06 -1.100000000000000000e+01 5.000000000000000000e+01 1.276251990916948053e-03 3.274849717186824768e-06 -1.200000000000000000e+01 5.000000000000000000e+01 1.937763718330339988e-03 5.380974020943288937e-06 -1.300000000000000000e+01 5.000000000000000000e+01 3.305397004615559520e-03 1.094398743059485016e-05 -1.400000000000000000e+01 5.000000000000000000e+01 5.888714548590152226e-03 1.961078728083609431e-05 -1.500000000000000000e+01 5.000000000000000000e+01 1.090257817468470031e-02 3.954920246897699910e-05 +4.000000000000000000e+00 5.000000000000000000e+01 5.742717300199728621e-04 1.376083459359969811e-06 +5.000000000000000000e+00 5.000000000000000000e+01 5.856804319919319077e-04 1.145342547345569258e-06 +6.000000000000000000e+00 5.000000000000000000e+01 6.073178133131781030e-04 1.301510871683869304e-06 +7.000000000000000000e+00 5.000000000000000000e+01 6.544547342881350217e-04 1.225000970214631633e-06 +8.000000000000000000e+00 5.000000000000000000e+01 6.991200974925959339e-04 1.113213974802071661e-06 +9.000000000000000000e+00 5.000000000000000000e+01 7.872913288964710063e-04 1.773735728592762829e-06 +1.000000000000000000e+01 5.000000000000000000e+01 9.519731820055313612e-04 1.663559103282315900e-06 +1.100000000000000000e+01 5.000000000000000000e+01 1.298034858179810411e-03 3.258549538096835914e-06 +1.200000000000000000e+01 5.000000000000000000e+01 1.977239334996738675e-03 6.361955627923420395e-06 +1.300000000000000000e+01 5.000000000000000000e+01 3.386829553853133983e-03 1.045062312440070923e-05 +1.400000000000000000e+01 5.000000000000000000e+01 6.018249490002096878e-03 1.923587672545671009e-05 +1.500000000000000000e+01 5.000000000000000000e+01 1.119012055732916157e-02 4.010852629378700983e-05 diff --git a/performance/regimes/circuit_scaling_graph0.csv b/performance/regimes/circuit_scaling_graph0.csv index e247678..b0062ef 100644 --- a/performance/regimes/circuit_scaling_graph0.csv +++ b/performance/regimes/circuit_scaling_graph0.csv @@ -1,48 +1,44 @@ -4.000000000000000000e+02 1.000000000000000000e+02 1.878297269940958384e-03 1.469699604704835522e-06 -4.500000000000000000e+02 1.000000000000000000e+02 2.055278760053624865e-03 1.715237596259608518e-06 -5.000000000000000000e+02 1.000000000000000000e+02 2.220861629939463629e-03 1.945376780331531752e-06 -5.500000000000000000e+02 1.000000000000000000e+02 2.415533940038585691e-03 3.703603558244418543e-06 -6.000000000000000000e+02 1.000000000000000000e+02 2.588112829980673216e-03 3.987060218289845164e-06 -6.500000000000000000e+02 1.000000000000000000e+02 2.761849560047267057e-03 3.981340552536311654e-06 -7.000000000000000000e+02 1.000000000000000000e+02 2.950303999969037302e-03 5.917667108000479223e-06 -7.500000000000000000e+02 1.000000000000000000e+02 3.159523300018918148e-03 1.023882160212621164e-05 -8.000000000000000000e+02 1.000000000000000000e+02 3.359561679935723234e-03 1.224085947659805602e-05 -8.500000000000000000e+02 1.000000000000000000e+02 3.626898989969049372e-03 2.129400040479119394e-05 -9.000000000000000000e+02 1.000000000000000000e+02 3.841637020050256771e-03 2.434921819346224365e-05 -9.500000000000000000e+02 1.000000000000000000e+02 4.171545780045562458e-03 3.666930452842941443e-05 -1.000000000000000000e+03 1.000000000000000000e+02 4.603988039816613378e-03 6.082264928340738172e-05 -1.050000000000000000e+03 1.000000000000000000e+02 5.112743269783095491e-03 9.611161984726047567e-05 -1.100000000000000000e+03 1.000000000000000000e+02 5.897319330142636144e-03 1.576824434319171338e-04 -1.150000000000000000e+03 1.000000000000000000e+02 6.631839999936346014e-03 2.091483361039986474e-04 -1.200000000000000000e+03 1.000000000000000000e+02 7.897017169780156179e-03 2.801692486183573810e-04 -1.250000000000000000e+03 1.000000000000000000e+02 9.044396739882358191e-03 2.748119728933274457e-04 -1.300000000000000000e+03 1.000000000000000000e+02 1.131971647970203727e-02 4.650817747928799204e-04 -1.350000000000000000e+03 1.000000000000000000e+02 1.478023339011997478e-02 7.016754168579358852e-04 -1.400000000000000000e+03 1.000000000000000000e+02 1.734726401005900684e-02 7.951340541898133021e-04 -1.450000000000000000e+03 1.000000000000000000e+02 2.102190037010586918e-02 1.002624218122781909e-03 -1.500000000000000000e+03 1.000000000000000000e+02 2.402437226992333238e-02 1.037823513475687100e-03 -1.550000000000000000e+03 1.000000000000000000e+02 3.051912467017246083e-02 1.168558928642808798e-03 -1.600000000000000000e+03 1.000000000000000000e+02 3.283033068997610882e-02 1.249844785100136550e-03 -1.650000000000000000e+03 1.000000000000000000e+02 4.531796266983292160e-02 1.759917786033934287e-03 -1.700000000000000000e+03 1.000000000000000000e+02 5.165379479996772688e-02 1.799192348621859701e-03 -1.750000000000000000e+03 1.000000000000000000e+02 6.068050979989493554e-02 2.315898416538343142e-03 -1.800000000000000000e+03 1.000000000000000000e+02 6.786087045005842477e-02 2.260252367511322510e-03 -1.850000000000000000e+03 1.000000000000000000e+02 8.373902886007272839e-02 2.654447861473096301e-03 -1.900000000000000000e+03 1.000000000000000000e+02 9.122002596010134190e-02 2.613980352536835351e-03 -1.950000000000000000e+03 1.000000000000000000e+02 1.087346132399034104e-01 3.130771289811267507e-03 -2.000000000000000000e+03 1.000000000000000000e+02 1.181711647100382873e-01 3.234989605282795420e-03 -2.050000000000000000e+03 1.000000000000000000e+02 1.346470424801373134e-01 4.163674923361087264e-03 -2.100000000000000000e+03 1.000000000000000000e+02 1.546626253095746417e-01 4.494893701434156223e-03 -2.150000000000000000e+03 1.000000000000000000e+02 1.646854265300135012e-01 4.091584128325677014e-03 -2.200000000000000000e+03 1.000000000000000000e+02 1.900906667797608030e-01 4.732069261775800027e-03 -2.250000000000000000e+03 1.000000000000000000e+02 2.079606859297200572e-01 4.779788452055614388e-03 -2.300000000000000000e+03 1.000000000000000000e+02 2.315051704902725827e-01 5.636123702875270834e-03 -2.350000000000000000e+03 1.000000000000000000e+02 2.495618172797549050e-01 5.018548718196205044e-03 -2.400000000000000000e+03 1.000000000000000000e+02 2.720929994599646240e-01 5.121098331551519889e-03 -2.450000000000000000e+03 1.000000000000000000e+02 2.855364293801903597e-01 5.864504716311486239e-03 -2.500000000000000000e+03 1.000000000000000000e+02 3.189779279900540332e-01 5.760209798368623457e-03 -2.550000000000000000e+03 1.000000000000000000e+02 3.334914251402005814e-01 6.504656122683366223e-03 -2.600000000000000000e+03 1.000000000000000000e+02 3.574019711399887278e-01 6.211228761635085791e-03 -2.650000000000000000e+03 1.000000000000000000e+02 3.789796420900893303e-01 5.768871972682301959e-03 -2.700000000000000000e+03 1.000000000000000000e+02 4.099927911701161110e-01 6.379357717969649441e-03 -2.750000000000000000e+03 1.000000000000000000e+02 4.301786762999472713e-01 7.305549794887298935e-03 +4.000000000000000000e+02 5.000000000000000000e+01 1.931225240095955009e-03 2.112013598717693821e-06 +4.500000000000000000e+02 5.000000000000000000e+01 2.111660479913552921e-03 2.847137081085609582e-06 +5.000000000000000000e+02 5.000000000000000000e+01 2.288848419921123492e-03 3.832802132508893657e-06 +5.500000000000000000e+02 5.000000000000000000e+01 2.476271999912569351e-03 3.146788456997646563e-06 +6.000000000000000000e+02 5.000000000000000000e+01 2.658127619997685716e-03 4.913056949652575384e-06 +6.500000000000000000e+02 5.000000000000000000e+01 2.843284639984631004e-03 5.988713071469712405e-06 +7.000000000000000000e+02 5.000000000000000000e+01 3.037242280024657001e-03 9.398645711837915070e-06 +7.500000000000000000e+02 5.000000000000000000e+01 3.263561659914557787e-03 2.474029637956172832e-05 +8.000000000000000000e+02 5.000000000000000000e+01 3.442404479992547048e-03 1.388115551910614284e-05 +8.500000000000000000e+02 5.000000000000000000e+01 3.699283740061218729e-03 2.646058029581309463e-05 +9.000000000000000000e+02 5.000000000000000000e+01 3.961829300078534115e-03 3.594241075191235751e-05 +9.500000000000000000e+02 5.000000000000000000e+01 4.313467119991401012e-03 5.795120372566926352e-05 +1.000000000000000000e+03 5.000000000000000000e+01 4.756924480007001209e-03 9.754210278672716388e-05 +1.050000000000000000e+03 5.000000000000000000e+01 5.048975600057019515e-03 9.832522057125359517e-05 +1.100000000000000000e+03 5.000000000000000000e+01 6.053356180000264014e-03 2.154349749321923476e-04 +1.150000000000000000e+03 5.000000000000000000e+01 6.894734680081456013e-03 3.606662590763895114e-04 +1.200000000000000000e+03 5.000000000000000000e+01 8.244570780007051680e-03 3.822308048345223288e-04 +1.250000000000000000e+03 5.000000000000000000e+01 9.553718940042017424e-03 5.302240688915590538e-04 +1.300000000000000000e+03 5.000000000000000000e+01 1.184980282003380084e-02 6.864058991245668585e-04 +1.350000000000000000e+03 5.000000000000000000e+01 1.417426442005307805e-02 8.741447240916265949e-04 +1.400000000000000000e+03 5.000000000000000000e+01 1.690690740002537620e-02 1.359623862012657777e-03 +1.450000000000000000e+03 5.000000000000000000e+01 2.352294856003936743e-02 1.643019317463906412e-03 +1.500000000000000000e+03 5.000000000000000000e+01 2.400547499995809783e-02 1.370994356865607106e-03 +1.550000000000000000e+03 5.000000000000000000e+01 3.000968385991654996e-02 1.694501521012075880e-03 +1.600000000000000000e+03 5.000000000000000000e+01 3.971789155988517117e-02 2.626076563300825013e-03 +1.650000000000000000e+03 5.000000000000000000e+01 5.087850068002808257e-02 2.183236898913883724e-03 +1.700000000000000000e+03 5.000000000000000000e+01 5.476505484008157426e-02 2.516891357755131342e-03 +1.750000000000000000e+03 5.000000000000000000e+01 6.191398139997545541e-02 3.556265728489130425e-03 +1.800000000000000000e+03 5.000000000000000000e+01 7.233656460004567190e-02 3.437157773249340138e-03 +1.850000000000000000e+03 5.000000000000000000e+01 8.504432361994986034e-02 3.693492224497613684e-03 +1.900000000000000000e+03 5.000000000000000000e+01 9.935499721992528677e-02 4.847772431507223374e-03 +1.950000000000000000e+03 5.000000000000000000e+01 1.146372398200401210e-01 4.894725406007245129e-03 +2.000000000000000000e+03 5.000000000000000000e+01 1.263222946400128499e-01 5.192728387072775495e-03 +2.050000000000000000e+03 5.000000000000000000e+01 1.392392367200045444e-01 5.543183168345876440e-03 +2.100000000000000000e+03 5.000000000000000000e+01 1.569292686599874365e-01 5.339760822306610644e-03 +2.150000000000000000e+03 5.000000000000000000e+01 1.698793484200541437e-01 5.850179759695975888e-03 +2.200000000000000000e+03 5.000000000000000000e+01 1.908933651599909465e-01 6.013030767869216933e-03 +2.250000000000000000e+03 5.000000000000000000e+01 2.138584588800222230e-01 6.246981714487595365e-03 +2.300000000000000000e+03 5.000000000000000000e+01 2.357358600800034676e-01 7.243216183112379664e-03 +2.350000000000000000e+03 5.000000000000000000e+01 2.531458577800731469e-01 7.701709672430835998e-03 +2.400000000000000000e+03 5.000000000000000000e+01 2.713865468400035730e-01 8.767331273014544735e-03 +2.450000000000000000e+03 5.000000000000000000e+01 2.981100642999808814e-01 8.410889362921478846e-03 +2.500000000000000000e+03 5.000000000000000000e+01 3.260302986400347436e-01 9.238400765371558576e-03 +2.550000000000000000e+03 5.000000000000000000e+01 3.507109312400097934e-01 8.723097508660151295e-03 diff --git a/performance/regimes/circuit_scaling_graph1.csv b/performance/regimes/circuit_scaling_graph1.csv index 075f801..1c77574 100644 --- a/performance/regimes/circuit_scaling_graph1.csv +++ b/performance/regimes/circuit_scaling_graph1.csv @@ -1,48 +1,44 @@ -4.000000000000000000e+02 1.000000000000000000e+02 1.674102860051789347e-03 6.228299552356924658e-06 -4.500000000000000000e+02 1.000000000000000000e+02 1.903562340048665577e-03 1.316833211606872975e-05 -5.000000000000000000e+02 1.000000000000000000e+02 2.123120620053669041e-03 1.197622936239156575e-05 -5.500000000000000000e+02 1.000000000000000000e+02 2.480724299966823206e-03 2.750882032957220326e-05 -6.000000000000000000e+02 1.000000000000000000e+02 2.895569670145050744e-03 5.288688606734717474e-05 -6.500000000000000000e+02 1.000000000000000000e+02 3.315797200011729937e-03 6.324376155582976829e-05 -7.000000000000000000e+02 1.000000000000000000e+02 3.988737380132079471e-03 8.966749854463253178e-05 -7.500000000000000000e+02 1.000000000000000000e+02 5.103451869799755826e-03 1.584853305380074038e-04 -8.000000000000000000e+02 1.000000000000000000e+02 6.057379170051717387e-03 1.642264403316068798e-04 -8.500000000000000000e+02 1.000000000000000000e+02 6.927488980109046748e-03 1.944677459404338588e-04 -9.000000000000000000e+02 1.000000000000000000e+02 8.814388450155093147e-03 2.330794777089288878e-04 -9.500000000000000000e+02 1.000000000000000000e+02 1.064539701990725035e-02 3.041454790179711994e-04 -1.000000000000000000e+03 1.000000000000000000e+02 1.240550483009428794e-02 3.095759025769566721e-04 -1.050000000000000000e+03 1.000000000000000000e+02 1.434945806995529052e-02 3.462888056603818758e-04 -1.100000000000000000e+03 1.000000000000000000e+02 1.677911746977770249e-02 3.749990243690372164e-04 -1.150000000000000000e+03 1.000000000000000000e+02 1.831551297967962469e-02 4.604813699809882270e-04 -1.200000000000000000e+03 1.000000000000000000e+02 2.237008690015500345e-02 4.574082591796148041e-04 -1.250000000000000000e+03 1.000000000000000000e+02 2.469113503011612781e-02 5.159501949634852890e-04 -1.300000000000000000e+03 1.000000000000000000e+02 2.771557212010520785e-02 5.422901593142985836e-04 -1.350000000000000000e+03 1.000000000000000000e+02 3.089818914999341304e-02 6.274980749590892710e-04 -1.400000000000000000e+03 1.000000000000000000e+02 3.351067304993193829e-02 6.258951037710455863e-04 -1.450000000000000000e+03 1.000000000000000000e+02 3.672902733014780235e-02 6.463995733058402766e-04 -1.500000000000000000e+03 1.000000000000000000e+02 4.152314034017763611e-02 5.716930792484469599e-04 -1.550000000000000000e+03 1.000000000000000000e+02 4.438926930015441030e-02 6.721290882549972113e-04 -1.600000000000000000e+03 1.000000000000000000e+02 4.552266089023760537e-02 7.453956208500090320e-04 -1.650000000000000000e+03 1.000000000000000000e+02 5.021009291991504475e-02 6.862840120510182822e-04 -1.700000000000000000e+03 1.000000000000000000e+02 5.453786087025946222e-02 6.546641481410810049e-04 -1.750000000000000000e+03 1.000000000000000000e+02 5.628588498999306799e-02 8.462562766021738741e-04 -1.800000000000000000e+03 1.000000000000000000e+02 6.095474819019727764e-02 7.517515934752839373e-04 -1.850000000000000000e+03 1.000000000000000000e+02 6.366028950997133784e-02 8.152459203989234496e-04 -1.900000000000000000e+03 1.000000000000000000e+02 6.785009805011213424e-02 7.698881522351951924e-04 -1.950000000000000000e+03 1.000000000000000000e+02 7.188723056995513505e-02 6.833998803979537658e-04 -2.000000000000000000e+03 1.000000000000000000e+02 7.566429144997527390e-02 8.365863514799617290e-04 -2.050000000000000000e+03 1.000000000000000000e+02 7.861056976002146757e-02 8.193592148539533947e-04 -2.100000000000000000e+03 1.000000000000000000e+02 8.247058204007771953e-02 8.197200493282149258e-04 -2.150000000000000000e+03 1.000000000000000000e+02 8.493876021024333867e-02 8.342453122990786934e-04 -2.200000000000000000e+03 1.000000000000000000e+02 8.813758615971892252e-02 7.911501815949151164e-04 -2.250000000000000000e+03 1.000000000000000000e+02 9.468871829980343713e-02 9.350049573202011063e-04 -2.300000000000000000e+03 1.000000000000000000e+02 9.786318559981736775e-02 9.314812240165508146e-04 -2.350000000000000000e+03 1.000000000000000000e+02 1.018545777700273908e-01 9.261618059141366391e-04 -2.400000000000000000e+03 1.000000000000000000e+02 1.051895230298396239e-01 8.616776153947947308e-04 -2.450000000000000000e+03 1.000000000000000000e+02 1.070327199899838849e-01 9.274632293436604977e-04 -2.500000000000000000e+03 1.000000000000000000e+02 1.112921274800100918e-01 8.472622784928632040e-04 -2.550000000000000000e+03 1.000000000000000000e+02 1.145994285400956936e-01 9.315154484987448174e-04 -2.600000000000000000e+03 1.000000000000000000e+02 1.193636358499861605e-01 9.910600547399727421e-04 -2.650000000000000000e+03 1.000000000000000000e+02 1.218935546997090558e-01 8.861179673363818541e-04 -2.700000000000000000e+03 1.000000000000000000e+02 1.261190436399556303e-01 9.270747298007727191e-04 -2.750000000000000000e+03 1.000000000000000000e+02 1.291786062698520310e-01 9.713837766685412545e-04 +4.000000000000000000e+02 5.000000000000000000e+01 1.707738740005879585e-03 7.100286700408404613e-06 +4.500000000000000000e+02 5.000000000000000000e+01 1.906502640049438820e-03 9.853300832137104791e-06 +5.000000000000000000e+02 5.000000000000000000e+01 2.194008100050268747e-03 2.225048323246775191e-05 +5.500000000000000000e+02 5.000000000000000000e+01 2.483741079940955578e-03 2.902929435898853839e-05 +6.000000000000000000e+02 5.000000000000000000e+01 2.970475479905871751e-03 5.357547401616545894e-05 +6.500000000000000000e+02 5.000000000000000000e+01 3.360749460098304622e-03 7.760192059341477707e-05 +7.000000000000000000e+02 5.000000000000000000e+01 4.184713580034440245e-03 1.257844672870958591e-04 +7.500000000000000000e+02 5.000000000000000000e+01 5.004965839962096513e-03 1.756539085744744525e-04 +8.000000000000000000e+02 5.000000000000000000e+01 5.734667459946649927e-03 1.910387597965613972e-04 +8.500000000000000000e+02 5.000000000000000000e+01 7.131355419896862752e-03 1.934052327071289392e-04 +9.000000000000000000e+02 5.000000000000000000e+01 8.802635380070568394e-03 3.408876648940773542e-04 +9.500000000000000000e+02 5.000000000000000000e+01 1.094996251993506954e-02 3.780652528111945248e-04 +1.000000000000000000e+03 5.000000000000000000e+01 1.176883709997127853e-02 3.875201443014548758e-04 +1.050000000000000000e+03 5.000000000000000000e+01 1.426043346002188635e-02 4.682970383390439679e-04 +1.100000000000000000e+03 5.000000000000000000e+01 1.606511461995978676e-02 4.821875787626857496e-04 +1.150000000000000000e+03 5.000000000000000000e+01 1.810014320004484090e-02 5.439479727767238936e-04 +1.200000000000000000e+03 5.000000000000000000e+01 2.132428097998854272e-02 5.977411510180347153e-04 +1.250000000000000000e+03 5.000000000000000000e+01 2.537384307997854124e-02 6.676700647178173504e-04 +1.300000000000000000e+03 5.000000000000000000e+01 2.700082207993546174e-02 6.834614338333218136e-04 +1.350000000000000000e+03 5.000000000000000000e+01 2.877831694000633489e-02 6.806464215638255433e-04 +1.400000000000000000e+03 5.000000000000000000e+01 3.247053898001468070e-02 7.730662439967084590e-04 +1.450000000000000000e+03 5.000000000000000000e+01 3.598561208000319173e-02 8.005966432160921409e-04 +1.500000000000000000e+03 5.000000000000000000e+01 3.962553389999811521e-02 9.617593729943524914e-04 +1.550000000000000000e+03 5.000000000000000000e+01 4.163353030004145888e-02 9.548479191853584576e-04 +1.600000000000000000e+03 5.000000000000000000e+01 4.562790117995973310e-02 7.835441508272948316e-04 +1.650000000000000000e+03 5.000000000000000000e+01 4.898105746005967237e-02 8.710963335263738599e-04 +1.700000000000000000e+03 5.000000000000000000e+01 5.169834830003310067e-02 9.651211683144866882e-04 +1.750000000000000000e+03 5.000000000000000000e+01 5.374540261993388662e-02 1.000999207215783841e-03 +1.800000000000000000e+03 5.000000000000000000e+01 6.012160696005594551e-02 9.086338428378314819e-04 +1.850000000000000000e+03 5.000000000000000000e+01 6.043908248007937717e-02 1.230395679723121118e-03 +1.900000000000000000e+03 5.000000000000000000e+01 6.464911280001615912e-02 8.604282740948831793e-04 +1.950000000000000000e+03 5.000000000000000000e+01 6.818929374001526933e-02 1.115434394007077832e-03 +2.000000000000000000e+03 5.000000000000000000e+01 7.424652839998088782e-02 1.071955559986128735e-03 +2.050000000000000000e+03 5.000000000000000000e+01 7.574371884000356825e-02 9.012814866758098739e-04 +2.100000000000000000e+03 5.000000000000000000e+01 8.000210310005058389e-02 1.157114746495429376e-03 +2.150000000000000000e+03 5.000000000000000000e+01 8.131804838001699398e-02 1.246651522871319254e-03 +2.200000000000000000e+03 5.000000000000000000e+01 8.642062879996956215e-02 1.198064886081493755e-03 +2.250000000000000000e+03 5.000000000000000000e+01 9.114948505999563577e-02 8.960646114521502153e-04 +2.300000000000000000e+03 5.000000000000000000e+01 9.217601664009635043e-02 9.503993848618267530e-04 +2.350000000000000000e+03 5.000000000000000000e+01 9.563625923990912159e-02 1.108765711978444571e-03 +2.400000000000000000e+03 5.000000000000000000e+01 1.013627541600544690e-01 1.295486325060567429e-03 +2.450000000000000000e+03 5.000000000000000000e+01 1.034756118799668861e-01 1.204635265310459924e-03 +2.500000000000000000e+03 5.000000000000000000e+01 1.065721216400379451e-01 9.677911226791394888e-04 +2.550000000000000000e+03 5.000000000000000000e+01 1.141797984599725174e-01 1.006250648249219911e-03 diff --git a/performance/regimes/circuit_scaling_meta.json b/performance/regimes/circuit_scaling_meta.json index afbb888..6f22558 100644 --- a/performance/regimes/circuit_scaling_meta.json +++ b/performance/regimes/circuit_scaling_meta.json @@ -1 +1 @@ -{"nstart": 400, "nstop": 2800, "step": 50, "ncircuits": 100, "nqbits0": 100, "nqbits1": 50, "seed": 3735928559} \ No newline at end of file +{"nstart": 400, "nstop": 2600, "step": 50, "ncircuits": 50, "nqbits0": 100, "nqbits1": 50, "seed": 3735928559} \ No newline at end of file diff --git a/performance/regimes/generate_data_scaling_circuits.py b/performance/regimes/generate_data_scaling_circuits.py index cb2546d..6c20e78 100644 --- a/performance/regimes/generate_data_scaling_circuits.py +++ b/performance/regimes/generate_data_scaling_circuits.py @@ -51,9 +51,9 @@ def test_scaling_circuits(state_factory if __name__ == "__main__": nstart = 400 - nstop = 2800 + nstop = 2600 step = 50 - ncircuits = 100 + ncircuits = 50 nqbits0 = 100 nqbits1 = 50 seed = 0xdeadbeef @@ -65,7 +65,7 @@ if __name__ == "__main__": , step , nqbits0 , ncircuits - , repeat=10) + , repeat=5) np.random.seed(seed) results_graph1 = test_scaling_circuits(GraphState.new_zero_state , nstart @@ -73,7 +73,7 @@ if __name__ == "__main__": , step , nqbits1 , ncircuits - , repeat=10) + , repeat=4) np.savetxt("circuit_scaling_graph0.csv", results_graph0) print("saved results0 to circuit_scaling_graph0.csv") diff --git a/performance/regimes/scaling_circuits_linear.png b/performance/regimes/scaling_circuits_linear.png index 87eec75..dbec6ba 100644 Binary files a/performance/regimes/scaling_circuits_linear.png and b/performance/regimes/scaling_circuits_linear.png differ diff --git a/performance/scaling_qbits_linear.png b/performance/scaling_qbits_linear.png index 91c189f..6ce4339 100644 Binary files a/performance/scaling_qbits_linear.png and b/performance/scaling_qbits_linear.png differ diff --git a/performance/scaling_qbits_log.png b/performance/scaling_qbits_log.png index 8024bc7..a739756 100644 Binary files a/performance/scaling_qbits_log.png and b/performance/scaling_qbits_log.png differ diff --git a/presentation/main.tex b/presentation/main.tex index d268007..76802c5 100644 --- a/presentation/main.tex +++ b/presentation/main.tex @@ -6,6 +6,7 @@ \usepackage{setspace} \usepackage{amsmath} \usepackage{hyperref} +\usepackage{url} \usepackage{geometry} \usepackage{enumerate} \usepackage{physics} @@ -13,7 +14,7 @@ %\usepackage{struktex} \usepackage{qcircuit} \usepackage{adjustbox} -\usepackage{tikz} +%\usepackage{tikz} \usetheme{metropolis} @@ -71,7 +72,7 @@ \item{A universal quantum computer is a $2^n$ dimensional complex vector to which any unitary can be applied with a quantum mechanical measurement process.} \item{Algorithms using the exponentially large Hilbert space can - solve classically exponentially hard problems in polynomial time.} + solve some classically exponentially hard problems in polynomial time.} \end{itemize} \end{frame} @@ -275,9 +276,24 @@ starting from the $\ket{0}^{\otimes n}$ state can be simulated and sampled efficiently, i.e. in $\mbox{poly}(n, m)$ time where $m$ is the amount of gates/measurements.} + \end{itemize} + +\end{frame} +} +{ +\begin{frame}{The Gottesman-Knill Theorem} + \begin{itemize} \item{Note that a general state has $2^n$ complex coefficients. Computing operations on this state is therefore exponentially hard in $n$.} + \item{Note that using the $R_\phi$ is universal and $R_\frac{\pi}{4}$ + allows rational approximations of universal gates.} + \item{Restricting $\phi$ to $\frac{\pi}{2}$ allows the simulation of + large numbers of qbits on a classical computer.\\ + {\bf Goal of this project is to create a simulator that can + simulate several thousand up to millions of qbits. + }} + \end{itemize} \end{frame} @@ -349,13 +365,9 @@ \begin{itemize} \item{In general a Clifford gate $U \in C_n$ will map a stabilizer state to another stabilizer state. The new state is stabilized by $\langle U S^{(i)} U^\dagger \rangle_i$.} - \item{A Pauli observable $g_a \in \{X_a, Y_a, Z_a\}$ will either commute with all stabilizers - (in this case $g_a$ is a stabilizer, the measurement is deterministic and the stabilizers are unchanged) or - or anticommute with at least one stabilizer.} - \item{If $g_a$ anticommutes with a subset $A := \{S^{(i)} | \{S^{(i)}, g_a\} = 0 \}$ - the probability to measure $+1$ or $-1$ is $\frac{1}{2}$ and the stabilizers $A$ - are changed.} - \item{When going from $+g_a$ to $-g_a$ the results are changed from $+1$ to $-1$ and vice versa.} + \item{One can show that measurements of Pauli observables are covered by the stabilizer formalism.} + \item{When measuring Pauli observable probability amplitudes of $0, 1$ or $\frac{1}{2}$ are + possible.} \end{itemize} \end{frame} } @@ -363,14 +375,13 @@ { \begin{frame}{Graphical States} \begin{itemize} - \item{The graphical representation of stabilizer states is an optimized way to write + \item{The graphical representation is an optimized way to write the stabilizers.} \item{ - $(V, E, O)$ is called the graphical representation of - a stabilizer state if $V = \{0, ..., n-1\}$, - $E \subset \{\{i,j\} | i,j \in V, i \neq j \}$ and - $O = \{o_0, ..., o_{n-1}\}$ where $o_i \in C_1$. - $G = (V, E)$ is a graph, $O$ are called vertex operators. + For a set of vertices $V = \{0, ..., n-1\}$, some edges + $E \subset V \otimes V$, and local Clifford operators + $O = \{o_0, ..., o_{n-1}\}$ the tuple $(V, E, O)$ + is the graphical representation of a stabilizer state. } \item{The state associated with $(V, E, O)$ is given by \begin{equation} @@ -570,8 +581,20 @@ { \begin{frame}{Implementation} + \noindent\begin{minipage}{0.5\textwidth} \center \includegraphics[width=\textwidth,height=0.8\textheight,keepaspectratio=true]{screenshot_github.png} + \end{minipage} \hfill + \begin{minipage}{0.4\textwidth} + {\small + \begin{itemize} + \item{The code is GPLv3.0 licensed.} + \item{GitHub repository: \url{https://github.com/daknuett/pyqcs}} + \item{Install it via PyPI: \lstinline{pip3 install pyqcs}} + \item{The code is tested automatically on TravisCI.} + \end{itemize} + } + \end{minipage} \end{frame} } @@ -680,4 +703,10 @@ \end{itemize} \end{frame} } + +{ +\begin{frame}{References} + See the bibliography of my bachelor thesis. +\end{frame} +} \end{document} diff --git a/thesis/chapters/appendix.tex b/thesis/chapters/appendix.tex index 1d54c73..9613ba4 100644 --- a/thesis/chapters/appendix.tex +++ b/thesis/chapters/appendix.tex @@ -66,9 +66,9 @@ code is converted to an image using It has been mentioned several times that the implementation with \lstinline{ufuncs} as gates is faster than a pure \lstinline{python} implementation. To support this statement a simple benchmark is written. The -relatively simple Pauli $X$ gate us implemented, more complicated gates like $CX$ or $H$ +relatively simple Pauli $X$ gate is implemented, more complicated gates like $CX$ or $H$ have worse performance when written in \lstinline{python}. The performance -improvement when in this example is a factor around $6.4$. +improvement in this example is a factor around $6.4$. One must note that the tested \lstinline{python} code is not realistic and in a possible application there would be a significant overhead. diff --git a/thesis/chapters/conclusion.tex b/thesis/chapters/conclusion.tex index 4f6135d..b298dc3 100644 --- a/thesis/chapters/conclusion.tex +++ b/thesis/chapters/conclusion.tex @@ -3,9 +3,9 @@ As seen in \ref{ref:performance} simulation using stabilizers is exponentially faster than simulating with dense state vectors. The graphical representation -for stabilizer states is on average more efficiently than the stabilizer -tableaux. In particular one can simulate more qbits while only applying -Clifford gates. +for stabilizer states is in realistic cases more efficiently than the +stabilizer tableaux \cite{andersbriegel2005}. In particular one can simulate +more qbits while only applying Clifford gates. This is considerably useful when working on quantum error correcting strategies as they often include many qbits; the smallest quantum error correcting @@ -119,4 +119,5 @@ The exponential speedup of quantum computing is often attributed to entanglement, superposition and interference effects \cite{uwaterloo}\cite{21732}\cite{vandennest2018}. Stabilizer states show entanglement, superposition and interference effects; as do computations using -general normalizers \cite{vandennest2018}. +general normalizers \cite{vandennest2018}. The question why quantum computing +can speed up computations exponentially is non-trivial. diff --git a/thesis/chapters/implementation.tex b/thesis/chapters/implementation.tex index 0b726c6..5435e4c 100644 --- a/thesis/chapters/implementation.tex +++ b/thesis/chapters/implementation.tex @@ -172,7 +172,13 @@ For the graphical state $(V, E, O)$ the list of vertices $V$ can be stored impli by demanding $V = \{0, ..., n - 1\}$. This leaves two components that have to be stored: The edges $E$ and the vertex operators $O$. Storing the vertex operators is done using a \lstinline{uint8_t} array. Every local Clifford operator is -associated with an integer ranging from $0$ to $23$. Their order is +associated with an integer ranging from $0$ to $23$ +\footnote{ + \cite{andersbriegel2005} also uses integers from $0$ to $23$ to represent + the Clifford operators. The authors do not describe the mapping from integer + to operator and the order might be different. +} +. Their order is \begin{equation} \begin{aligned} @@ -224,7 +230,8 @@ a vertex. Also one must take care to keep the memory required to store a state low. To meet both requirements a linked list-array hybrid is used. For every vertex the neighbourhood is stored in a sorted linked list (which is a sparse representation of a column vector) and these adjacency lists are stored in -a length $n$ array. +a length $n$ array. \cite{andersbriegel2005} uses the same representation for +the graph. Using this storage method all operations - including searching and toggling edges - inherit their time complexity from the sorted linked list. @@ -240,7 +247,7 @@ three classes of operations. \begin{description} \item[\hspace{-1em}]{\lstinline{RawGraphState.apply_C_L}\\ This method implements local Clifford gates. It takes the qbit index - and the index of the local Clifford operator (ranging form $0$ to $23$).} + and the index of the local Clifford operator (ranging from $0$ to $23$).} \item[\hspace{-1em}]{\lstinline{RawGraphState.apply_CZ}\\ Applies the $CZ$ gate to the state. The first argument is the act-qbit, the second the control qbit (note that this is just for @@ -270,7 +277,7 @@ of the user. This implementation reads byte code from a file and executes it. The execution is always done in three steps: -\begin{enumerate}[1] +\begin{enumerate}[1.] \item{Initializing the state according the header of the byte code file.} \item{Applying operations given by the byte code to the state. This includes local Clifford gates, $CZ$ gates and measurements (the measurement outcome is ignored).} @@ -363,7 +370,7 @@ circuits are used. Length $m$ circuits are generated from the probability space with the uniform distribution. The continuous part $[0, 2\pi)$ is ignored when generating random circuits for the graphical simulator; in order to generate random circuits for dense vector simulations this is used as the argument $\phi$ of the -$R_\phi$ gate. For $m=1$ an outcome is mapped to a gate where +$R_\phi$ gate. For $m=1$ an outcome is mapped to a gate with \begin{equation} \begin{aligned} @@ -382,7 +389,12 @@ dense vector simulator $S$ can be replaced by $R_\phi$ with the parameter $x$. Using this method circuits are generated and applied both to graphical and dense vector states and the time required to execute the operations -\cite{timeit} is measured. The resulting graph can be seen in +\cite{timeit} is measured\footnote{ + The used computer had an \lstinline{Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz} processor, + \lstinline{7.7 GiB} RAM, and \lstinline{27 GiB} SSD swap space (which was unused). + The operating system was \lstinline{Linux 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64 GNU/Linux}. + +}. The resulting graph can be seen in Figure \ref{fig:scaling_qbits_linear} and Figure \ref{fig:scaling_qbits_log}. Note that in both cases the length of the circuits have been scaled linearly with the amount of qbits and the measured time was divided by the number of @@ -421,11 +433,11 @@ the stabilizer tableaux like CHP \cite{CHP} with an average runtime behaviour of $\mathcal{O}\left(n\log(n)\right)$ instead of $\mathcal{O}\left(n^2\right)$. One should be aware that the gate execution time (the time required to apply -a gate to the state) highly depends on the state it is applied to. For the +a gate to the state) highly depends on the state it is applied to \cite{andersbriegel2005}. For the dense vector simulator and CHP this is not true: Gate execution time is constant for all gates and states. Because the graphical simulator has to -toggle neighbourhoods the gate execution time of the $CZ$ gate varies -significantly. The plot Figure \ref{fig:scaling_circuits_linear} +toggle neighbourhoods the gate execution time of the $CZ$ and $M$ gates vary +significantly \cite{andersbriegel2005}. The plot Figure \ref{fig:scaling_circuits_linear} shows the circuit execution time for two different numbers of qbits. One can observe three regimes: @@ -455,7 +467,7 @@ regimes: These three regimes can be explained when considering the graphical states that typical live in these regimes. With increased circuit length the amount of -edges increases which makes toggling neighbourhoods harder. Graphs from the +edges increases which makes toggling neighbourhoods harder \cite{andersbriegel2005}. Graphs from the low-linear, intermediate and high-linear regime can be seen in Figure \ref{fig:graph_low_linear_regime}, Figure \ref{fig:graph_intermediate_regime} and Figure \ref{fig:graph_high_linear_regime}. Due to the great amount of edges diff --git a/thesis/chapters/stabilizer.tex b/thesis/chapters/stabilizer.tex index 96a9d55..f082683 100644 --- a/thesis/chapters/stabilizer.tex +++ b/thesis/chapters/stabilizer.tex @@ -16,6 +16,8 @@ This performance has since been improved to $n\log(n)$ time on average \section{Stabilizers and Stabilizer States} +The discussion below follows the argumentation given in \cite{nielsen_chuang_2010}. + \subsection{Local Pauli Group and Multilocal Pauli Group} \begin{definition} @@ -46,7 +48,6 @@ deduced from its definition via the tensor product. \subsection{Stabilizers} -The discussion below follows the argumentation given in \cite{nielsen_chuang_2010}. \begin{definition} \label{def:stabilizer} @@ -292,6 +293,8 @@ and $s=0$ are obtained with probability $\frac{1}{2}$ and after choosing a $S^{( \section{The VOP-free Graph States} This section will discuss the vertex operator (VOP)-free graph states. Why they are called vertex operator-free will be clear in \ref{ref:sec_g_states}. +Most of the discussion here is adapted from \cite{hein_eisert_briegel2008} +whith some parts from \cite{andersbriegel2005}. \subsection{VOP-free Graph States} @@ -650,7 +653,7 @@ studying its dynamics. The simplest case is a local Clifford operator $c_j$ acting on a qbit $j$ changing the stabilizers to $\langle c_j S^{(i)} c_j^\dagger\rangle_i$. Using the definition of the graphical representation one sees that just the vertex operators are changed and the new vertex operators -are given by +are given by \cite{andersbriegel2005} \begin{equation} \begin{aligned} diff --git a/thesis/main.tex b/thesis/main.tex index 2d678ad..2dcbd82 100644 --- a/thesis/main.tex +++ b/thesis/main.tex @@ -88,6 +88,20 @@ Supervised by Prof. Dr. Christoph Lehner} \bibliographystyle{unsrt} \bibliography{main}{} +\newpage +{\Large\textbf{Acknowledgements}} +\\ +\\ +I want to thank Prof. Dr. Christoph Lehner for offering me the possibility to +write this thesis in his workgroup. He also found the time to answer my +questions and help me when I got stuck while keeping an inspiring atmosphere.\\ +Further I own a big thank you to Simon Feyrer for proof-reading my thesis. \\ +Also I want to thank Andreas Hackl for proof-reading my thesis and helping out +with several technical problems.\\ +Thanks to Shirley Galbaw for helping to fix some of my terrible ingris grammar. + + + \newpage \textbf{Erklärung zur Anfertigung:}\\ Ich habe die Arbeit selbständig verfasst, keine anderen als die angegebenen