From 1d74ce527c50a120359c3b655990d120c1e2b378 Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Fri, 22 Apr 2022 13:35:57 +0200 Subject: [PATCH 01/12] Update BQC README --- examples/stack/bqc/README.md | 73 ++++++++++++++++++++++-- examples/stack/bqc/fig/5_6_generic.png | Bin 96935 -> 94945 bytes examples/stack/bqc/fig/trap_dummy_1.png | Bin 0 -> 85578 bytes examples/stack/bqc/fig/trap_dummy_2.png | Bin 0 -> 84440 bytes squidasm/sim/stack/globals.py | 2 +- squidasm/sim/stack/netstack.py | 1 + 6 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 examples/stack/bqc/fig/trap_dummy_1.png create mode 100644 examples/stack/bqc/fig/trap_dummy_2.png diff --git a/examples/stack/bqc/README.md b/examples/stack/bqc/README.md index 7157bac0..404e535c 100644 --- a/examples/stack/bqc/README.md +++ b/examples/stack/bqc/README.md @@ -1,18 +1,53 @@ +## Prerequisites +To run the code, a specific version of the `netqasm` and `squidasm` packages are needed. +`squidasm` relies on [NetSquid](https://netsquid.org/). +To install NetSquid, an account is needed. See the NetSquid website how this is done. + +### Installation +First install `netqasm` version 0.9.1: + +``` +pip install netqasm==0.9.1 +``` + +Then, clone the squidasm repostitory and checkout the `qne-hardware` branch: +``` +git clone https://github.com/QuTech-Delft/squidasm +cd squidasm +git checkout qne-hardware +``` + +Make sure you have two environment variables set with your NetSquid username and password. +These are needed for the installation of squidasm. +``` +export NETSQUIDPYPI_USER= +export NETSQUIDPYPI_PWD= +``` + +Install `squidasm`: +``` +make install +``` + +After installation, the simulations can be run as described below. + ## BQC application -A server performs an Effective Computation (EC) on behalf of a client. +We consider a simple BQC application consisting of a client and a server. +A server performs an Effective Computation (EC) on behalf of the client. In the so-called *computation rounds*, the client makes the server perform the EC. In the *trap rounds*, the client sends dummy information to the server just to check if the server is behaving honestly. ### Effective Computation (EC) -Effective Computation (**EC**): `H Rz[beta] H Rz[alpha] |+>` followed by a measurement in the Z-basis. - -*(Exact prepared state)*: `Z^(m1) H Rz[beta] H Rz[alpha] |+>` +Effective Computation (**EC**): `H Rz[beta] H Rz[alpha] |+>` followed by a measurement in the Z-basis. +(Exact prepared state: `Z^(m1) H Rz[beta] H Rz[alpha] |+>` ) ![](fig/5_6_effective.png) -### EC implementation using RSP and MBQC +### EC implementation using Remote State Preparation and Measurement Based Quantum Computation +The following circuit produces equivalent results to the EC. +It is a 'blind version' of the EC. ![](fig/5_6_generic.png) Blue values are sent from server to client. @@ -30,3 +65,31 @@ Red values are computed by the client and sent to the server. - `m1`: uniformly random - `m2`: outcome of **EC**. Expected statistics depend on alpha and beta. +## Trap rounds +In a trap round, the angles are computed differently by the server. +The client randomly chooses which of the remotely prepared qubits is a *dummy*. + +If *dummy = 1*: +![](fig/trap_dummy_1.png) + +If *dummy = 2*: +![](fig/trap_dummy_2.png) + + +## Evaluation +The most important metric of success for the BQC application is the *error rate*. +This is computed as the fraction of times a trap round fails. + + +## Simulation scripts +`examples/stack/bqc` contains some BQC application code file and some configuration files. `example_bqc_nv.py` is the full BQC application, including trap rounds and +computation of the error rate. Simply running the file with + +``` +python examples/stack/bqc/example_bqc_nv.py +``` +will run the simulation. The data it produces is simply printed or ignored. +One can simply add code to e.g. store the data to a file or to create plots from them. + +The `config_nv.yaml` file contains configuration parameters for the hardware of the nodes and the entanglement link. +**NOTE: currently the NV entanglement generation parameters are not simulated in much detail. We are working to integrate this entanglement distributor https://docs.netsquid.org/snippets/netsquid-nv/modules/magic_distributor.html#netsquid_nv.magic_distributor.NVSingleClickMagicDistributor which allows to much more accurately specify the hardware.** diff --git a/examples/stack/bqc/fig/5_6_generic.png b/examples/stack/bqc/fig/5_6_generic.png index 6a679432e0ac4d007ee94949d7f9552a9d66e683..629ac444ab5e2af408e7ce5f213588dca01fc61f 100644 GIT binary patch literal 94945 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�RQ1 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 literal 96935 zcmeFZcTkgC_Xdg;YtW-ogb>TI(-ft|K=df0M~a9v=^`SX0HKD2V<9RfRzPWrNbd-t z2aSMAiAo6&AO@tDB-B9K-5{s^^!x72{qN3vnQ<`T&3@Njd#z_ZtGwL3pr^fY-S%}N zA|e~lojrX~L_`59BC>L9%?j|zr2t63h{)Q#j;BstaI~`%5jlJJ$rFbQkIW=$nUjd2 z+b4ec4S(U(gM)j5A8)$6|4T;diNUxFS}u2rmmj)!=cv|wtz{AxPj)$LZCxLFW4XBZ zO}XVCOHtblPMUeprQ&9x$a3M+K#IG-tH0ZeGUu^u$DNz@Z|VZCTr91keTa~f+*-eq zzCSD>@-2JHdj-9vY_mw#yTDR9WiETo<_C_vzT)C?&$$CPyhWam+PBvKu5ZS8S*IgL z5WaOVG0nC3dW3Gu7{vLHo^K?{%|GlNX|Tj@TPGrOU|t#`3=w)U?_E;6G1Zp(-X&Sz z^HP9u^p1y5i@vOtjjEg4`m1*J-qTn^mhcG=`bzs+O3rCF&yRagx_IlrCvlKtN0g4P zw02{yxt%$4=R}+!=x(su2Q=159$Le2~FMGed#71<#h?WgZ zZB6{j{AxzUY>oE_EkZ0HQ|pBu-%GE%@!N~*``3O9_Iwd{Ve_SRMkmo1woI+}hLkSvy0!WR{*&6#75t4s zw>C$wY_eTtx}p`|t|aPnJBTsuaWr<_K-C<}3fvB_{}#&H#!*3RSkH)J$t>Tr>+Olh zn=NmJdu$f_Rr2m{E8iO@Z91Sm{J=O#dg#>n&fl(z&jr7IetrMm-zDttdY+kk!AZT; zY<%f(`a1OTmOqBIx=w|^Je^9pe&n)j*3F_5lb`+=yzVVtDqf=_T0|QW7ThPRFJ{*EDm3v8eOy>8cRhro2^czmJ|9-7~t$ z=NGQ5_PYa&Fpr308;f5Q#7rWbYb@VwWF&j6_d}J#yO%TnAXK@(jruCh>f#*doZ~G& zd82BV>1NDY)Gg?(b-x{AY_|<#g`E90eN)3-t9Pb7K37(;x3X8GVmW`D-sAYFIBCGx6_D&d07)}Hpeij`ssW11NON?ouDZcG~+o5&w ziF%9+Di=KW_dQmAeEhK)s=PQv%>T93fdT|SXI`MSg>4JB zePm{2`HllucWl_Wn(&}%zisTbFeT0351d6M?RqtHw($3j=Nit}oumD({kz2P#B*Zj zagS|3s=a?#HySnc*nd~(!{;1JYUFGrT@I&H zX^qu8Y4GOUPOTRg8R>5`cb)odd{{3}hn?6H_KWU^%Lk0pbcP;&S)cstBeIT-u~OjE zUH1O=4t*Q?;C;*bR&9&Cm+*W1?=c^@7~ME%e(d)`okDG+q~xUj?8uDP#F?|uoJM1U z0WzsOMKkBkmo=Z-vOcFBZg_Z&ZK|Fr-Wt8vtm%xhQGwNDrTCf9tZg}H(~)eIOxHx{ zOUtYvZPC`lEq7bgGnI?iReZ!4eMz4;dRh7_u%~3V(D7o~QxsiA{TxH)lgekAzdLjX-8>xczXDF&fXj!iwajXb(mTMuX#|T9R`d3q|>SE z6EhW!IdV*STXfO0#^|)Cx1Y5{hvyHu==&VzhNyRRHezDt{3pf4lf{R`Q{)Bt&4pn^ zm!eoJ^5rch$+iu*p4>BvHi~=l>6s(cDX97K^_MPNt{J*d)*H8|ye<0dbMIyK-QL)5 z<@w6FTiOa~4PNra=EYHCn*;Z8f8#C_O~09N>IvCUdt2@GT5;_MkM1^IOQ~zT?qD*& zZ+wYZC7VEfx1}Vy#052k-cvGPY+R!0)#S6K7+pplR~Q%VtZhxt(Y;I?T88kG6-C7R zvHD*<&8mGr6U(C5oInMYGI1iZjaNG2o6v;WY2|chL`ZpxZ26kcl zjt$LXoxk`UKdZ7|CH0V`^eC)T576^ucG{9}hd&Ot zm8RTEJhkGtm{SsD#M@zV|66~?F~%;iE~Y$f*_`oI%HWS-5s$%C&iH&Z}F&w~9_%T)Ey;@~hKD%tiP7E1o_RHuv;? zKY357W!JP#`q{4suj}0W(wc&P)f9!S7Hnt;vy|$6+WNHRDYJlA(0KLy)qVD}?q9lJ zJ2YL2uxr$hF^HLq3G{s8<@+tdo#B#3Tj#ow-cg{7HWw6q7}KNakM0<~LuZ@EpR{u9 zro}BgUN*UHf;gZ*>ecvn!zX_4#k}iK42q{(yT`O9A;!y=zP z+PRM@a1nZ$WVkt7O25n++^Y5jHC(Ouf)p0(qtWFR5|lihIp6-w=W?K}XmeiLsb;CB z1EcGPw<88Tvr}mKWqgwgYeIsFrghNCiQhhGy{+bjo{#cWXt2~PK?LrZ|9F~G6JKkx zBBz@aT&YujNc6;dxG#9DZXzq;ZZ`A{sG-%y3)D{38>f- z?v<|44^amcC9bU(JmwViKk3gXz_kln6xVIltrRb}nlIyo*T?j_htp^3{TnrcqBw50 zm8^<-?iN@ZY+iFUCie3C%kLD7F<<7J`R&t_Z5MmKd_n#ucfazHm+mD%oOalqy{Ic9 z60lc9B>0wy$UOKccu+(Htt28cY$GB9j}{S;@Q5unK!9HiU(mUvCH(iRtgOt}*SD*y z>*>>{;F8m)Pv5z7=i0Sv%F4>=>FML+<3>hCn>TN+udm;=YnO?M$%YLZR;^m4qN0+M zle1&T4h;>BwQJWNIdbIu`SWx-T~1C;Qc|+2s_K_teo0MDRZ>zCrl$*ieTAn_3+wBJ zU0uS>n}s4GLS3vbp zP~`NTT|MwkJHh*9SI%pn7P+$udKSD{>v7i1OGISFj>Uh7Z!fQa4@JGt>1v7gtyr;f z=en|vXUl*}Mb4c*dC9M1v}@!_fetyE`fK4Qt2Jr5lgEbkj?E?5xqpasvAh52x}>D( zi1tJUQFZydYktLud41tpu-^Ztmra0R5(jSm=WB<)u#N!dkuZOL0Dj(25oSU}|NbCa z1g-Y>yQ;0J$M7%l!F&5fPhp&5Xa_i5Ncr z*DaU-@0R~l?ElQ?e@-G24WQt}y3pl*$I;M2Q=EK6nR)^STA#^a8*5X;%laenI%y| zC6^{iJnUxYSw64`M9=l0ko!0AMLRO?8@)?}nBX(WJ00}OoW*ADZNSiFpX5x*ko z>kIk!2d{3+OC`53hCSXtZBj@jchwY!qojK~S1nw2f&}30fZz4?`RmNI(yC2?BVBO z>>-YSU`3QDsBoJ-y46Ga5!Kb<9=x+;{lcw+k1pJ5>sr~PZ;$S&J1Fy_-K8#kP-VDC z#{e&}xPXVp2`qK2+9ikPAMrFR%0^8ai9fZ-E!wh>?6xVd7Y)GdQN zxqU@R_}y}52Dz?R$7B&pZEh?f*^6dIqYrwRRZP1GwKC>b8h1vlgFxPolx9IF&Ktg| z?4790fzY$`CoNEmu(WmwC~sZFAE&jXk$c_FqdBCk+)>BsvDB|$gUhpN!>sa}6K;09 znB0OKvI&2*;5&T`-U&G7Mb;{I8YEjL|+aaXjTmE8{F;RmyPGb*EwqTg(0 z;${9_<7q!=ybfFwnxlpZ8voht3$n?xL=@Zh+Mz`buVggr5xf=g`u2rk4~H^1+ON}9 zeE?pLpdXB$PK)}9l~76`isR&-D^^S2H~ZQ5d44%Itu(8jSPQZj&SPoFX;Pe)w0HhT z?OEX6Nr$4RD}Q=>BE;GlSyP=Nm9?0lRNY#L`u{c?%m}M#J|&;k-Qji5 zg1w4tNrs4?eRIlu%`1p+QHCMDwkxtAi(EIE1IM(~-lG}3d9%#llGwuV5C0xR9nA3( zq>$>Exy@V&CgVkCU^XQZL__Z&)T<&UQ446V#EQZj-a za?@TVD*6rGWsDyrnVzzqzI14IeecM{hliTztnBYu{%yhjV-7~Q1wQ%F z^Fz>npVj0dcu(Q~8M8Kwuq?e+6)3#?nfzEZC(YipJZ}CwYSjn-h*~)i>#nk>VI2R- zo6N+Yt>J_A^A`xV#tFyh!bxj);fNZ0X*Vl=+>Ir)GSjWSF1vg@cQ);v?`M-A@f%qN z=lQvlCHne=TzZC;=6|zHupFuIYhBK+Yi6CvzYr>aVqzsN3|gQx_BcnMh~Oy=Es3`3 zN72loRv03~`W2_P)^&!ZHTpAe&4eI>7OxrZjl?sP%fCDAB&ZwwAE#B$Ad4Y8Sj@B2 zhr|@G{7h|D3u<#ClS0TTfk&)#{l3G`wcmb#p8+GhVg}5W{~z>rPUw4v_Ny2`m((lZhkK{?matKJWYoqbW+W z!S^c4hLblCQwmO1p+*Wmwc5oASd`n1B&#Bi{{ zGo9;-LQ9hVvonL+jM=vvBL$30MyQ|p4v1!y>N!dFe^ZGRm4Wl68lvx&{={A8S{XPo zz9%V$yhLQ8e}sf$h`T9YYcu*MhBKK(Hi^=r3FcEK)bLBbru3t)0d4ZlUk8oRBMpAG z3p%{q(d6Jj?thGl;5JcFTE}Pp!w#rgha8Ik+m{11%huR{SUUI5SUO;ix7NHkfT;b? za=SyZUFKpHKgmmRMQFcvW}(@Cj-u|+$}+i*eCp54xd_6XdvEd|T?|OZP(Xa$ zLs#x!zTsOepE^P>efnL_V!#IVlZj>orTfwMpfu z?_aiS*21v+#}Y3F;*5ScLyjU@O9=++D*Cx2gH>rzjl`~HmiL3`n46`)O04f+RRvXSO zZdy_=;Ae!WRpyOL$Fx`X?_(n8U(U%GKUbHZ+G;&xV9b1teYUtFV9T>!p-W`pcmkYP zh(b--qM}fFv}m5&@qx>DW}p@D$pygtoA88y{3WC3DftTO_gwjpb#`2%0cK@(Ye2#A z_?NEamZn5~aEj_w25tIKt>M?dP&8pfg)&rP_ORTzk^*3bzBF|zyqtNc;Cq$bX3d{$ z@FqwB(Aq7@YExygF(xY2L(13^>Ktv;mG%z)ZbKNaRZgSiXi1Je}Xg9ZX{ojjD z%1F!}{pX^HZi5HyOK2CfbY9J0(VQ0n2X2~~Xth%=W@CNiDHi=lESRLIZ+>(1lr`s3 z0TZFki>q5zObm#>_{%x4h^a3NM&+h)eVvF~_Kd2XaiXBJ3 zl#u{^@0n-1Ee2*iW{-+$S+87bc_=zP)3ru7GaRiTszF;wTl7s$Y6J>Ru zj_06I1aglT3v7*t{!vf$95pjRyqPU$f{O$>n_bdpC85QSpD~xqm6_ z&M>Q5-qSJ2yE1+J(f*nIFlg^H=T!xQiZ!*@x9qW2CELC)_@2pvlmXHC!0s=iP&V@E zcoYgnBKPcD+QwuixvpEW{{P0o@KlJR+cq6;&tooa_H?67 z1hxEsBqlgH39Y;mxOhel!C67&e9X`>kl?3oZeb8B?fI!^)VnIv?)fKLpy}&U(oqpL zBR*l5ddFm46c<1XI7ULspN>%msVIKARZ*uI-BF_uv5 z{-RJt;<%$f7w?K%$7{XX4}xQ0p(XQ>!lGrMyT;X~8tp7%ZA^I{76>97F=@*N>_i{| z^5+F)S;!+<$iXLW-&F2}CAyYi_rl%n47R$93&2E#Z`d%aQl?iY-te|&94trD~ z-V7Sg&GoB6b0(2f(Su8V91E8zHWP25?7|cr@QG=lBI9rv@kw-gHd8w`w8IX8_5%)i zYr8%aD^!jq_cF^8&J*$?bIJuD^C$bAVt<*NT#s^Ua~|@N9d%JnhGQm^T+LPnIrsE2 z=Z@8=tDVjL>okr-D!e2mQl!L@+a)N#vVu$zbT~$8dQ-#orO*mW`j~?_oo??=EON6s zwqajoNl>SIP_|l~m+v{9M9Pw5_;wmTdUD>{< z$idQxj2DeQQVr0`H1}sdwI?HSm1xf1{+%6_J$4&x>RRk|jCoI=c$M&HnK4~HL#1Tx z8wDWvoC#PwC>x7dCsUq{h08cAGo%`@Cow)V%`S_)F?6Ap9_$D##)QU=wc;A_^Tq~} zdRnMSHlgUVP{B0I-MSII0(2pouMe}h?c?n!Zthno0ki5_J!zBAj@ByR3c^$~FYh}S zYYr6@ddV3hcSohG$$gx0@8a{4B1GxW-h%SS`NPK3q@LXyY{ZB=>HX9{N;`5$_#4@X z`iZZ>8^V$y6x$^M5e0C>tSuXSWo6*!vm+klD+|VC)6>kTLZ)zE5_EgFyrA5z&ViNl zjxD1u9HtfuYl@e!gvshh!exF7PlhPQV@|*Ay4E#)+}f;MFNM-qijH`fvth3>#Jo`V zp&A9wqe3QliZ3cj(`r*N-3B5=|3XTHa&X13F5HG>0TD|@b&_y&s^;O<{azj?AZHBm z4oV7os&Z~H2}(YM;=6Fbyf&XCouKL^{iOl@AvHxfnCslgk=_S&ndY@c+GR1KVnI># zrjxD?rQt1%O-@JA91S;hZ+?wwXpkGfcs?>pQ&VlTcE{DSq9T20_lvAzobxfxKBxL3 zh(79yl)XsVJdtJz`D8e4r`a-My(}JyL|pTS4jF~W)sKG-mRrypI9NB+&V>N!a7->9 zP)sH+?Mz8eNcDo+sz5p7j|o4V756L3qNGGqUj4OZhoz?9U>QG~JOK9x?VtsPkrHa- zpR70fwyyuvkP(xXZf_)xQjTt#j*1IWr-c_lNY*+8ebThx4`|t&sDL6gr)ZLHQBLf! zqZvfCl+GjEOy~ymzTH>Tja-|H=7Y_kGWYSHn;E?@iG4ESL_#R2Q4Ods2p9h~A5pVS zRc`fyaLM{mNP$Ure2tO5te?f+cO6D!1fPrGlPeh=gN4PZKOYqJeO2 z@>!f>>Nc)+9c<*Zw_BPTfFzSRk~%qg|o#SG1vaB4uTiiTOE`pqAPJ%-!02 zY-5_90Id!wrH3%iM2q8~h5&{7Vv8Cn_RB{5 zC6jvqCC|{?Dg0*KnJc*WkmFDG4t@_zlFN&YKLMtmOMvRF3u^z;|ItF5db@0votGAYoj@N#k zE7>BexciM!Z?LH>fc$*?<@bc(^d(z^I1#RW$ z5WK&6Lpo^r&Pgtfxo5l&&sBa zwlMC8K4@lyW+w#aVmJrZ=a~BljAHQnrgTR)^tW}cY$$@{lnS>s2Z@<&B(;IX4P#Bt zNLIPw#uLP5$W0w`ck4&L23v$BL14mSHFj>Xs|A7zM>N^8L9%u5P3KszIcf=&Ak7RV z=NJ=Mi})XC&X{N|P)_F3?X{?reKTb@%xX-FD0JW9;ujsrH$l+jH``T^ClZ{Y0{(zu zN;dOSlE$xZPdpc%A0NDNFOh3qQ$g(M?J$@{`jk$5R+sNTnscB0W|>)6l^AkLmS3zk zy(mo+96_~ZTa2)dR2%tY4!N0bSg@9QFxk?dISB8g61{Aog1k0YmD(25R!kZM?*cXh zl$UzjtMkAwNKIt#3$m@gVC8m>v*_a($6#u!N1HF72sMUT7B^{Sa$Znx+kAk<?H&SPKBRaY;S@1>r{4C*SEbiXG@ZMXsbJAkPBxcQUiK2lZ9otPUfLWKj>Zqy!(t6`2!=XUn9Xs5fKaOng<_fy6bYSde!=gXZcxXr zF1Q}6<(iD<`0)K6ew-ICRU_EGakz|!J(O!|Ti#Yp>7Aa+r8&i3ntp9YjU&R8{s3*f z!x3=IXm8K5kZSqf9{*NGJ0uk3oxXE2!5^|XW#pbRqdwB~qAE_)2_>Beb3aP@asCuRdmeBCz{Yn5SqkFNe7qe}()hjlHn%7hV zcrE~-@)~086PUBNsK*@=>OPP(Mx{UFxCbqqSk+merR+*%-&}R=iMqATjN@pvZ+2VJ zoJ3l=4^jNpWi3lCWTRyXmiK^)*E|xPp0*xLCR?GI39b751v<_^VaXa&q2)bx9R{HZ z_!0K!9UhDBkAdO2L3`OPqTjF{Cp6C(;0Zw%i1)e0{uT%d96_^PaI2%RH07dg zICoPFbRFy-KS*?jzA*nN68zvIo@^0E?b3wI=LF4wuAwo|7+6EXvcK?jBFvw-2(r$jNH+60KvH|L0DQoSe=Ih1dr;Q_-eY)+d}?(0k|p^99r_Yz79-}(=zxt5HuTrpFJ>WW>5wS z54nrooi!j#1=ZFz7}f2wqMAIvSJ^%cd!qp;A=W^{=Q1a^&fT5n37R6i8g_-N2g}RG zZ&sP!@-crdw~`;(C#uu`H5etW1=XBEv3HPr`cZ7T5f%nttqh>*oVa5>niERy84(** zt-WH$~Ew~2ZsR`IZSpusW!oTMj-CG)e`KH zh%}|~Lz@a~xR{op`GPLaFe@)d1P*8$Qr*zoW7f);gM{w0#4Ae7qS%gioF}43 zSQ7YZ-GMFtlF^5cd7EP#Q$E6KxeSGa9Z313!^U5G$KMP;Sy*wjF-x+Yw1UR*|6e_OqGJHk2x(s)x@Ic z^5+X~Pg-uC*yM>&v-wtYVbMkF7hSX#j_9>zCk?Zj(%Zb%H_QmNiT>RMX6$Yt9&+?g zP+G9Rww4*4`uugh4=%-cE3>Vf(Dr94y^6UcV4w+uAVxj zgaNI_JfKjHM`goQ@jADa3zQ?mWgXg(qY`6hkXcz< zjUU1E3?zt>g(a3rYQB3U#f8=tVxiJL+y68Qd0@C-hPekWR26*GIt#^?CYzNtfO@2Y zN$qeTqtZ{qiP zIybj)4zHYPd~=gt(_#Zuo1zB|{xxjuj$Fodqe?`u|C&HA0wR*@imU!fb z>*Ik#m6dzz`duAwoq8{u`u*Sl5&!GpY@zX!xoWd;UT((n-on-&*F(jHb-sI zgTqhR?zUanj!hDP;q%Ce;rjy~8Fo#R-I4I}nat$r_Um&kAxs67NeL&wsVoh7QSRBJ zRPr=!Hm0F}Mkm0~yr5@x-@uIE%@^IevAdgBN}hyPItmd(p3`Wjw4xxnwq*12eE*BK zqf~x9GXo-gUEy1^;6D%T7v?TZYI6@%g;HM51%6>W`3^f**Mf#R0L>y?jmsGBV)5XC zJUfuOEA@=b6f6ecQyW8D7;|EwVCaMC$O$zJj!KC72744SyX6jn2*IIEJ2_4NJfN5P zQG4er;F#&TUx&4QDk}u%jbb#*OCY4jeK9!>rhU{6j26acPhe~kyHm-`fx8oLhMa>& z8R`MGaNfDw2AYETL^U@BpXy!L**+gAK6V*oChUD)=vH_r2$@c)uRJMGF= zj!rjRx0+DE2NHXL8P(aElTyR(tPPuiL7X>HE%Xvf;qX{bm@VDf`62 z$>^9TzSCE;Uvs56lv9Exx>;u~IiNiFde?#0t|Q}7Xl`NkBe8N#V$kJx)9$xt5)w{Swsp5oVgek? z(#TAlCpuy->+V$(yds@xq!+Fn(!HF`KRA4ka3t7rA(oex3_I9+cc|bei3R#|%M8`j zY^FeK1|R}NR-7)Ny_=CS4NNB&z{DL)@KM%|9Bf%w`3ZcE{wz&iyQF6Yz;A3PZe%fK zKLcWom$%Gwh$0NJySq?RU%g24j(V3g)3wRFSZwc$i}+JkU~Q&DeXAgE)VaURO+N;Q zefHbUzOlNpkVnk^+Ff*qU#u(gyP6rb(<451W}NzAR-eLKhb~x$_~4;UND2G$Z7_Qg zbHs+;bd&T-JL@g)j(`E61^)42k$-%$Wuy0F_Rq{t8{#SMrm<#FEAf^xM-El9<7mVo zlLV%HrY7b!niE65^1VNzv;$8FZuH5i}Rz-<1%F3uQ>r#y=OBL+O(Got{ zc6SS7nZAa`;TxMm(Yrz&*0Y}D5Hnj<%Z>5GBp+JjvCb@N%ZoYl@U@g$b=ci0x_12Qp>O|ydFlo%w1&Hx~i=6 zEw@|-e8uqy<~Mwa8v$z}qb6tN+Fj}EzFk5rNZQU6(MW5QT+eL}Ng%q{(CTJ(GPLLX zP2UZXwaxJ)bvfhj4c%Ul;;3&=g1GZ1dOr6?T8_N7BMvyl)QFPGW*pvv$?dwYV2+1z z%M1~Bh8?Hekk~tyYQK!okkC=d_wC_NuIl8csl+RvL#RtYST(zLyA< zJB?wQts*l%mGEOhsJSni0TG(duAUw^3gS6e4;wu)0~)9&0eu$nA*qXp9x0!>gm*y7 zH6}v{tszLk*|^kGth`nR69NLrLcpskUcl2cVD^NtFAPr9Jw7wdRcSDrOXL&N$vYK6 zzi|XI2~!AAOT&_89(mP{<)J4}jd4Y1 zj;mkF_2YVrg3hS!AXK)wzRwSsVk>?FuJp9?gP2#BEC3T1)6Um`o6l_wRZb)CE@D`_ zlk@A8cv~5r$KKfHeQ$kAssi%#8T2vo=XtY1b%e1F&3^PG>&+(z>aA% z*44b$q}?~L^y~(j_L*iC-ej! z>%Xl+2h4$9J!$MpaZ(XWI6rHRC#5cILO$Tmc`NnbLKOz;5>rYpAaO%4$l^}8v2-?u z<9;_o_w#*Pcl-@zsT(mFUOrIJbxp^T;n-y>{xOPlZ0yeS0jl5RCQU6@GHLIb@%zo? zbUfi$aFBNm=VSj&oN?LU9)aCLr45h>@{8H;R#IcVIST?~snq1E+0d=S<~K!jhWJ+Q zz)dq!-WX$E{~JwUXpRDiPk9jB492Iu)ze*8GpbT!o133cCInx;!4glWMB^1wTHeFL zyVEKx5SX!3le?LeJ=xo3*-Y7>a-XI-Z$RK?X1WuOyXEN7pZT2rH0fOKyG8;3nCS6wbh>Ix~XVg~gZ}3Q?Wzg-VES43);+hGVeg9yVx(*R^@W zP({;*1C~<-Vv4ITv)TW)?0ZZ&;!5=9OL$l-ij0A^C@ko9X~?*d$WLUZ_-x$9qY z)A3?gIaoHBLYyRyJwv{(sHiQrho(f(T*pBw5xA_yL~eSfunZ`8;Jw<|ZXzQmYobt0 zEM60nv}`nJD`!?xaaM7wLf!8&jkT{qk)#T&{HKCnKoaP=exqPY&A(vQK!P=I7DRKS z2ab_vQi@0cg)Zhm0oQ@#Lz`gAQ(m<&l%!Tr8N`AQH=CL%gfoQl=L06gteQ`+ zTs~CMkaagXe}}wQLk*b0mywy5FJ?K5U{Pb8w}H> zk)VM5Pqcu5&SyqS-RBu+Rk7XfXf>UhDgeB%+}mebR9&pn$kHY@E%`Pht+319VgV`} z(Sx1CEaq~jc1M%(nXI9(QV2;;Mi$}a8`@`&iZ~~JCGPCt6(jq}p+uVF=zhpR#Zto! zdvr<`l#Z_hGJ9w_n7)iXd?8-=Vkc;8rH-&Dcggxea(Yj%>{PiMQca_ZkBt2rG7caP z1nfwHAT@C17O%hc#^B9L;4*vdzQTEe9bDGe0cJv?ELRDa264w+z_~r$o#({o-JWQH zm!HKJNgG13iq9Lndu57krUjtJdK$&1@qV^rby7ry=2hXqq2o7hu^f+b>m?z)2QG>Ha=HS}D+}&GUmpFeOGI?T z%cJg+-2(@AenNhPCmO>mdliPO>7~|>dQ;ljHj^)oqf&f0NjN-UbkbBIY zp;{T%y(zu5wiVfx`iQ=P_GG&;udaLCKG9nVOY+`);k&xGC)XC$l(VLM6xIz}(Z_{t z_k@WPz-X6a535RgEcca^15_aRC!$_U<6wO}*UZl)OC3E0+N)a<`N<7ngltm91(aTd zw{F5`rQPtRxUUG`$J zON>>TYP4A(IBt@8t6CYMzO^T$KyovRuil-txQ>rbh0LI+{HMKq+^zFR{>g33;20`n zC*`0-xY+&fbaDc`h^Gmht1B0jW9kyVjE<+Ir{vLkFx=Jz*rf{h<48GpTuukYsVrET z&z?)VZyl*CH3yib>#Runpdf24XgM-ndsqb4!Rb<+lwTEFgi_NP;bpNqW@yzt9-))) zZ2I_gnv^Y1RP?HC8yta0vAN`)s*VDb1tJHI;M%f5a@& zZ3U54hRk=(b;4}g3c6P?QRcmUk@6(aku+3w0Sw1X^Vy!+P61vHr=KuFf+ba&6LlW= zjp)SlTD@q#L43dIk6TIhv-*8*F5bXlV9cmIz4Kjc^DW!$z_fNij2h4Ra@}*{*CRoG zXg_qdwnP;+{6;!O`Qr2>lT|89jG9e3lEmox6EA@3Z7q0$T(#U87a0jk284n&MSKJk z|Fm}uX6%LRCOq?DdGmXG^*>6k`m+N*)|8W0hDSBIYd~fZ%APOS3Mj|B=O8#3QeX{9 zmOcWtkQSzx*8cIFO850f@VH&7t`3D=lXFn>sJv4#f!E<1!N5X};HYj^YZvL*3s6_@ zt0dhelV&=0@lNLjpcVvo!)^=g^AW0VN4P~<;>c*H>ORqOe`65Z&gRg@PBGd%#BGv531Hqi>&u%D!$u z9KNyRW-CK0s@(o_;SF^o@TA3vsIekp1l5^M;h&2I4SP|A)5JjQWMo@eMEpIfF~)n@C|yj{RL-hHHmY=-!`*mLVtt{S zA`=f%lOc3j&|qA3F^6x9vKea!#W5pjyfD}A7I-Yk)}+PyBniVeX4i_5RIbA8p`dZ{ zCoPVH%Um1g8jQ|N!@7@ZGS{b(Rfj#k-aQFwS?7ig@cEWRT^zAXg;&&2&D@^MCo)Tu zI`BaBfs9z|b*?0VU+VD0sqpox;7JY||EAiwR*V0oTI%31>--@fxj-w%S32(LUexTD zdj$Dl%W`SEvF+Ur)u9O&L>BX@e+gae0p_zO0k&j=)J{wZCIeD@XhOLMokKQn3W>kxn=hnrR%`NjUwapQVZ!Q4qq&a72vhrDl+3r z6JvLabjr@mLopO5eDI{RKbC=4(WS$4z(9VW7y(LboqtlSb{iBIGSUa+y~nr87nZ&o ziAy;rV<%!>E@e0NtkG2K)4tD24nNBLm!e(JoIRxOgfr!n7S~j)!v;E^fZV)hZux@5 zJ2nFgZuW!<%qr{plMo;Z`uMHpab|(Z42OWd#R(#k3vaaZ_4X2Qnpw6bYL^Jex3+oX zUp^h{-*5e5c4k`sGdj>j_m5A&6w|o_9+_lCzaaNIKuR0W8l0zR zLh!Yw4ck7UybHzbQWksQ=J@WXVWD(canaWJa8Nd1ELCY6;}aScdAe8b_m*vOkm#b5 z4+HMJ2KRF5j|D6QM6W_~U!0FgffM$v6u^@NC`s`Cs1LN;D=85I{)Sk+e|Xa~BT!={O{VB^*|Y@9Zc34iKD2T~ zV@rS#b5TIM+LAW8U>re*Y7P=crb}$QC_7=N$(i5Ted~Gqy}dm|e6?+%!(_1^7)V_i zQr(+QR)m=rj2wdq+eks0X6SBmttq~iBMn-k3;JHnwlkO?$kqbMmfnD%>zsl6aLkK^ z$es@&;fCiJL;9*)A+!!p*u8*5Y{ZQ@%ypq${(f^xPELa=G1Kb6N3n1^A_I;I4D8Kt zF$iDaf#Nfs1I){Zph^f*p_*COn z3*JnwTIP(4tOO+ul2DcFcL~iI?mCy%WD%~oMZiqV_S;MDnQi?3@N*go{);#xYoZrQt^!)1f(eF_Fhg?p>JR)t~$mwdA~wx0knew4>cw7jE-UN2e4i8B#iKQ0bVa5CpS~S zc~&ZbB#y^vLF1Ieb?tT>%>YcW(Y*{e;$%@v^#hFvL7#?C?zAQP_sY=rN|iG0Vw4z$2pc(}#jaGD|BgDdVTgHZrtL@k~2j zI2amRFpb6hm3q))f)!LJwi1*R2{5es8bGsjHW=fh=$q>wO`)jXaE&a`()sqQg@*n? zlHGZKG<(49M0|OU1t-T-DTV) zJyj)GVWoKp*mn|jEP?t_r?#58G4!SrB@)FB8)hBY5L$Z?FQJHAc`4fK^>3t8vYM4} zgr8}rccuAazg#2?Jn`B;D##@ccdu|Ww~NSyW7_RIQkzO=!3@`=ojF>q9G(1ol+jlG zgVFX}Mb75ia`8I1FmT`ToslDM(qB8?#F~Uw&pbnoTO$}2y{xW7(6`BRof;`{-fdEz zQ}h`xnKKvh`|gpEzLZmst~i)TSKbBzD*SQ5~UvY??Tz^p~HwuI0k0BHSl2NOn?jUWS7Xuo4e31eb%-te(G+!dSd z0WsG$U*6a0zW%Znb<%e8Q7gX8T}tOGTX|4(OOU0+w)3*;z)AF`l6}*zC3IH^=h#Sk z^YD~+wf45E$Yn68Nw4~rbWU&-W!)lQ;Zi#pB@v-?DRI#j1{kN9Yi2x>6eqldSR^v*2%Vr9MD>?UXOb<6CYIHVyO}8dq$#4wsq$l8uc0CNKpw=N@HQz ztrTiEsBr^@;^eA5>3tn6A zB2hnm28qr^;yQf|j5tc};i~oLR4ieqG{E$(^ZuOi&qtrW0D1S&*UB-8gzW`+Ad7#=_R1B? zpU!c72Bt6NJwG0d3_WEaC%ac6rEb8Dksp0@^SUzC* z{(hsEad!SI(Hutm)=qZpu9UN7wf-D1gp+?HW#{hib9}uUE5HK|z*1cQvJ}t&n5|$Q z4vN!N@aH(T1wy`$uLZ+_l-=3fdfhU-KI_H^%TvhOr)cfw_s$QJP4?A27SO`neGRR) z(p=|IhT0{?oQ8q5uI;p4W7}0&J?+}ha9D9)_4*{z!>rSH%1J@9}f%DduKSa~Ni|qS!9OEXNI@+86N5EqZCP zTrqiLG2vG)3-q63eiDFX&-{@-($IUZ>|-s8Q!7AS73^4MZA|Eoa5|UMD&`=AyM$NV zE_)`s6pNTPHwXFivScH?b^J5ohwQq2lq5=p+l?BpK=!Ct4Z(FE5BN_^Anlh)b5XO< zcs&7~vq80&vBA^OglbtdAStl<_EC{>R+hXsZ%q8NUSR$C1U)hS2hWXmCn&xE}uD%$hoZzc%IkfmANYg%AL9V5qV zQg!XRB12Bd4kT9K zusI7m00k-Rl}e2GhbL6Sju(VIiyW0vkHb!=_tIKlyZ3+xYKr0GxR#aNt^uUt_R7LG zo}e`crxE^*v%MICL(KYkN0ltkC?-vO?i_fz)`r-yt-gEu_KWW(a}~|u)Knu?s?NV` z2c7@dBdiY_L-E;U#YaQ?LdnS4*i%zC1C+mN;J;7uo&f1uaa*_Z|HIyUM>Uy6eWN(G zanxW(#SqIVHoyu>i!-R$02L9bu_1~=q=bY3iDfh@YOJ8r6h}acks2V7r~wfX5FxZc zLa35J5(tn$+C2draRBFCcisD~^{w^t=R==)o9k3Yf8EvJ6W95yu1j?N zXpj6zv#f8+`Rd;0MzJjo!HL&mE3tja60x@w!OoJ1q;ZYJ5C^$mi=@ws1}ngssAs`% zn%dl&g59S|NPcFR?P8eLSZ3FI<10)SXjI4#)i~4F-dvpMaIOZ0*=u>89P55<^3E@B zr-5?L{^}%{&hB=T)_a7=FFB5nY?AC99f|!sWm?s|_^$Dj!07;_-dZy_jhY(D+96im ze?^ZmSgVx*fv3t1$T&w=PogaHt(L5=^)&ZeK0Mg!-Y~qxCa%Tly?=c@Y*_L|RB-*(a%yf{gB;p8X}*>~SLw?31b0rCETVyK z1XopBSz@xVmE4mW{@3kY(Ue05>TuTpHuY_^6M;m1buSbihn=75F0Vl830gFnUSR9) zDuB9h$$E;3c&7g4mumC0!T_2O2q61{@MS<_LqER$tLc-#b-EEgP}7`aogiMd;w?Uy zt2~%}PU;9kSOc37fCP9`=VhCg#%S%$KNJ)l6F}n$`$NP!CAA+rsJ+Q~k=pNflof{K z860W!i#|#++&RXuo9d~`_y-v`mAhkV=EMu^IHtCO^}Dqg z85s&DVt$e7!olLBMX?ZgVi_)~xV2os)WUTp`9%&ZWG!ENqo`z6u9#x;7&|jKC~s+L z&U=)4uATcbA`kvM~ zbU09zt#7hh3)yjC(LC+YrL$BM2-tKbp`oj^F0|xov(Kv?>*^{Jv;Rt*3HOlgUZfDd zC?;|}LFv`ic)G)vyIK!<8Iw!Zi&B0crUPP-l+DhNw7#2*z^_5ft-HEPJwJ~t1T~g~ zm-PF1K#@xiOx)jJg{#^8tFqVaH{f|(1~`!Uik=0t;IC3<=R3YHYTP0#ok#OXEW0zb z_}kzY&wtX_qD^g$ACNYJNx;8UrpY5cHV#1c^T%vVTj(_p%IGNC{y^s7}AM`IR4&?P-1>unaOoYuB4Fl|yZ~Bf0N9gjc)k?LnL{G;6BRzQ+s-C)spE^r82lU@c*&m~shMSoFNFEyc0& zs@<$%#08%#aT}@-ykHn`!KyrypCzCEUMcTwR2vTLrh<6UIXTxL9>3R5m*8~Oy62?z zOHj}Ygg7L1^5ri;OK3<3z~K>TQCpDm$YV z`@MD>&rBqocEhh0mqb6dCbYUdGL#*B`@10X)%}}%tjVo8cva23jw`6p1o4ybz0iof zp=#kao)C}Z_`1d1b4fFep^bo6Q_!1}`h7o4tTO313rb@bL_=VIU)tIoxO!`)Hg1@n zgIjk{k=3rhg2pUv0;y|v)-<@R@0IgIc69w)oIv)Tab(nM1he(No~kx_7u2~o^!c>3 zv$|Y!!Z1^2io#54JWgH@c(;N?Cz@sB3sG!qL1d-PXhS+}c*NaQ9#4ueU&j@Gnzj)w zIll1?$2WVec{T6-+K+HhZF?nn$S4)ZsLFc2O%`Lg$h<_AA+FXAVaQ?`H|Jl{@tV4q zx7w7r?m9$hJ+%{s>0k6u6}L4MB;pTMTOS}G;0Il|rj4ZAW>6vj>SH&_|N7AzoDDZB&`Y|BNHJuXlCueDS@knk$UXgFdaUPKc-P8eCAAIh2~U_WkO%z2C}3 zMR9bH3F@nPACw{+bA{cN$G-1ugC?PzgAcz^HbXCKQQ=^by(pGGdCSLd)vcKf&U3Ay zBKvtLNn7$9NWjYv}BaQYDyj&q5)aBIJk&9hWt^(Y!v;4_w!Mygh ztr%^-RM>IwzKXu1@do@WzHq}iYg*h$-b_MC7Hf>6@k1zjUf}=h2pJ>a>sKlIuas4+ zF%^9ykeDe$imnUdn%_|L%1CrV-!AA#BlG=}m>%TJ;sV4sgZUl14=y(hc;vM6dkOi! zQSfj;r|w6M; zwsY-UH{Iuhpl85E_&4ZL8wkQIuTmE!k3?K6sN{_ASUnEl5VoUFc=<4o zS_M=)41N_512)P2myu=^jCs-Y;7?)tV+$_cs?0h&B4%(E>nU>oh}G) z#*Y69eFLC41zC-uMp`pc<*)$g=NP2yU#Pr4E>?Z+XoBcWQ1AJfM3nP{Z#Rsx*MR5p zZBv24Rw?-?R@5>Ff^eF5)acFBZ&)VZtx^p5C~D%^JB{l9z5yfO({?6A>XK-oU&mG( zK*ZMzcMQtH6W|sOfo#G%4Q1=f&ACH3?EiTC-!~d-64=a1c&&yjBR8AbB>H3~Vr+wU z9eBt`p`%zc5Jc+fDZDLSxyQ;ZJ9(rbtwBl76UZYRw|~GbI}HOe<_{4#Y8Zh#z@@5RA0vBGlS&}e zyhj2F|td2F-f3&qXnH;-g0 z_-6dupQ^bp)U>`-XQZsJ&B2@+o0~%}XQz%N@E4Tig85Gf++iq_2^jIm zob5+iv^KzV@}d>~WBPZN6bS6~pK}LrM<~OvX|1v#?CIj4>G|J0;S$YJ^c*~wpC^s& zeOP7zJ$DW?`gC>_eRU$JWBUFbP52I(4NCmf{mzekFUAq*xgIr?KeqIP*wTkNLt>ab zObnZWp4b0O&+h}a)^jlOWQ$Ss z96SelPI)36d!=ASS#YgMSkIB7{{Zle1h80C3O5@5FZjPp5;MVSe9kBy(>qX&yIP;I zKRbNxdNZv;je1{mbuT65vbWK|sIuiF<7f)a7FzfYTuBd@QnijJcX zosjQGIc}V4E3MHxe#ku%=f*3xJ8QKYJYpaJa(xE8l(&#ncYq_TO(AeiQ=t z4KE-eHlU5bAin?Q@vMd8m(RyOA7}EEh3g9ndhfhhwB>w$TFzBR-=@ZimZp_!}xbHU?(momtv|Cd}j*_666KXuDk z9O&DUP$^xnLmafEBgk#(jP@*?IrhIz^_NjpC}^WHv4HSxRAUuHaSB5ikGPXm5Cp^Kve0U654GVc7?ZF}- z-3@vboDi3~2PS&|EVT7Uxhh^`$++MtiAP}st0>>5{V&-oo_h5b9r20||L9FB1X=k5 zQ~S5#l+`VVz|}PfG-rZ1EM+ijUTuV~RBzFlM~Ir=rFF^PvO^v0)51a5ocap)ke^9i0 z^8s9d{C183=ix1*`jzL(+L|dH(}U`lWBRnwO5Ev6_Pim`VKpIua~m+C19~_OL5M$# zsL7z;dUwNPl@g@TdRRwH)+5S?%*+ooJPFKHn-k_(BSil<2f2SIcg|Vlt|J6|n64g% zdm{83$A7dM$HDCZKr&EljlfTQlaE)XN}Btf@=n2)&52+L&mIT^_s$^Bj3hAlW1;hW6*s8C~s1`?dWQz0iM}EFhvS&km}%ULas~3iVKH%$*@vN8Hhz$B!+=dFNpgrC zcXTNPRUVP_t_}V69iSE*8F9k^eeDQyv2X?7&`_XQx& zqk*bm?1XBSZjFs|e&s8L%YD;U&2#F#wvC7v==M_od2!8f8wOrP{8hYHesakQvE_6d z0^YLOiQ2s}rlFQ~9%kDtdVA`cc4&)_JleW@EV>E}Wy^2~|NR7WpX_;cda`Yq@;&tU z6G=yKR_!^)bI8@XXmvquaFBjTBs)E@^NcvqDZy#X(LimrlABv@)ltsr3}~r~FJ>d= zF>J@-BspdQI8@KvYskaTn2TjA_*nHLJMd$1fka0qSLsO03Q85&1)^z5*5 zqNd5*sFm^Wp;4Ux6i$)IWfIYlBJCvBbT1gLaeigcOh$wxt)g1VdC>9&Qz z(5SYn?F?gC9Y`3_jEKqsO+E%m{Ns)S3bmS#tMFq)qL8(=N`)A{qtx)Go}i#}Y7ze! znyUQlM_w(p&v+uWO0b06)>GF?`!D%`i7+}N@=4-6>4I*Lx=!jDygwt#oe-{FaC4=bpQsWJd$qm?mr`A8*lv+{L>Gr*PG5-NKRIDb zVf4H|>bW;PXhYXKMs3U%rFa>_v!Bo28yr%BLGON{Zeh`zVwf#+qoWDUE;teCVRiOq zJf`n460HftQL#Kosf>bPDp>${J#sTHHOFbxP2yfU1d#yp`u2*m?E>|g6?S*;EV!rC6!YnZ;&Fl$o)GSU1us5TtecNRUqZkhEdpiwx9Zn z_1H9^G>OHkB^NwH5hNnBd})ZGUIPUsF=u${c54I=1(em^c>kau=@7W7=FSAZ2#MFu zQ-Nv7=4VAxe``lf5x2C+OhCme9>MGK=Pf{I`h8wAS+7=)f`#MyWr+;*hnzFqH?T?$ zg4RxVdX?GBL`giLsNYBT?{*&{gzOM+5=+A8z-X=I)M}GoUl>(# zcAQv*vr4lKTw5!Tr^U=uuKtJ?D+6C6%H1B1zyqewjx~VhB&2D|9+LL9rm&w%I|@(pG?mf&y8Q{A}y(LXj_2kr^vJ z;y=2d`#0GzyGE9Zn==D0F$uZmFBQkP+FLlmRG$p0$g57Xz$p~(bmB`$jI$lhSuR}y zSPf4Y75EFk`K-5hWtcPb!7cO=@O_wnUNZBS8~}!8Xt`Ed8t4bSf`LC{)m`>KhtM35 zW#t@CH@LM|yttkZFw-3_w^*NTll8s}3~Z}P-$Y!^uP~IwV>}`j2Z#>_*2zL61DP#y z!|cZJY9FSE-NTakAKiXJi=BWnY3ewtmUwC*!FP{Ah_iEhAq zWM((I(MmRy=}*EZLD*!XIVc*1$Dw#@YH`xlUGE-tJnIgmJS<7yRhmq74@IRpPp0KV zt+~&K7OkfBgIo3hC2@TzvxhpT63rD`Q>S$sZK6<6(ly3YUYTill!C-rW9HJH%7h46 zeR5;(X?#Hp@<^wXAE^d?t+zK+Mzm7ii2);N)^m-r%?lE^|rXrcn%?^<&S>Y`T}ZfLwLgE zK;tfFsN#V0DRt6~QYp}V%w|LL*py$UYaEAE0p8&60 zO2hMfLHpzUAB@uzGn<~70in2uC-Gp z@683!a};I*FABgGJf^BA!ppS$3@SO|D=cJ9*lciIAxL*Rq;|~cfmPROVLN7qa@b(^#&^P)AWy~JTUEsT7I}(HiIyI!Cjg(x4|S0JU@q^GfA*;MLbdj_H+D4EXIIRLi36DM zyZRi%6baj9hS|mj8l{NYXCh(ype#oM$=^Le(_5fVHqN%!*W(BTESAD=^P9kb%uw#| zlNA`2)t=!T>85<}Hw3|A3T?{vx0}P6Q29B3!EsD)*Z@bs9L_&7UsNTJ5rl;pS z*r?Q<-RXGRrl!un3B$gi`uq)Cd-&XTbl6)_*4UOF|1Q*s> zc=}?gbOpBp*vA24{&@Vq`3%A)RTBDXJx&Dt=8wFf#LEUNV4RUjc3k zlSRna%>1<=IRwezq(P4xkFUlQMvWSvTR?>Xt1%A@!Rw7wW|)@(`t9fj5-L7#<5A2z zA)#bmOE$ZC91Tx+&KG{O5kDS&-h$nvUtAOqS1tl(7K&lxvYW3SEp>%zEt*X(=a3)B zWnW#bc%Uwieayb=l~FFnV|*p$2<@A>{xRGGke*l@*5N4-L^=K`08;HpgCHh)R0j_h z#D#|9*(uZgit741F0wPY!e7^Px0-m)8f0HR06ZNg9iZ?s?E!$X?u}X>Y%2TsJQARZ z0Z2^m`e65X5JoGT4*FWgO{1R0BI7zh)_f?c{QJ)K;}!tWTKt?1CYOP+x_Eoz`-S*U zaegTB*N-S9sEN8&1)6};tWZ>pk7%|&#vy^tg1-kLjNopU1O)Ky1~~VxI7vDvjdEve zE;tgQ^F_B#Umz zpDnTh&QSKVcVk7205(7~H4S4r8I%k~AI|ER(`Y#V#!W1jGzFJVWQ!p|yQYdCV4sj>YNd5FOU8PP!y%7 zOe~~M3xuol49s!)(yUv@BpGL<_b;Gvk@tTc_@&4x!#P_cavW=wG=a)plX|l6^=?D`3EZK^|-iBq&chDmupnZHJrE{Hs!^){> zY%qaDY-Zn*iguJxV0u{Z_i`C5G%oCfQjgGFtu>(%Qz`sZ8^tS8ELHup6k0b!@ zD-zc-J?D9JZc-;%I_Z1JPqhfsK7=xIZqO2}boB8I*E9HQRD)?=YkD&`#9(Ou?596m zo~d@J*y&|#$ZPmv#Kc~lZM&|rHSX9;lE@8j;e|W07E)%Ol@~o(HgSWVqWS=8u=^`RL{DJ3%x*v8z`RC}zrS)JdVbi-s(JityZ&;PI z+CyJ;(eM+z;FqMr4(eeS4Yuf92nDX}RlEx~z2DL3+gS+0N=1F3`hup<&uk;>8YXiecDDoUg@43B$+yTKnI)$4%mAbFhqZ1f%_IMdv!ZLxmWXsh3Cp; zx@Em7(-HdkG~;%U`*;Fvd0|JV%w#z>)y34}Sjd*`2yo*$D7QbFu9E=y$+Pfy=?lK8 zTuPm=SF}~Lk6TJk@HiuOC`@V3U^zYLX{!^Z`J)zgtK!rHe?MM}mc63qqo*e0HbkN` z{k^+{UvF3XeTWfGI#gfjE#FNqHAm(}Q$j{4Y*`V&j z=RigmNicfGGb4|-q7NVuywKbI_fG%E zoBh}QTEvIWCjqKid*-Z?wri^+x@TpKIqo@9kvNWyc6Q}DBh3vIh1f3PUbgcN!5E=K zu*8pCKy&B{b(&?lN%G??;$tfcno1e6Q{0J9 z9E+u&TEpt&wb`ifW^9h0dAg90Ac%a0#>Yr#wqtQAx)%Ltu52TO6#U$wzmb+_7~<#A z=YpWyjwNN`B;$ax2wX^h$z!_JGDnFw)$EN0!f14Z1;k9Id(vrck@xwK9VmIf=L2h> z$mE>MHNEZSCn8sb#oK@5IxNqnbnKYs(s&sQ_MR_V|lksdb|*>LO9q+!3y7G6f`hsx!68wx!( zL^jI|>CLPSi4Lr6oHY8?B&dB@U^O=sRTsVGW?+&u>?%c%snvM?8{weC_p6kBsX*2~BA{8C1{A4m>sPOM!S3d^`q8r&=LTg6r zr|;LU!viKDzd>&mKv%M9NlFOWl3jTqeheBE^T-DuPn&4K<9-%_i`*gCe4sz=_w0&n z?x8R*yU#8(y`jw25!3nKl#Kyf{-byOe{J@O67G*rugkc*?r6F}!Q(kG)V@k?T7Q(0 zd2`dg5U2FQGa(eKNWMs+?z7$V^Mp%B)qb6H$)A15?$92!yx*5DGaZ1XxZnnMxb;JU zA+O=Ihy!YsI~4W!Fg&X#7G(9zxI8F#i?xSm2rUGMjcG&Cs<5Fk-*sP*rAhTS(73I> zpZWKVGPv4k{?h4cYN@+M4s$^`bLE{(U-nL{t-Lnf*nmyrYF8#NQB(W8Vzi;npI$J` zo`k}H?vH@6?xRe2alnM%V(Di=$P|1H3l=#xXdRz;^?HVz~2u;O*7xM z`npxmP*Xb%ki8a98cbB$2C}LKa-2BJ_FL~g8sms-O$>Hm;y zao=(6@aJD>1MT!tr4~&pGagW(twR}xe-XD?=v?&ln$8u@LmlmDKeZ{lcs2+iWPw=8 zPqpL=!bEeec~HDDD9w2)`VT!=DQBeE8R@Mnyb6?t_g_EmW28vOXJ@_}mL>IFS4=v2rbYrPWEKr_kaBl zevi9GH>aO91WZ~y8w7Ue?-OlP<&icG<)qFq{bh67g!cuTW9beLgxu<;1B*=U9ZOZT z$^0+c_}G>lCW6^_VFzZT%KrVCbSFJe|RQu4~SWOuf{O;&AD z|7G0wpnA@At%bl6Nlm%q)Gpive%$eOMdMY8ws&R^Z6K0g%gblY*RFgDK^};Tca1Nd z8Xvz!MH{fs{+u=~-0A>%G9=QGuA+^dYA^hm+-$NfnWxt%jBeeqRuiPQBm%$vr@#N* zw&d#br6QS?N)CelgOV>Yu<7>mDme7^fuG;}kDo8k!0JcNeb0G*hOaUMO#}YLPxilA zjwYd6SYflWGXsKX!KrwqIw$^YpIe#3NZ~x2BtW8P!p|*d6-recX#Xz`cmWPHKby`j zI`&EIhk^4{`rZZZA+EjMq^?R#9@@x6*$UG!XER{FN1OSqdlK)(UU>L>L3Vh=2% zz!IbA&O<39nZ^NkI|gLtzh;QcX)@Z6uE9h2HUzPFuQ~5s_?Pz{S;!ku zoBuQ^UEFHXiO}0Sht%wU^8295iqyBR^#7U8`}LgjL!ahp!yXsEYEUhE-+u|+yLi{j zMbC61aOVs&E~zBW3zT#JRN|(PBIe3#TSaRImaOq#yZ}~I{;bZC^FOkof7zBqhnhJ! z{f~crDv_Ex+@ug7c0Dbtptr~Hc=up>66&T*8@}&?(9zE4c6;)HqK)eQesMB!aKC*H zdqpMeC(Q=8->e=t=li7az9p>TJo|dv^SGWWFI=_Npx(EESAW&KcuGIb zXQOjp=9j*Z&Zw7LPopqo_O>!7le2vvepnS>mDk$=e3Wp{EU>h9JD=KF=oD!@FU>7^ z_{w2ZuZA_0)nV`%Y(euvmxUq*$X7kMVG%~YyA{0a`n>cUzjY6U)a1F0bn@GG9oW#S zu7v|;bZGwy>o|_SW>Y6P}coe{ov{0gZd)QNS26kx$!R zMWh+yj}07ERG0~12MlYwG%x}p)ff(-aHx;8MaFhM2=mMq}B>fQQi2|M?;J?Z1e%N{Oi`Xl*jfpxg1_RNQ9^P`L`As z>2brHOQ!F;6i=tfCp~HBR-gAiN?$WzH(-OZdOkSF;};(fD9iUF$c6oJK914BlL|{u zXJ!>gHcAa(9%xfsS8{Q#TX}A7^1uQMzybr022TgNRWWE%=v#ID2~{aP;d}l#`+Z

Jy-yYy7It8EuFYXB{SJ%O=_X5f|^8 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 diff --git a/examples/stack/bqc/fig/trap_dummy_1.png b/examples/stack/bqc/fig/trap_dummy_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2c2a3b34d900f24b5d74e15ade18300c9a3c23 GIT binary patch literal 85578 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�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

u;jo8_+K+0yzfdhOHv&B_{S< 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 q|325Z@7RV3_&IZbx&_!TZECrcfRu&)rwg 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 HH}3xrsiGYI literal 0 HcmV?d00001 diff --git a/squidasm/sim/stack/globals.py b/squidasm/sim/stack/globals.py index c56297db..750618c3 100644 --- a/squidasm/sim/stack/globals.py +++ b/squidasm/sim/stack/globals.py @@ -40,7 +40,7 @@ def get_quantum_state(cls, save: bool = False) -> T_QubitData: [q] = qdevice.peek(i, skip_noise=True) qubits[name][i] = q if save: - states[name][i] = qubitapi.reduced_dm(q) + states[name][i] = q.qstate.qrepr.reduced_dm() if save: cls._BREAKPOINT_STATES.append(states) return qubits diff --git a/squidasm/sim/stack/netstack.py b/squidasm/sim/stack/netstack.py index c12c17bf..604a9476 100644 --- a/squidasm/sim/stack/netstack.py +++ b/squidasm/sim/stack/netstack.py @@ -336,6 +336,7 @@ def handle_create_ck_request( ResCreateAndKeep.__name__, receiver=self ) self._logger.info(f"got result for pair {pair_index}: {result}") + self._logger.info(f"bell state: {result.bell_state}") # Bell state corrections. Resulting state is always Phi+ (i.e. B00). if result.bell_state == BellIndex.B00: From ef7584f401dbde292d8f2454e20430b3a40dc1ce Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Fri, 22 Apr 2022 13:51:05 +0200 Subject: [PATCH 02/12] Update README --- examples/stack/bqc/README.md | 7 +++++-- examples/stack/bqc/example_bqc_nv.py | 2 -- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/stack/bqc/README.md b/examples/stack/bqc/README.md index 404e535c..a73e00f2 100644 --- a/examples/stack/bqc/README.md +++ b/examples/stack/bqc/README.md @@ -4,10 +4,13 @@ To run the code, a specific version of the `netqasm` and `squidasm` packages are To install NetSquid, an account is needed. See the NetSquid website how this is done. ### Installation -First install `netqasm` version 0.9.1: +First install the `qne-hardware` branch of `netqasm`: ``` -pip install netqasm==0.9.1 +git clone https://github.com/QuTech-Delft/netqasm +cd netqasm +git checkout qne-hardware +make install ``` Then, clone the squidasm repostitory and checkout the `qne-hardware` branch: diff --git a/examples/stack/bqc/example_bqc_nv.py b/examples/stack/bqc/example_bqc_nv.py index 9ea725fd..5a106749 100644 --- a/examples/stack/bqc/example_bqc_nv.py +++ b/examples/stack/bqc/example_bqc_nv.py @@ -244,8 +244,6 @@ def trap_round( cfg_file = os.path.join(os.path.dirname(__file__), "config_nv.yaml") cfg = StackNetworkConfig.from_file(cfg_file) - cfg.stacks[0].qdevice_cfg = NVQDeviceConfig.perfect_config() - cfg.stacks[1].qdevice_cfg = NVQDeviceConfig.perfect_config() # computation_round(cfg, num_times, alpha=PI_OVER_2, beta=PI_OVER_2) trap_round(cfg=cfg, num_times=num_times, dummy=2) From 2ca446cb2d0041087f20b06be9cea48261a1d8ee Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Fri, 22 Apr 2022 13:52:40 +0200 Subject: [PATCH 03/12] Update README --- examples/stack/bqc/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/stack/bqc/README.md b/examples/stack/bqc/README.md index a73e00f2..74c5e071 100644 --- a/examples/stack/bqc/README.md +++ b/examples/stack/bqc/README.md @@ -11,6 +11,7 @@ git clone https://github.com/QuTech-Delft/netqasm cd netqasm git checkout qne-hardware make install +cd .. ``` Then, clone the squidasm repostitory and checkout the `qne-hardware` branch: From 6096ab8c6f87dd8b103d5a0ef6c7e30e9588d6b5 Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Mon, 25 Apr 2022 16:03:25 +0200 Subject: [PATCH 04/12] Add qne_bqc example directory --- examples/stack/{bqc => qne_bqc}/README.md | 31 +-- examples/stack/qne_bqc/config_nv.yaml | 79 ++++++ examples/stack/qne_bqc/example_bqc_nv.py | 260 +++++++++++++++++++ examples/stack/qne_bqc/example_epr.py | 197 ++++++++++++++ examples/stack/qne_bqc/fig/5_6_effective.png | Bin 0 -> 17137 bytes examples/stack/qne_bqc/fig/5_6_generic.png | Bin 0 -> 94945 bytes squidasm/run/stack/build.py | 3 + squidasm/run/stack/config.py | 43 ++- squidasm/run/stack/run.py | 33 ++- 9 files changed, 611 insertions(+), 35 deletions(-) rename examples/stack/{bqc => qne_bqc}/README.md (68%) create mode 100644 examples/stack/qne_bqc/config_nv.yaml create mode 100644 examples/stack/qne_bqc/example_bqc_nv.py create mode 100644 examples/stack/qne_bqc/example_epr.py create mode 100644 examples/stack/qne_bqc/fig/5_6_effective.png create mode 100644 examples/stack/qne_bqc/fig/5_6_generic.png diff --git a/examples/stack/bqc/README.md b/examples/stack/qne_bqc/README.md similarity index 68% rename from examples/stack/bqc/README.md rename to examples/stack/qne_bqc/README.md index 74c5e071..7176804d 100644 --- a/examples/stack/bqc/README.md +++ b/examples/stack/qne_bqc/README.md @@ -1,17 +1,14 @@ + ## Prerequisites To run the code, a specific version of the `netqasm` and `squidasm` packages are needed. `squidasm` relies on [NetSquid](https://netsquid.org/). To install NetSquid, an account is needed. See the NetSquid website how this is done. ### Installation -First install the `qne-hardware` branch of `netqasm`: +First install `netqasm` version 0.9.1: ``` -git clone https://github.com/QuTech-Delft/netqasm -cd netqasm -git checkout qne-hardware -make install -cd .. +pip install netqasm==0.9.1 ``` Then, clone the squidasm repostitory and checkout the `qne-hardware` branch: @@ -69,31 +66,17 @@ Red values are computed by the client and sent to the server. - `m1`: uniformly random - `m2`: outcome of **EC**. Expected statistics depend on alpha and beta. -## Trap rounds -In a trap round, the angles are computed differently by the server. -The client randomly chooses which of the remotely prepared qubits is a *dummy*. - -If *dummy = 1*: -![](fig/trap_dummy_1.png) - -If *dummy = 2*: -![](fig/trap_dummy_2.png) - - -## Evaluation -The most important metric of success for the BQC application is the *error rate*. -This is computed as the fraction of times a trap round fails. - ## Simulation scripts -`examples/stack/bqc` contains some BQC application code file and some configuration files. `example_bqc_nv.py` is the full BQC application, including trap rounds and +Examples of simulation code are in the `examples/stack` directory. The `examples/stack/qne_bqc` directory in there can be used to do simulations for the QNE parameter estimation. +It contains BQC application code file and some configuration files. `example_bqc_nv.py` is the full BQC application, including trap rounds and computation of the error rate. Simply running the file with ``` -python examples/stack/bqc/example_bqc_nv.py +python examples/stack/qne_bqc/example_bqc_nv.py ``` will run the simulation. The data it produces is simply printed or ignored. One can simply add code to e.g. store the data to a file or to create plots from them. The `config_nv.yaml` file contains configuration parameters for the hardware of the nodes and the entanglement link. -**NOTE: currently the NV entanglement generation parameters are not simulated in much detail. We are working to integrate this entanglement distributor https://docs.netsquid.org/snippets/netsquid-nv/modules/magic_distributor.html#netsquid_nv.magic_distributor.NVSingleClickMagicDistributor which allows to much more accurately specify the hardware.** +Check https://docs.netsquid.org/snippets/netsquid-nv/modules/magic_distributor.html#netsquid_nv.magic_distributor.NVSingleClickMagicDistributor for information about the link parameters, and the comments in the `config_nv.yaml` file itself for the node parameters. \ No newline at end of file diff --git a/examples/stack/qne_bqc/config_nv.yaml b/examples/stack/qne_bqc/config_nv.yaml new file mode 100644 index 00000000..5b3aed6c --- /dev/null +++ b/examples/stack/qne_bqc/config_nv.yaml @@ -0,0 +1,79 @@ +qdevice_cfg: &qdevice_cfg + # number of qubits per NV + num_qubits: 2 + + # initialization error of the electron spin + electron_init_depolar_prob: 0.05 + + # error of the single-qubit gate + electron_single_qubit_depolar_prob: 0.0 + + # measurement errors (prob_error_X is the probability that outcome X is flipped to 1 - X) + prob_error_0: 0.05 + prob_error_1: 0.005 + + # initialization error of the carbon nuclear spin + carbon_init_depolar_prob: 0.05 + + # error of the Z-rotation gate on the carbon nuclear spin + carbon_z_rot_depolar_prob: 0.001 + + # error of the native NV two-qubit gate + ec_gate_depolar_prob: 0.008 + + # coherence times + electron_T1: 1_000_000_000 + electron_T2: 300_000_000 + carbon_T1: 150_000_000_000 + carbon_T2: 1_500_000_000 + + # gate execution times + carbon_init: 310_000 + carbon_rot_x: 500_000 + carbon_rot_y: 500_000 + carbon_rot_z: 500_000 + electron_init: 2_000 + electron_rot_x: 5_000 + electron_rot_y: 5_000 + electron_rot_z: 5_000 + ec_controlled_dir_x: 500_000 + ec_controlled_dir_y: 500_000 + measure: 3_700 + +stacks: + - name: client + qdevice_typ: nv + qdevice_cfg: + <<: *qdevice_cfg + - name: server + qdevice_typ: nv + qdevice_cfg: + <<: *qdevice_cfg + +link_cfg: &link_cfg + cycle_time: 5_000 + alpha_A: 0.1 + alpha_B: 0.1 + length_A: 0.005 + length_B: 0.005 + p_loss_init_A: null + p_loss_length_A: null + speed_of_light_A: null + p_loss_init_B: null + p_loss_length_B: null + speed_of_light_B: null + dark_count_probability: null + detector_efficiency: null + visibility: null + num_resolving: null + std_electron_electron_phase_drift: null + coherent_phase: null + p_double_exc: null + p_fail_class_corr: null + +links: + - stack1: client + stack2: server + typ: nv + cfg: + <<: *link_cfg \ No newline at end of file diff --git a/examples/stack/qne_bqc/example_bqc_nv.py b/examples/stack/qne_bqc/example_bqc_nv.py new file mode 100644 index 00000000..01c73304 --- /dev/null +++ b/examples/stack/qne_bqc/example_bqc_nv.py @@ -0,0 +1,260 @@ +from __future__ import annotations + +import math +import os +from typing import Any, Dict, Generator + +import netsquid as ns +from netqasm.lang.ir import BreakpointAction +from netqasm.sdk.connection import BaseNetQASMConnection +from netqasm.sdk.futures import Future, RegFuture +from netqasm.sdk.qubit import Qubit + +from pydynaa import EventExpression +from squidasm.run.stack.config import ( + DepolariseLinkConfig, + LinkConfig, + NVLinkConfig, + NVQDeviceConfig, + StackConfig, + StackNetworkConfig, +) +from squidasm.run.stack.run import run +from squidasm.sim.stack.common import LogManager +from squidasm.sim.stack.csocket import ClassicalSocket +from squidasm.sim.stack.program import Program, ProgramContext, ProgramMeta + +# BQC application run on NV hardware. + + +class ClientProgram(Program): + PEER = "server" + + def __init__( + self, + alpha: float, + beta: float, + trap: bool, + dummy: int, + theta1: float, + theta2: float, + r1: int, + r2: int, + ): + self._alpha = alpha + self._beta = beta + self._trap = trap + self._dummy = dummy + self._theta1 = theta1 + self._theta2 = theta2 + self._r1 = r1 + self._r2 = r2 + + @property + def meta(self) -> ProgramMeta: + return ProgramMeta( + name="client_program", + parameters={ + "alpha": self._alpha, + "beta": self._beta, + "trap": self._trap, + "dummy": self._dummy, + "theta1": self._theta1, + "theta2": self._theta2, + "r1": self._r1, + "r2": self._r2, + }, + csockets=[self.PEER], + epr_sockets=[self.PEER], + max_qubits=2, + ) + + def run( + self, context: ProgramContext + ) -> Generator[EventExpression, None, Dict[str, Any]]: + conn = context.connection + epr_socket = context.epr_sockets[self.PEER] + csocket: ClassicalSocket = context.csockets[self.PEER] + + p1: Future + p2: Future + outcomes = conn.new_array(length=2) + + def post_create(_: BaseNetQASMConnection, q: Qubit, index: RegFuture): + with index.if_eq(0): + if not (self._trap and self._dummy == 2): + q.rot_Z(angle=self._theta2) + q.H() + + with index.if_eq(1): + if not (self._trap and self._dummy == 1): + q.rot_Z(angle=self._theta1) + q.H() + q.measure(future=outcomes.get_future_index(index)) + + epr_socket.create_keep(2, sequential=True, post_routine=post_create) + + yield from conn.flush() + + p1 = int(outcomes.get_future_index(1)) + p2 = int(outcomes.get_future_index(0)) + + if self._trap and self._dummy == 2: + delta1 = -self._theta1 + (p1 + self._r1) * math.pi + else: + delta1 = self._alpha - self._theta1 + (p1 + self._r1) * math.pi + csocket.send_float(delta1) + + m1 = yield from csocket.recv_int() + if self._trap and self._dummy == 1: + delta2 = -self._theta2 + (p2 + self._r2) * math.pi + else: + delta2 = ( + math.pow(-1, (m1 + self._r1)) * self._beta + - self._theta2 + + (p2 + self._r2) * math.pi + ) + csocket.send_float(delta2) + + return {"p1": p1, "p2": p2} + + +class ServerProgram(Program): + PEER = "client" + + @property + def meta(self) -> ProgramMeta: + return ProgramMeta( + name="server_program", + parameters={}, + csockets=[self.PEER], + epr_sockets=[self.PEER], + max_qubits=2, + ) + + def run( + self, context: ProgramContext + ) -> Generator[EventExpression, None, Dict[str, Any]]: + conn = context.connection + epr_socket = context.epr_sockets[self.PEER] + csocket: ClassicalSocket = context.csockets[self.PEER] + + # Create EPR Pair + epr1, epr2 = epr_socket.recv_keep(2) + epr2.cphase(epr1) + + yield from conn.flush() + + delta1 = yield from csocket.recv_float() + + epr2.rot_Z(angle=delta1) + epr2.H() + m1 = epr2.measure(store_array=False) + yield from conn.flush() + + m1 = int(m1) + + csocket.send_int(m1) + + delta2 = yield from csocket.recv_float() + + epr1.rot_Z(angle=delta2) + epr1.H() + conn.insert_breakpoint(BreakpointAction.DUMP_LOCAL_STATE) + m2 = epr1.measure(store_array=False) + yield from conn.flush() + + m2 = int(m2) + return {"m1": m1, "m2": m2} + + +PI = math.pi +PI_OVER_2 = math.pi / 2 + + +def computation_round( + cfg: StackNetworkConfig, + num_times: int = 1, + alpha: float = 0.0, + beta: float = 0.0, + theta1: float = 0.0, + theta2: float = 0.0, +) -> None: + client_program = ClientProgram( + alpha=alpha, + beta=beta, + trap=False, + dummy=-1, + theta1=theta1, + theta2=theta2, + r1=0, + r2=0, + ) + server_program = ServerProgram() + + _, server_results = run( + cfg, {"client": client_program, "server": server_program}, num_times=num_times + ) + + m2s = [result["m2"] for result in server_results] + num_zeros = len([m for m in m2s if m == 0]) + frac0 = round(num_zeros / num_times, 2) + frac1 = 1 - frac0 + print(f"dist (0, 1) = ({frac0}, {frac1})") + + +def trap_round( + cfg: StackNetworkConfig, + num_times: int = 1, + alpha: float = 0.0, + beta: float = 0.0, + theta1: float = 0.0, + theta2: float = 0.0, + dummy: int = 1, +) -> None: + client_program = ClientProgram( + alpha=alpha, + beta=beta, + trap=True, + dummy=dummy, + theta1=theta1, + theta2=theta2, + r1=0, + r2=0, + ) + server_program = ServerProgram() + + client_results, server_results = run( + cfg, {"client": client_program, "server": server_program}, num_times=num_times + ) + + p1s = [result["p1"] for result in client_results] + p2s = [result["p2"] for result in client_results] + m1s = [result["m1"] for result in server_results] + m2s = [result["m2"] for result in server_results] + + assert dummy in [1, 2] + if dummy == 1: + num_fails = len([(p, m) for (p, m) in zip(p1s, m2s) if p != m]) + else: + num_fails = len([(p, m) for (p, m) in zip(p2s, m1s) if p != m]) + + frac_fail = round(num_fails / num_times, 2) + print(f"fail rate: {frac_fail}") + + +if __name__ == "__main__": + num_times = 20 + LogManager.set_log_level("WARNING") + + cwd = os.path.dirname(__file__) + log_file = os.path.join(cwd, "qne_bqc.log") + + LogManager.log_to_file(log_file) + ns.set_qstate_formalism(ns.qubits.qformalism.QFormalism.DM) + + cfg_file = os.path.join(cwd, "config_nv.yaml") + cfg = StackNetworkConfig.from_file(cfg_file) + + # computation_round(cfg, num_times, alpha=PI_OVER_2, beta=PI_OVER_2) + trap_round(cfg=cfg, num_times=num_times, dummy=2) diff --git a/examples/stack/qne_bqc/example_epr.py b/examples/stack/qne_bqc/example_epr.py new file mode 100644 index 00000000..f13f904f --- /dev/null +++ b/examples/stack/qne_bqc/example_epr.py @@ -0,0 +1,197 @@ +from __future__ import annotations + +import math +import os +from re import T +from typing import Any, Dict, Generator + +import netsquid as ns +from netqasm.lang.ir import BreakpointAction, BreakpointRole +from netqasm.sdk.connection import BaseNetQASMConnection +from netqasm.sdk.futures import Future, RegFuture +from netqasm.sdk.qubit import Qubit +from netsquid.qubits import ketstates, qubitapi + +from pydynaa import EventExpression +from squidasm.run.stack.config import ( + LinkConfig, + NVLinkConfig, + NVQDeviceConfig, + StackConfig, + StackNetworkConfig, +) +from squidasm.run.stack.run import run +from squidasm.sim.stack.common import LogManager +from squidasm.sim.stack.csocket import ClassicalSocket +from squidasm.sim.stack.globals import GlobalSimData +from squidasm.sim.stack.program import Program, ProgramContext, ProgramMeta + +# BQC application run on NV hardware. + + +class ClientProgram(Program): + PEER = "server" + + def __init__( + self, + alpha: float, + beta: float, + trap: bool, + dummy: int, + theta1: float, + theta2: float, + r1: int, + r2: int, + ): + self._alpha = alpha + self._beta = beta + self._trap = trap + self._dummy = dummy + self._theta1 = theta1 + self._theta2 = theta2 + self._r1 = r1 + self._r2 = r2 + + @property + def meta(self) -> ProgramMeta: + return ProgramMeta( + name="client_program", + parameters={ + "alpha": self._alpha, + "beta": self._beta, + "trap": self._trap, + "dummy": self._dummy, + "theta1": self._theta1, + "theta2": self._theta2, + "r1": self._r1, + "r2": self._r2, + }, + csockets=[self.PEER], + epr_sockets=[self.PEER], + max_qubits=2, + ) + + def run( + self, context: ProgramContext + ) -> Generator[EventExpression, None, Dict[str, Any]]: + conn = context.connection + epr_socket = context.epr_sockets[self.PEER] + csocket: ClassicalSocket = context.csockets[self.PEER] + + epr = epr_socket.create_keep(1)[0] + conn.insert_breakpoint( + BreakpointAction.DUMP_GLOBAL_STATE, role=BreakpointRole.CREATE + ) + m = epr.measure() + yield from conn.flush() + + breakpoint = GlobalSimData.get_last_breakpoint_state() + epr_state = breakpoint["client"][0] + for i in range(4): + for j in range(4): + if abs(epr_state[i][j] < 1e-5): + epr_state[i][j] = 0 + print(epr_state) + q0, q1 = qubitapi.create_qubits(2) + qubitapi.assign_qstate([q0, q1], epr_state) + fid = qubitapi.fidelity([q0, q1], ketstates.b00, squared=True) + print(f"fidelity = {fid}") + + return {"m": int(m)} + + +class ServerProgram(Program): + PEER = "client" + + @property + def meta(self) -> ProgramMeta: + return ProgramMeta( + name="server_program", + parameters={}, + csockets=[self.PEER], + epr_sockets=[self.PEER], + max_qubits=2, + ) + + def run( + self, context: ProgramContext + ) -> Generator[EventExpression, None, Dict[str, Any]]: + conn = context.connection + epr_socket = context.epr_sockets[self.PEER] + csocket: ClassicalSocket = context.csockets[self.PEER] + + epr = epr_socket.recv_keep(1)[0] + conn.insert_breakpoint( + BreakpointAction.DUMP_GLOBAL_STATE, role=BreakpointRole.RECEIVE + ) + m = epr.measure() + yield from conn.flush() + + return {"m": int(m)} + + +PI = math.pi +PI_OVER_2 = math.pi / 2 + + +def computation_round( + cfg: StackNetworkConfig, + num_times: int = 1, + alpha: float = 0.0, + beta: float = 0.0, + theta1: float = 0.0, + theta2: float = 0.0, +) -> None: + client_program = ClientProgram( + alpha=alpha, + beta=beta, + trap=False, + dummy=-1, + theta1=theta1, + theta2=theta2, + r1=0, + r2=0, + ) + server_program = ServerProgram() + + client_results, server_results = run( + cfg, {"client": client_program, "server": server_program}, num_times=num_times + ) + + client = [r["m"] for r in client_results] + server = [r["m"] for r in server_results] + + print("".join(str(c) for c in client)) + print("".join(str(s) for s in server)) + + +if __name__ == "__main__": + num_times = 1 + LogManager.set_log_level("WARNING") + + cwd = os.path.dirname(__file__) + log_file = os.path.join(cwd, "qne_bqc.log") + + LogManager.log_to_file(log_file) + ns.set_qstate_formalism(ns.qubits.qformalism.QFormalism.DM) + + client_stack = StackConfig( + name="client", + qdevice_typ="nv", + qdevice_cfg=NVQDeviceConfig.perfect_config(), + ) + server_stack = StackConfig( + name="server", + qdevice_typ="nv", + qdevice_cfg=NVQDeviceConfig.perfect_config(), + ) + link = LinkConfig( + # stack1="client", stack2="server", typ="nv", cfg=NVLinkConfig.perfect_config() + stack1="client", + stack2="server", + typ="nv", + cfg=NVLinkConfig.perfect_config(), + ) + cfg = StackNetworkConfig(stacks=[client_stack, server_stack], links=[link]) + + computation_round(cfg, num_times, alpha=PI_OVER_2, beta=PI_OVER_2) diff --git a/examples/stack/qne_bqc/fig/5_6_effective.png b/examples/stack/qne_bqc/fig/5_6_effective.png new file mode 100644 index 0000000000000000000000000000000000000000..258154c5903913903ce1a533578eb3f25070dfaa GIT binary patch literal 17137 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 literal 0 HcmV?d00001 diff --git a/examples/stack/qne_bqc/fig/5_6_generic.png b/examples/stack/qne_bqc/fig/5_6_generic.png new file mode 100644 index 0000000000000000000000000000000000000000..629ac444ab5e2af408e7ce5f213588dca01fc61f GIT binary patch literal 94945 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�RQ1 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 literal 0 HcmV?d00001 diff --git a/squidasm/run/stack/build.py b/squidasm/run/stack/build.py index 63313bd3..ad21b807 100644 --- a/squidasm/run/stack/build.py +++ b/squidasm/run/stack/build.py @@ -229,4 +229,7 @@ def build_nv_qdevice(name: str, cfg: NVQDeviceConfig) -> QuantumProcessor: mem_noise_models=mem_noise_models, phys_instructions=phys_instructions, ) + qmem.add_property("delta_w", 0.5) + qmem.add_property("tau_decay", 0.5) + qmem.add_property("cycle_time", 0.5) return qmem diff --git a/squidasm/run/stack/config.py b/squidasm/run/stack/config.py index 1ec04180..6e60ee0f 100644 --- a/squidasm/run/stack/config.py +++ b/squidasm/run/stack/config.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Any, List +from typing import Any, Dict, List, Optional import yaml from pydantic import BaseModel @@ -79,9 +79,9 @@ class NVQDeviceConfig(BaseModel): carbon_rot_y: int = 500_000 carbon_rot_z: int = 500_000 electron_init: int = 2_000 - electron_rot_x: int = 5 - electron_rot_y: int = 5 - electron_rot_z: int = 5 + electron_rot_x: int = 5_000 + electron_rot_y: int = 5_000 + electron_rot_z: int = 5_000 ec_controlled_dir_x: int = 500_000 ec_controlled_dir_y: int = 500_000 measure: int = 3_700 @@ -133,18 +133,47 @@ class DepolariseLinkConfig(BaseModel): def from_file(cls, path: str) -> DepolariseLinkConfig: return _from_file(path, DepolariseLinkConfig) # type: ignore + @classmethod + def perfect_config(cls) -> DepolariseLinkConfig: + return DepolariseLinkConfig(fidelity=1, prob_success=1, t_cycle=1e1) + class NVLinkConfig(BaseModel): + cycle_time: float + alpha_A: float + alpha_B: float length_A: float length_B: float - full_cycle: float - cycle_time: float - alpha: float + p_loss_init_A: Optional[float] + p_loss_length_A: Optional[float] + speed_of_light_A: Optional[float] + p_loss_init_B: Optional[float] + p_loss_length_B: Optional[float] + speed_of_light_B: Optional[float] + dark_count_probability: Optional[float] + detector_efficiency: Optional[float] + visibility: Optional[float] + num_resolving: Optional[bool] + std_electron_electron_phase_drift: Optional[float] + coherent_phase: Optional[float] + p_double_exc: Optional[float] + p_fail_class_corr: Optional[float] @classmethod def from_file(cls, path: str) -> NVLinkConfig: return _from_file(path, NVLinkConfig) # type: ignore + @classmethod + def perfect_config(cls) -> NVLinkConfig: + return NVLinkConfig( + prob_success=1, + cycle_time=1, + alpha_A=0.1, + alpha_B=0.1, + length_A=0.001, + length_B=0.001, + ) + class HeraldedLinkConfig(BaseModel): length: float diff --git a/squidasm/run/stack/run.py b/squidasm/run/stack/run.py index 9770864d..b07d86d0 100644 --- a/squidasm/run/stack/run.py +++ b/squidasm/run/stack/run.py @@ -8,6 +8,7 @@ MagicLinkLayerProtocol, MagicLinkLayerProtocolWithSignaling, SingleClickTranslationUnit, + TranslationUnit, ) from netsquid_magic.magic_distributor import ( DepolariseWithFailureMagicDistributor, @@ -32,6 +33,14 @@ from squidasm.sim.stack.stack import NodeStack, StackNetwork +class EmptyTranslationUnit(TranslationUnit): + def __call__(self, request, **fixed_parameters): + return self.request_to_parameters(request, **fixed_parameters) + + def request_to_parameters(self, request, **fixed_parameters): + return {} + + def fidelity_to_prob_max_mixed(fid: float) -> float: return (1 - fid) * 4.0 / 3.0 @@ -86,12 +95,27 @@ def _setup_network(config: StackNetworkConfig) -> StackNetwork: link_cfg = NVLinkConfig(**link.cfg) link_dist = NVSingleClickMagicDistributor( nodes=[stack1.node, stack2.node], + cycle_time=42, length_A=link_cfg.length_A, length_B=link_cfg.length_B, - full_cycle=link_cfg.full_cycle, - cycle_time=link_cfg.cycle_time, - alpha=link_cfg.alpha, + p_loss_init_A=link_cfg.p_loss_init_A, + p_loss_length_A=link_cfg.p_loss_length_A, + speed_of_light_A=link_cfg.speed_of_light_A, + p_loss_init_B=link_cfg.p_loss_init_B, + p_loss_length_B=link_cfg.p_loss_length_B, + speed_of_light_B=link_cfg.speed_of_light_B, + dark_count_probability=link_cfg.dark_count_probability, + detector_efficiency=link_cfg.detector_efficiency, + visibility=link_cfg.visibility, + num_resolving=link_cfg.num_resolving, + std_electron_electron_phase_drift=link_cfg.std_electron_electron_phase_drift, + coherent_phase=link_cfg.coherent_phase, + p_double_exc=link_cfg.p_double_exc, + p_fail_class_corr=link_cfg.p_fail_class_corr, ) + # link_dist.fixed_delivery_parameters[0]["cycle_time"] = 1337 + link_dist.fixed_delivery_parameters[0]["alpha_A"] = link_cfg.alpha_A + link_dist.fixed_delivery_parameters[0]["alpha_B"] = link_cfg.alpha_B elif link.typ == "heralded": link_cfg = link.cfg if not isinstance(link_cfg, HeraldedLinkConfig): @@ -108,7 +132,8 @@ def _setup_network(config: StackNetworkConfig) -> StackNetwork: link_prot = MagicLinkLayerProtocolWithSignaling( nodes=[stack1.node, stack2.node], magic_distributor=link_dist, - translation_unit=SingleClickTranslationUnit(), + # translation_unit=SingleClickTranslationUnit(), + translation_unit=EmptyTranslationUnit(), ) stack1.assign_ll_protocol(link_prot) stack2.assign_ll_protocol(link_prot) From 4fbf19bb90c916720f435f4910511bbe98af37dd Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Fri, 3 Jun 2022 15:47:14 +0200 Subject: [PATCH 05/12] Fix issues with external packages --- examples/stack/bqc/example_bqc_nv.py | 2 +- .../example_ll_custom_subrt.py | 9 ++--- examples/stack/qne_bqc/README.md | 11 +----- examples/stack/qne_bqc/config_nv.yaml | 4 ++ examples/stack/qne_bqc/example_bqc_nv.py | 11 +----- examples/stack/qne_bqc/example_epr.py | 15 ++----- setup.cfg | 6 +-- squidasm/run/stack/build.py | 5 +-- squidasm/run/stack/config.py | 6 ++- squidasm/run/stack/run.py | 27 +++++++++++-- squidasm/sim/stack/globals.py | 1 - squidasm/sim/stack/netstack.py | 39 +++++++++++-------- squidasm/sim/stack/qnos.py | 9 ++++- squidasm/sim/stack/stack.py | 3 +- tests/stack/test_handler.py | 15 +++---- tests/stack/test_processor.py | 15 +++---- tests/stack/test_two_nodes.py | 35 +++++++++++------ 17 files changed, 121 insertions(+), 92 deletions(-) diff --git a/examples/stack/bqc/example_bqc_nv.py b/examples/stack/bqc/example_bqc_nv.py index 5a106749..a52f7d5a 100644 --- a/examples/stack/bqc/example_bqc_nv.py +++ b/examples/stack/bqc/example_bqc_nv.py @@ -11,7 +11,7 @@ from netqasm.sdk.qubit import Qubit from pydynaa import EventExpression -from squidasm.run.stack.config import NVQDeviceConfig, StackNetworkConfig +from squidasm.run.stack.config import StackNetworkConfig from squidasm.run.stack.run import run from squidasm.sim.stack.common import LogManager from squidasm.sim.stack.csocket import ClassicalSocket diff --git a/examples/stack/link_layer_custom_subrt/example_ll_custom_subrt.py b/examples/stack/link_layer_custom_subrt/example_ll_custom_subrt.py index 1061f78e..52b44676 100644 --- a/examples/stack/link_layer_custom_subrt/example_ll_custom_subrt.py +++ b/examples/stack/link_layer_custom_subrt/example_ll_custom_subrt.py @@ -13,7 +13,6 @@ StackConfig, StackNetworkConfig, ) -from squidasm.run.stack.run import run from squidasm.sim.stack.common import LogManager from squidasm.sim.stack.program import Program, ProgramContext, ProgramMeta @@ -186,8 +185,8 @@ def post_create(conn, q, pair): if __name__ == "__main__": - LogManager.set_log_level("WARNING") - # LogManager.log_to_file(os.path.join(os.path.dirname(__file__), "debug.log")) + LogManager.set_log_level("DEBUG") + LogManager.log_to_file(os.path.join(os.path.dirname(__file__), "debug.log")) num_times = 1 @@ -208,6 +207,6 @@ def post_create(conn, q, pair): client_program = ClientProgram(num_repetitions=2) server_program = ServerProgram(num_repetitions=2) - results = run(cfg, {"client": client_program, "server": server_program}, num_times) + # results = run(cfg, {"client": client_program, "server": server_program}, num_times) - print(results) + # print(results) diff --git a/examples/stack/qne_bqc/README.md b/examples/stack/qne_bqc/README.md index 7176804d..2e2e3cde 100644 --- a/examples/stack/qne_bqc/README.md +++ b/examples/stack/qne_bqc/README.md @@ -1,17 +1,10 @@ ## Prerequisites -To run the code, a specific version of the `netqasm` and `squidasm` packages are needed. `squidasm` relies on [NetSquid](https://netsquid.org/). To install NetSquid, an account is needed. See the NetSquid website how this is done. ### Installation -First install `netqasm` version 0.9.1: - -``` -pip install netqasm==0.9.1 -``` - -Then, clone the squidasm repostitory and checkout the `qne-hardware` branch: +Clone the squidasm repostitory and checkout the `qne-hardware` branch: ``` git clone https://github.com/QuTech-Delft/squidasm cd squidasm @@ -27,7 +20,7 @@ export NETSQUIDPYPI_PWD= Install `squidasm`: ``` -make install +make install-tests ``` After installation, the simulations can be run as described below. diff --git a/examples/stack/qne_bqc/config_nv.yaml b/examples/stack/qne_bqc/config_nv.yaml index 5b3aed6c..8001224d 100644 --- a/examples/stack/qne_bqc/config_nv.yaml +++ b/examples/stack/qne_bqc/config_nv.yaml @@ -21,6 +21,10 @@ qdevice_cfg: &qdevice_cfg # error of the native NV two-qubit gate ec_gate_depolar_prob: 0.008 + # delta_w and tau_decay + delta_w: 0 + tau_decay: 1.0 + # coherence times electron_T1: 1_000_000_000 electron_T2: 300_000_000 diff --git a/examples/stack/qne_bqc/example_bqc_nv.py b/examples/stack/qne_bqc/example_bqc_nv.py index 01c73304..713e9845 100644 --- a/examples/stack/qne_bqc/example_bqc_nv.py +++ b/examples/stack/qne_bqc/example_bqc_nv.py @@ -11,14 +11,7 @@ from netqasm.sdk.qubit import Qubit from pydynaa import EventExpression -from squidasm.run.stack.config import ( - DepolariseLinkConfig, - LinkConfig, - NVLinkConfig, - NVQDeviceConfig, - StackConfig, - StackNetworkConfig, -) +from squidasm.run.stack.config import StackNetworkConfig from squidasm.run.stack.run import run from squidasm.sim.stack.common import LogManager from squidasm.sim.stack.csocket import ClassicalSocket @@ -244,7 +237,7 @@ def trap_round( if __name__ == "__main__": - num_times = 20 + num_times = 100 LogManager.set_log_level("WARNING") cwd = os.path.dirname(__file__) diff --git a/examples/stack/qne_bqc/example_epr.py b/examples/stack/qne_bqc/example_epr.py index f13f904f..8c7a8947 100644 --- a/examples/stack/qne_bqc/example_epr.py +++ b/examples/stack/qne_bqc/example_epr.py @@ -2,14 +2,11 @@ import math import os -from re import T from typing import Any, Dict, Generator import netsquid as ns +import numpy as np from netqasm.lang.ir import BreakpointAction, BreakpointRole -from netqasm.sdk.connection import BaseNetQASMConnection -from netqasm.sdk.futures import Future, RegFuture -from netqasm.sdk.qubit import Qubit from netsquid.qubits import ketstates, qubitapi from pydynaa import EventExpression @@ -22,12 +19,9 @@ ) from squidasm.run.stack.run import run from squidasm.sim.stack.common import LogManager -from squidasm.sim.stack.csocket import ClassicalSocket from squidasm.sim.stack.globals import GlobalSimData from squidasm.sim.stack.program import Program, ProgramContext, ProgramMeta -# BQC application run on NV hardware. - class ClientProgram(Program): PEER = "server" @@ -76,7 +70,6 @@ def run( ) -> Generator[EventExpression, None, Dict[str, Any]]: conn = context.connection epr_socket = context.epr_sockets[self.PEER] - csocket: ClassicalSocket = context.csockets[self.PEER] epr = epr_socket.create_keep(1)[0] conn.insert_breakpoint( @@ -91,7 +84,8 @@ def run( for j in range(4): if abs(epr_state[i][j] < 1e-5): epr_state[i][j] = 0 - print(epr_state) + print("\n") + print(np.around(epr_state, 4)) q0, q1 = qubitapi.create_qubits(2) qubitapi.assign_qstate([q0, q1], epr_state) fid = qubitapi.fidelity([q0, q1], ketstates.b00, squared=True) @@ -118,7 +112,6 @@ def run( ) -> Generator[EventExpression, None, Dict[str, Any]]: conn = context.connection epr_socket = context.epr_sockets[self.PEER] - csocket: ClassicalSocket = context.csockets[self.PEER] epr = epr_socket.recv_keep(1)[0] conn.insert_breakpoint( @@ -170,7 +163,7 @@ def computation_round( LogManager.set_log_level("WARNING") cwd = os.path.dirname(__file__) - log_file = os.path.join(cwd, "qne_bqc.log") + log_file = os.path.join(cwd, "qne_epr.log") LogManager.log_to_file(log_file) ns.set_qstate_formalism(ns.qubits.qformalism.QFormalism.DM) diff --git a/setup.cfg b/setup.cfg index 519ab7a9..8c064f04 100644 --- a/setup.cfg +++ b/setup.cfg @@ -20,9 +20,9 @@ install_requires = pydantic >=1.8.2 pydynaa >=0.3, <1.0 netsquid >=1.0.6, <2.0 - netsquid-magic >=12.1, <13.0.0 - netsquid-nv >=8.0, <9.0 - netqasm ==0.11.0a3 + netsquid-magic >=13.1, <14.0.0 + netsquid-nv >=9.2, <10.0 + netqasm ==0.11.3 [options.extras_require] tests = diff --git a/squidasm/run/stack/build.py b/squidasm/run/stack/build.py index ad21b807..2361c439 100644 --- a/squidasm/run/stack/build.py +++ b/squidasm/run/stack/build.py @@ -229,7 +229,6 @@ def build_nv_qdevice(name: str, cfg: NVQDeviceConfig) -> QuantumProcessor: mem_noise_models=mem_noise_models, phys_instructions=phys_instructions, ) - qmem.add_property("delta_w", 0.5) - qmem.add_property("tau_decay", 0.5) - qmem.add_property("cycle_time", 0.5) + qmem.add_property("delta_w", cfg.delta_w) + qmem.add_property("tau_decay", cfg.tau_decay) return qmem diff --git a/squidasm/run/stack/config.py b/squidasm/run/stack/config.py index 6e60ee0f..14607a8d 100644 --- a/squidasm/run/stack/config.py +++ b/squidasm/run/stack/config.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, List, Optional import yaml from pydantic import BaseModel @@ -67,6 +67,10 @@ class NVQDeviceConfig(BaseModel): # error of the native NV two-qubit gate ec_gate_depolar_prob: float = 0.008 + # delta_w and tau_decay + delta_w: float = 0 + tau_decay: float = 1.0 + # coherence times electron_T1: int = 1_000_000_000 electron_T2: int = 300_000_000 diff --git a/squidasm/run/stack/run.py b/squidasm/run/stack/run.py index b07d86d0..bcb18f54 100644 --- a/squidasm/run/stack/run.py +++ b/squidasm/run/stack/run.py @@ -41,6 +41,20 @@ def request_to_parameters(self, request, **fixed_parameters): return {} +class NVMagicDistributor(NVSingleClickMagicDistributor): + def get_bell_state(self, midpoint_outcome): + try: + status, label = midpoint_outcome + except ValueError: + raise ValueError("Unknown midpoint outcome {}".format(midpoint_outcome)) + if status != "success": + raise ValueError("Unknown midpoint outcome {}".format(midpoint_outcome)) + return label + + def _read_bright_state_parameter_from_nodes(self): + return {} + + def fidelity_to_prob_max_mixed(fid: float) -> float: return (1 - fid) * 4.0 / 3.0 @@ -93,9 +107,10 @@ def _setup_network(config: StackNetworkConfig) -> StackNetwork: link_cfg = link.cfg if not isinstance(link_cfg, NVLinkConfig): link_cfg = NVLinkConfig(**link.cfg) - link_dist = NVSingleClickMagicDistributor( + # link_dist = NVSingleClickMagicDistributor( + link_dist = NVMagicDistributor( nodes=[stack1.node, stack2.node], - cycle_time=42, + cycle_time=link_cfg.cycle_time, length_A=link_cfg.length_A, length_B=link_cfg.length_B, p_loss_init_A=link_cfg.p_loss_init_A, @@ -129,11 +144,15 @@ def _setup_network(config: StackNetworkConfig) -> StackNetwork: else: raise ValueError + if link.typ == "nv": + translation_unit = EmptyTranslationUnit() + else: + translation_unit = SingleClickTranslationUnit() + link_prot = MagicLinkLayerProtocolWithSignaling( nodes=[stack1.node, stack2.node], magic_distributor=link_dist, - # translation_unit=SingleClickTranslationUnit(), - translation_unit=EmptyTranslationUnit(), + translation_unit=translation_unit, ) stack1.assign_ll_protocol(link_prot) stack2.assign_ll_protocol(link_prot) diff --git a/squidasm/sim/stack/globals.py b/squidasm/sim/stack/globals.py index 750618c3..e4f934a4 100644 --- a/squidasm/sim/stack/globals.py +++ b/squidasm/sim/stack/globals.py @@ -3,7 +3,6 @@ from typing import TYPE_CHECKING, Dict, List, Optional import numpy as np -from netsquid.qubits import qubitapi from netsquid.qubits.qubit import Qubit if TYPE_CHECKING: diff --git a/squidasm/sim/stack/netstack.py b/squidasm/sim/stack/netstack.py index 604a9476..afc11a64 100644 --- a/squidasm/sim/stack/netstack.py +++ b/squidasm/sim/stack/netstack.py @@ -115,7 +115,9 @@ class EprSocket: class Netstack(ComponentProtocol): """NetSquid protocol representing the QNodeOS network stack.""" - def __init__(self, comp: NetstackComponent, qnos: Qnos) -> None: + def __init__( + self, comp: NetstackComponent, qnos: Qnos, correct_bell_states: bool = False + ) -> None: """Network stack protocol constructor. Typically created indirectly through constructing a `Qnos` instance. @@ -126,6 +128,8 @@ def __init__(self, comp: NetstackComponent, qnos: Qnos) -> None: self._comp = comp self._qnos = qnos + self._correct_bell_states = correct_bell_states + self.add_listener( "processor", PortListener(self._comp.processor_in_port, SIGNAL_PROC_NSTK_MSG), @@ -338,22 +342,23 @@ def handle_create_ck_request( self._logger.info(f"got result for pair {pair_index}: {result}") self._logger.info(f"bell state: {result.bell_state}") - # Bell state corrections. Resulting state is always Phi+ (i.e. B00). - if result.bell_state == BellIndex.B00: - pass - elif result.bell_state == BellIndex.B01: - prog = QuantumProgram() - prog.apply(INSTR_ROT_X, qubit_indices=[0], angle=PI) - yield self.qdevice.execute_program(prog) - elif result.bell_state == BellIndex.B10: - prog = QuantumProgram() - prog.apply(INSTR_ROT_Z, qubit_indices=[0], angle=PI) - yield self.qdevice.execute_program(prog) - elif result.bell_state == BellIndex.B11: - prog = QuantumProgram() - prog.apply(INSTR_ROT_X, qubit_indices=[0], angle=PI) - prog.apply(INSTR_ROT_Z, qubit_indices=[0], angle=PI) - yield self.qdevice.execute_program(prog) + if self._correct_bell_states: + # Bell state corrections. Resulting state is always Phi+ (i.e. B00). + if result.bell_state == BellIndex.B00: + pass + elif result.bell_state == BellIndex.B01: + prog = QuantumProgram() + prog.apply(INSTR_ROT_X, qubit_indices=[0], angle=PI) + yield self.qdevice.execute_program(prog) + elif result.bell_state == BellIndex.B10: + prog = QuantumProgram() + prog.apply(INSTR_ROT_Z, qubit_indices=[0], angle=PI) + yield self.qdevice.execute_program(prog) + elif result.bell_state == BellIndex.B11: + prog = QuantumProgram() + prog.apply(INSTR_ROT_X, qubit_indices=[0], angle=PI) + prog.apply(INSTR_ROT_Z, qubit_indices=[0], angle=PI) + yield self.qdevice.execute_program(prog) virt_id = app_mem.get_array_value(req.qubit_array_addr, pair_index) app_mem.map_virt_id(virt_id, phys_id) diff --git a/squidasm/sim/stack/qnos.py b/squidasm/sim/stack/qnos.py index 23150be4..515362d6 100644 --- a/squidasm/sim/stack/qnos.py +++ b/squidasm/sim/stack/qnos.py @@ -115,7 +115,12 @@ def node(self) -> Node: class Qnos(Protocol): """NetSquid protocol representing a QNodeOS instance.""" - def __init__(self, comp: QnosComponent, qdevice_type: Optional[str] = "nv") -> None: + def __init__( + self, + comp: QnosComponent, + qdevice_type: Optional[str] = "nv", + correct_bell_states: bool = False, + ) -> None: """Qnos protocol constructor. :param comp: NetSquid component representing the QNodeOS instance @@ -126,7 +131,7 @@ def __init__(self, comp: QnosComponent, qdevice_type: Optional[str] = "nv") -> N # Create internal protocols. self.handler = Handler(comp.handler_comp, self, qdevice_type) - self.netstack = Netstack(comp.netstack_comp, self) + self.netstack = Netstack(comp.netstack_comp, self, correct_bell_states) if qdevice_type == "generic": self.processor = GenericProcessor(comp.processor_comp, self) self._physical_memory = PhysicalQuantumMemory(comp.qdevice.num_positions) diff --git a/squidasm/sim/stack/stack.py b/squidasm/sim/stack/stack.py index 8a397ef3..40775421 100644 --- a/squidasm/sim/stack/stack.py +++ b/squidasm/sim/stack/stack.py @@ -108,6 +108,7 @@ def __init__( qdevice: Optional[QuantumProcessor] = None, node_id: Optional[int] = None, use_default_components: bool = True, + qnos_corrects_bell_states: bool = False, ) -> None: """NodeStack constructor. @@ -139,7 +140,7 @@ def __init__( # created and added to this NodeStack. if use_default_components: self._host = Host(self.host_comp, qdevice_type) - self._qnos = Qnos(self.qnos_comp, qdevice_type) + self._qnos = Qnos(self.qnos_comp, qdevice_type, qnos_corrects_bell_states) def assign_ll_protocol(self, prot: MagicLinkLayerProtocolWithSignaling) -> None: """Set the link layer protocol to use for entanglement generation. diff --git a/tests/stack/test_handler.py b/tests/stack/test_handler.py index ab81e0f0..047920cc 100644 --- a/tests/stack/test_handler.py +++ b/tests/stack/test_handler.py @@ -2,18 +2,17 @@ from typing import Generator, Optional, Type import netsquid as ns +import pytest from netqasm.lang.parsing import parse_text_subroutine from netsquid.components import QuantumProcessor from netsquid.qubits import ketstates, qubitapi -from netsquid_magic.link_layer import ( - MagicLinkLayerProtocolWithSignaling, - SingleClickTranslationUnit, -) +from netsquid_magic.link_layer import MagicLinkLayerProtocolWithSignaling from netsquid_nv.magic_distributor import NVSingleClickMagicDistributor from pydynaa import EventExpression from squidasm.run.stack.build import build_nv_qdevice from squidasm.run.stack.config import NVQDeviceConfig +from squidasm.run.stack.run import EmptyTranslationUnit from squidasm.sim.stack.handler import Handler from squidasm.sim.stack.qnos import Qnos from squidasm.sim.stack.stack import NodeStack @@ -38,13 +37,14 @@ def setUp(self) -> None: nodes=[self._alice.node, self._bob.node], length_A=0.001, length_B=0.001, - full_cycle=0.001, - t_cycle=10, + cycle_time=10, ) + self._link_dist.fixed_delivery_parameters[0]["alpha_A"] = 1e-3 + self._link_dist.fixed_delivery_parameters[0]["alpha_B"] = 1e-3 self._link_prot = MagicLinkLayerProtocolWithSignaling( nodes=[self._alice.node, self._bob.node], magic_distributor=self._link_dist, - translation_unit=SingleClickTranslationUnit(), + translation_unit=EmptyTranslationUnit(), ) self._alice.assign_ll_protocol(self._link_prot) @@ -66,6 +66,7 @@ def tearDown(self) -> None: if self._check_cmem: self._check_cmem(self._alice.qnos.app_memories, self._bob.qnos.app_memories) + @pytest.mark.filterwarnings("ignore::UserWarning") def test_entangle_ck(self): SUBRT_1 = """ # NETQASM 1.0 diff --git a/tests/stack/test_processor.py b/tests/stack/test_processor.py index e69ad7e9..241c56d5 100644 --- a/tests/stack/test_processor.py +++ b/tests/stack/test_processor.py @@ -2,19 +2,18 @@ from typing import Dict, Generator import netsquid as ns +import pytest from netqasm.lang.instr.flavour import NVFlavour from netqasm.lang.parsing import parse_text_subroutine from netsquid.components import QuantumProcessor from netsquid.qubits import ketstates, qubitapi -from netsquid_magic.link_layer import ( - MagicLinkLayerProtocolWithSignaling, - SingleClickTranslationUnit, -) +from netsquid_magic.link_layer import MagicLinkLayerProtocolWithSignaling from netsquid_nv.magic_distributor import NVSingleClickMagicDistributor from pydynaa import EventExpression from squidasm.run.stack.build import build_nv_qdevice from squidasm.run.stack.config import NVQDeviceConfig +from squidasm.run.stack.run import EmptyTranslationUnit from squidasm.sim.stack.common import AppMemory from squidasm.sim.stack.processor import NVProcessor from squidasm.sim.stack.qnos import Qnos @@ -44,13 +43,14 @@ def setUp(self) -> None: nodes=[self._alice.node, self._bob.node], length_A=0.001, length_B=0.001, - full_cycle=0.001, - t_cycle=10, + cycle_time=10, ) + self._link_dist.fixed_delivery_parameters[0]["alpha_A"] = 1e-3 + self._link_dist.fixed_delivery_parameters[0]["alpha_B"] = 1e-3 self._link_prot = MagicLinkLayerProtocolWithSignaling( nodes=[self._alice.node, self._bob.node], magic_distributor=self._link_dist, - translation_unit=SingleClickTranslationUnit(), + translation_unit=EmptyTranslationUnit(), ) self._alice.assign_ll_protocol(self._link_prot) @@ -68,6 +68,7 @@ def tearDown(self) -> None: if self._check_cmem: self._check_cmem(self._alice.qnos.app_memories, self._bob.qnos.app_memories) + @pytest.mark.filterwarnings("ignore::UserWarning") def test_entangle_ck(self): APP_ID = 0 diff --git a/tests/stack/test_two_nodes.py b/tests/stack/test_two_nodes.py index 95d6e044..1dea0434 100644 --- a/tests/stack/test_two_nodes.py +++ b/tests/stack/test_two_nodes.py @@ -2,6 +2,7 @@ from typing import Dict, Generator, Optional, Type import netsquid as ns +import pytest from netqasm.backend.messages import ( InitNewAppMessage, OpenEPRSocketMessage, @@ -12,15 +13,13 @@ from netqasm.lang.parsing import parse_text_subroutine from netsquid.components import QuantumProcessor from netsquid.qubits import ketstates, qubitapi -from netsquid_magic.link_layer import ( - MagicLinkLayerProtocolWithSignaling, - SingleClickTranslationUnit, -) +from netsquid_magic.link_layer import MagicLinkLayerProtocolWithSignaling from netsquid_nv.magic_distributor import NVSingleClickMagicDistributor from pydynaa import EventExpression from squidasm.run.stack.build import build_nv_qdevice from squidasm.run.stack.config import NVQDeviceConfig +from squidasm.run.stack.run import EmptyTranslationUnit from squidasm.sim.stack.common import AppMemory from squidasm.sim.stack.host import Host from squidasm.sim.stack.processor import NVProcessor @@ -34,10 +33,13 @@ def setUp(self) -> None: nv_cfg = NVQDeviceConfig.perfect_config() alice_qdevice = build_nv_qdevice("nv_qdevice_alice", cfg=nv_cfg) self._alice = NodeStack( - "alice", qdevice_type="nv", qdevice=alice_qdevice, node_id=0 + "alice", + qdevice_type="nv", + qdevice=alice_qdevice, + node_id=0, ) self._alice.host = Host(self._alice.host_comp) - self._alice.qnos = Qnos(self._alice.qnos_comp) + self._alice.qnos = Qnos(self._alice.qnos_comp, correct_bell_states=True) self._alice.qnos.processor = NVProcessor( self._alice.qnos_comp.processor_comp, self._alice.qnos ) @@ -45,9 +47,14 @@ def setUp(self) -> None: self._alice.qnos.handler.should_clear_memory = False bob_qdevice = build_nv_qdevice("nv_qdevice_bob", cfg=nv_cfg) - self._bob = NodeStack("bob", qdevice_type="nv", qdevice=bob_qdevice, node_id=1) + self._bob = NodeStack( + "bob", + qdevice_type="nv", + qdevice=bob_qdevice, + node_id=1, + ) self._bob.host = Host(self._bob.host_comp) - self._bob.qnos = Qnos(self._bob.qnos_comp) + self._bob.qnos = Qnos(self._bob.qnos_comp, correct_bell_states=True) self._bob.qnos.processor = NVProcessor( self._bob.qnos_comp.processor_comp, self._bob.qnos ) @@ -63,13 +70,14 @@ def setUp(self) -> None: nodes=[self._alice.node, self._bob.node], length_A=0.001, length_B=0.001, - full_cycle=0.001, - t_cycle=10, + cycle_time=10, ) + self._link_dist.fixed_delivery_parameters[0]["alpha_A"] = 1e-3 + self._link_dist.fixed_delivery_parameters[0]["alpha_B"] = 1e-3 self._link_prot = MagicLinkLayerProtocolWithSignaling( nodes=[self._alice.node, self._bob.node], magic_distributor=self._link_dist, - translation_unit=SingleClickTranslationUnit(), + translation_unit=EmptyTranslationUnit(), ) self._alice.assign_ll_protocol(self._link_prot) @@ -91,6 +99,7 @@ def tearDown(self) -> None: if self._check_cmem: self._check_cmem(self._alice.qnos.app_memories, self._bob.qnos.app_memories) + @pytest.mark.filterwarnings("ignore::UserWarning") def test_entangle_ck(self): SUBRT_1 = """ # NETQASM 1.0 @@ -169,6 +178,7 @@ def check_qmem( self._check_qmem = check_qmem self._check_cmem = None + @pytest.mark.filterwarnings("ignore::UserWarning") def test_entangle_ck_with_measure(self): SUBRT_1 = """ # NETQASM 1.0 @@ -298,6 +308,7 @@ def check_cmem( self._check_qmem = None self._check_cmem = check_cmem + @pytest.mark.filterwarnings("ignore::UserWarning") def test_entangle_md(self): SUBRT_1 = """ # NETQASM 1.0 @@ -389,6 +400,7 @@ def check_cmem( self._check_qmem = None self._check_cmem = check_cmem + @pytest.mark.filterwarnings("ignore::UserWarning") def test_entangle_md_with_wait(self): SUBRT_1 = """ # NETQASM 1.0 @@ -490,6 +502,7 @@ def check_cmem( self._check_qmem = None self._check_cmem = check_cmem + @pytest.mark.filterwarnings("ignore::UserWarning") def test_entangle_ck_with_post_routine(self): SUBRT_1 = """ # NETQASM 1.0 From 3210601ac043b5e2ab64fc5b92faa2012dc29e42 Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Tue, 2 Aug 2022 18:05:21 +0200 Subject: [PATCH 06/12] Update magic/nv requirements --- setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 8c064f04..a212aa9b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -20,8 +20,8 @@ install_requires = pydantic >=1.8.2 pydynaa >=0.3, <1.0 netsquid >=1.0.6, <2.0 - netsquid-magic >=13.1, <14.0.0 - netsquid-nv >=9.2, <10.0 + netsquid-magic >=13.1.1, <14.0.0 + netsquid-nv >=9.2.1, <10.0 netqasm ==0.11.3 [options.extras_require] From cba844607ce900e0ccd63095de00e34c422a3575 Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Wed, 10 Aug 2022 16:28:54 +0200 Subject: [PATCH 07/12] Add teleportation application --- examples/stack/qne_teleport/README.md | 25 +++ examples/stack/qne_teleport/config_nv.yaml | 83 ++++++++ .../stack/qne_teleport/example_teleport_nv.py | 184 ++++++++++++++++++ squidasm/sim/stack/globals.py | 3 +- 4 files changed, 294 insertions(+), 1 deletion(-) create mode 100644 examples/stack/qne_teleport/README.md create mode 100644 examples/stack/qne_teleport/config_nv.yaml create mode 100644 examples/stack/qne_teleport/example_teleport_nv.py diff --git a/examples/stack/qne_teleport/README.md b/examples/stack/qne_teleport/README.md new file mode 100644 index 00000000..75b50a2f --- /dev/null +++ b/examples/stack/qne_teleport/README.md @@ -0,0 +1,25 @@ +## Prerequisites +`squidasm` relies on [NetSquid](https://netsquid.org/). +To install NetSquid, an account is needed. See the NetSquid website how this is done. + +### Installation +Clone the squidasm repostitory and checkout the `qne-hardware` branch: +``` +git clone https://github.com/QuTech-Delft/squidasm +cd squidasm +git checkout qne-hardware +``` + +Make sure you have two environment variables set with your NetSquid username and password. +These are needed for the installation of squidasm. +``` +export NETSQUIDPYPI_USER= +export NETSQUIDPYPI_PWD= +``` + +Install `squidasm`: +``` +make install-tests +``` + +After installation, the simulations can be run. diff --git a/examples/stack/qne_teleport/config_nv.yaml b/examples/stack/qne_teleport/config_nv.yaml new file mode 100644 index 00000000..c49aebae --- /dev/null +++ b/examples/stack/qne_teleport/config_nv.yaml @@ -0,0 +1,83 @@ +qdevice_cfg: &qdevice_cfg + # number of qubits per NV + num_qubits: 2 + + # initialization error of the electron spin + electron_init_depolar_prob: 0.05 + + # error of the single-qubit gate + electron_single_qubit_depolar_prob: 0.0 + + # measurement errors (prob_error_X is the probability that outcome X is flipped to 1 - X) + prob_error_0: 0.05 + prob_error_1: 0.005 + + # initialization error of the carbon nuclear spin + carbon_init_depolar_prob: 0.05 + + # error of the Z-rotation gate on the carbon nuclear spin + carbon_z_rot_depolar_prob: 0.001 + + # error of the native NV two-qubit gate + ec_gate_depolar_prob: 0.008 + + # delta_w and tau_decay + delta_w: 0 + tau_decay: 1.0 + + # coherence times + electron_T1: 1_000_000_000 + electron_T2: 300_000_000 + carbon_T1: 150_000_000_000 + carbon_T2: 1_500_000_000 + + # gate execution times + carbon_init: 310_000 + carbon_rot_x: 500_000 + carbon_rot_y: 500_000 + carbon_rot_z: 500_000 + electron_init: 2_000 + electron_rot_x: 5_000 + electron_rot_y: 5_000 + electron_rot_z: 5_000 + ec_controlled_dir_x: 500_000 + ec_controlled_dir_y: 500_000 + measure: 3_700 + +stacks: + - name: sender + qdevice_typ: nv + qdevice_cfg: + <<: *qdevice_cfg + - name: receiver + qdevice_typ: nv + qdevice_cfg: + <<: *qdevice_cfg + +link_cfg: &link_cfg + cycle_time: 5_000 + alpha_A: 0.1 + alpha_B: 0.1 + length_A: 0.005 + length_B: 0.005 + p_loss_init_A: null + p_loss_length_A: null + speed_of_light_A: null + p_loss_init_B: null + p_loss_length_B: null + speed_of_light_B: null + dark_count_probability: null + detector_efficiency: null + visibility: null + num_resolving: null + std_electron_electron_phase_drift: null + coherent_phase: null + p_double_exc: null + p_fail_class_corr: null + +links: + - stack1: sender + stack2: receiver + typ: nv + cfg: + <<: *link_cfg \ No newline at end of file diff --git a/examples/stack/qne_teleport/example_teleport_nv.py b/examples/stack/qne_teleport/example_teleport_nv.py new file mode 100644 index 00000000..5ca0b33a --- /dev/null +++ b/examples/stack/qne_teleport/example_teleport_nv.py @@ -0,0 +1,184 @@ +from __future__ import annotations + +import math +import os +from typing import Any, Dict, Generator, List + +import netsquid as ns +import numpy as np +from netqasm.lang.ir import BreakpointAction +from netqasm.sdk.qubit import Qubit +from netqasm.sdk.toolbox import set_qubit_state +from netsquid.qubits import qubitapi + +from pydynaa import EventExpression +from squidasm.run.stack.config import StackNetworkConfig +from squidasm.run.stack.run import run +from squidasm.sim.stack.common import LogManager +from squidasm.sim.stack.csocket import ClassicalSocket +from squidasm.sim.stack.globals import GlobalSimData +from squidasm.sim.stack.program import Program, ProgramContext, ProgramMeta + +PI = math.pi +PI_OVER_2 = math.pi / 2 + + +class SenderProgram(Program): + PEER = "receiver" + + def __init__( + self, + theta: float, + phi: float, + ): + self._theta = theta + self._phi = phi + + @property + def meta(self) -> ProgramMeta: + return ProgramMeta( + name="sender_program", + parameters={ + "theta": self._theta, + "phi": self._phi, + }, + csockets=[self.PEER], + epr_sockets=[self.PEER], + max_qubits=2, + ) + + def run( + self, context: ProgramContext + ) -> Generator[EventExpression, None, Dict[str, Any]]: + conn = context.connection + epr_socket = context.epr_sockets[self.PEER] + csocket: ClassicalSocket = context.csockets[self.PEER] + + e = epr_socket.create_keep()[0] + + q = Qubit(conn) + set_qubit_state(q, self._phi, self._theta) + + q.cnot(e) + q.H() + m1 = q.measure() + m2 = e.measure() + + yield from conn.flush() + + m1, m2 = int(m1), int(m2) + + csocket.send_int(m1) + csocket.send_int(m2) + + return {"m1": m1, "m2": m2} + + +class ReceiverProgram(Program): + PEER = "sender" + + @property + def meta(self) -> ProgramMeta: + return ProgramMeta( + name="receiver_program", + parameters={}, + csockets=[self.PEER], + epr_sockets=[self.PEER], + max_qubits=1, + ) + + def run( + self, context: ProgramContext + ) -> Generator[EventExpression, None, Dict[str, Any]]: + conn = context.connection + epr_socket = context.epr_sockets[self.PEER] + csocket: ClassicalSocket = context.csockets[self.PEER] + + e = epr_socket.recv_keep()[0] + yield from conn.flush() + + m1 = yield from csocket.recv_int() + m2 = yield from csocket.recv_int() + + if m2 == 1: + e.X() + if m1 == 1: + e.Z() + + # Store the quantum state so we can later inspect it. + conn.insert_breakpoint(BreakpointAction.DUMP_LOCAL_STATE) + + # Measure so quantum memory is available again for next round. + e.measure() + + yield from conn.flush() + + # Return the state that was teleported. + breakpoint = GlobalSimData.get_last_breakpoint_state() + state = breakpoint["receiver"][0] + return {"state": state} + + +def do_teleportation( + cfg: StackNetworkConfig, + num_times: int = 1, + phi: float = 0.0, + theta: float = 0.0, + verbose: bool = False, +) -> None: + sender_program = SenderProgram(phi=phi, theta=theta) + receiver_program = ReceiverProgram() + + sender_results, receiver_results = run( + cfg, + {"sender": sender_program, "receiver": receiver_program}, + num_times=num_times, + ) + + fidelities: List[float] = [] + for i in range(num_times): + m1 = sender_results[i]["m1"] + m2 = sender_results[i]["m2"] + state = receiver_results[i]["state"] + if verbose: + print( + f"\nresult {i}:\nm1 = {m1}, m2 = {m2}, state = \n{np.around(state, 4)}" + ) + + teleported = qubitapi.create_qubits(1)[0] + qubitapi.assign_qstate(teleported, state) + + rotate_theta = ns.create_rotation_op(angle=theta, rotation_axis=(0, 1, 0)) + rotate_phi = ns.create_rotation_op(angle=phi, rotation_axis=(0, 0, 1)) + + expected = qubitapi.create_qubits(1)[0] + qubitapi.operate(expected, rotate_phi) + qubitapi.operate(expected, rotate_theta) + + fid = qubitapi.fidelity(teleported, qubitapi.reduced_dm(expected), squared=True) + if verbose: + print(f"fidelity = {fid}") + fidelities.append(fid) + + if verbose: + print(f"\nall fidelities: {fidelities}") + print(f"average fidelity: {round(sum(fidelities) / len(fidelities), 3)}") + + +if __name__ == "__main__": + num_times = 20 + LogManager.set_log_level("WARNING") + + cwd = os.path.dirname(__file__) + log_file = os.path.join(cwd, "qne_teleport.log") + + LogManager.log_to_file(log_file) + ns.set_qstate_formalism(ns.qubits.qformalism.QFormalism.DM) + + cfg_file = os.path.join(cwd, "config_nv.yaml") + cfg = StackNetworkConfig.from_file(cfg_file) + + do_teleportation(cfg, num_times, phi=0, theta=0) + do_teleportation(cfg, num_times, phi=PI, theta=0) + do_teleportation(cfg, num_times, phi=0, theta=PI_OVER_2) + # ... diff --git a/squidasm/sim/stack/globals.py b/squidasm/sim/stack/globals.py index e4f934a4..c56297db 100644 --- a/squidasm/sim/stack/globals.py +++ b/squidasm/sim/stack/globals.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING, Dict, List, Optional import numpy as np +from netsquid.qubits import qubitapi from netsquid.qubits.qubit import Qubit if TYPE_CHECKING: @@ -39,7 +40,7 @@ def get_quantum_state(cls, save: bool = False) -> T_QubitData: [q] = qdevice.peek(i, skip_noise=True) qubits[name][i] = q if save: - states[name][i] = q.qstate.qrepr.reduced_dm() + states[name][i] = qubitapi.reduced_dm(q) if save: cls._BREAKPOINT_STATES.append(states) return qubits From f9cecaac2082b6cb5b49b8683f15841e13b9042f Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Wed, 10 Aug 2022 16:41:41 +0200 Subject: [PATCH 08/12] Update netqasm requirement --- examples/stack/qne_teleport/example_teleport_nv.py | 5 +++++ setup.cfg | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/stack/qne_teleport/example_teleport_nv.py b/examples/stack/qne_teleport/example_teleport_nv.py index 5ca0b33a..6c9a3f36 100644 --- a/examples/stack/qne_teleport/example_teleport_nv.py +++ b/examples/stack/qne_teleport/example_teleport_nv.py @@ -178,6 +178,11 @@ def do_teleportation( cfg_file = os.path.join(cwd, "config_nv.yaml") cfg = StackNetworkConfig.from_file(cfg_file) + # State to be teleported is defined by phi and theta. + # Starting from |0>, the state is rotated around the Y-axis by phi, + # and rotated around the Z-axis by theta. + # E.g. theta=pi/2 and phi=pi results in the |-> (negative X) state. + do_teleportation(cfg, num_times, phi=0, theta=0) do_teleportation(cfg, num_times, phi=PI, theta=0) do_teleportation(cfg, num_times, phi=0, theta=PI_OVER_2) diff --git a/setup.cfg b/setup.cfg index a212aa9b..62b08b82 100644 --- a/setup.cfg +++ b/setup.cfg @@ -22,7 +22,7 @@ install_requires = netsquid >=1.0.6, <2.0 netsquid-magic >=13.1.1, <14.0.0 netsquid-nv >=9.2.1, <10.0 - netqasm ==0.11.3 + netqasm ==0.11.4 [options.extras_require] tests = From 98e43bfbb59b29bda1957f32b127ea010998406d Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Wed, 10 Aug 2022 16:54:16 +0200 Subject: [PATCH 09/12] Remove redundant example --- examples/stack/qne_bqc/example_epr.py | 190 -------------------------- 1 file changed, 190 deletions(-) delete mode 100644 examples/stack/qne_bqc/example_epr.py diff --git a/examples/stack/qne_bqc/example_epr.py b/examples/stack/qne_bqc/example_epr.py deleted file mode 100644 index 8c7a8947..00000000 --- a/examples/stack/qne_bqc/example_epr.py +++ /dev/null @@ -1,190 +0,0 @@ -from __future__ import annotations - -import math -import os -from typing import Any, Dict, Generator - -import netsquid as ns -import numpy as np -from netqasm.lang.ir import BreakpointAction, BreakpointRole -from netsquid.qubits import ketstates, qubitapi - -from pydynaa import EventExpression -from squidasm.run.stack.config import ( - LinkConfig, - NVLinkConfig, - NVQDeviceConfig, - StackConfig, - StackNetworkConfig, -) -from squidasm.run.stack.run import run -from squidasm.sim.stack.common import LogManager -from squidasm.sim.stack.globals import GlobalSimData -from squidasm.sim.stack.program import Program, ProgramContext, ProgramMeta - - -class ClientProgram(Program): - PEER = "server" - - def __init__( - self, - alpha: float, - beta: float, - trap: bool, - dummy: int, - theta1: float, - theta2: float, - r1: int, - r2: int, - ): - self._alpha = alpha - self._beta = beta - self._trap = trap - self._dummy = dummy - self._theta1 = theta1 - self._theta2 = theta2 - self._r1 = r1 - self._r2 = r2 - - @property - def meta(self) -> ProgramMeta: - return ProgramMeta( - name="client_program", - parameters={ - "alpha": self._alpha, - "beta": self._beta, - "trap": self._trap, - "dummy": self._dummy, - "theta1": self._theta1, - "theta2": self._theta2, - "r1": self._r1, - "r2": self._r2, - }, - csockets=[self.PEER], - epr_sockets=[self.PEER], - max_qubits=2, - ) - - def run( - self, context: ProgramContext - ) -> Generator[EventExpression, None, Dict[str, Any]]: - conn = context.connection - epr_socket = context.epr_sockets[self.PEER] - - epr = epr_socket.create_keep(1)[0] - conn.insert_breakpoint( - BreakpointAction.DUMP_GLOBAL_STATE, role=BreakpointRole.CREATE - ) - m = epr.measure() - yield from conn.flush() - - breakpoint = GlobalSimData.get_last_breakpoint_state() - epr_state = breakpoint["client"][0] - for i in range(4): - for j in range(4): - if abs(epr_state[i][j] < 1e-5): - epr_state[i][j] = 0 - print("\n") - print(np.around(epr_state, 4)) - q0, q1 = qubitapi.create_qubits(2) - qubitapi.assign_qstate([q0, q1], epr_state) - fid = qubitapi.fidelity([q0, q1], ketstates.b00, squared=True) - print(f"fidelity = {fid}") - - return {"m": int(m)} - - -class ServerProgram(Program): - PEER = "client" - - @property - def meta(self) -> ProgramMeta: - return ProgramMeta( - name="server_program", - parameters={}, - csockets=[self.PEER], - epr_sockets=[self.PEER], - max_qubits=2, - ) - - def run( - self, context: ProgramContext - ) -> Generator[EventExpression, None, Dict[str, Any]]: - conn = context.connection - epr_socket = context.epr_sockets[self.PEER] - - epr = epr_socket.recv_keep(1)[0] - conn.insert_breakpoint( - BreakpointAction.DUMP_GLOBAL_STATE, role=BreakpointRole.RECEIVE - ) - m = epr.measure() - yield from conn.flush() - - return {"m": int(m)} - - -PI = math.pi -PI_OVER_2 = math.pi / 2 - - -def computation_round( - cfg: StackNetworkConfig, - num_times: int = 1, - alpha: float = 0.0, - beta: float = 0.0, - theta1: float = 0.0, - theta2: float = 0.0, -) -> None: - client_program = ClientProgram( - alpha=alpha, - beta=beta, - trap=False, - dummy=-1, - theta1=theta1, - theta2=theta2, - r1=0, - r2=0, - ) - server_program = ServerProgram() - - client_results, server_results = run( - cfg, {"client": client_program, "server": server_program}, num_times=num_times - ) - - client = [r["m"] for r in client_results] - server = [r["m"] for r in server_results] - - print("".join(str(c) for c in client)) - print("".join(str(s) for s in server)) - - -if __name__ == "__main__": - num_times = 1 - LogManager.set_log_level("WARNING") - - cwd = os.path.dirname(__file__) - log_file = os.path.join(cwd, "qne_epr.log") - - LogManager.log_to_file(log_file) - ns.set_qstate_formalism(ns.qubits.qformalism.QFormalism.DM) - - client_stack = StackConfig( - name="client", - qdevice_typ="nv", - qdevice_cfg=NVQDeviceConfig.perfect_config(), - ) - server_stack = StackConfig( - name="server", - qdevice_typ="nv", - qdevice_cfg=NVQDeviceConfig.perfect_config(), - ) - link = LinkConfig( - # stack1="client", stack2="server", typ="nv", cfg=NVLinkConfig.perfect_config() - stack1="client", - stack2="server", - typ="nv", - cfg=NVLinkConfig.perfect_config(), - ) - cfg = StackNetworkConfig(stacks=[client_stack, server_stack], links=[link]) - - computation_round(cfg, num_times, alpha=PI_OVER_2, beta=PI_OVER_2) From 42dfd0a8bdace53ff497858fbf113f4e8b570e50 Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Thu, 18 Aug 2022 12:30:48 +0200 Subject: [PATCH 10/12] Add classical latency --- squidasm/run/stack/config.py | 13 ++++++- squidasm/run/stack/run.py | 23 +++++++++--- squidasm/sim/stack/common.py | 9 +++++ squidasm/sim/stack/handler.py | 28 +++++--------- squidasm/sim/stack/host.py | 28 +++++--------- squidasm/sim/stack/netstack.py | 28 +++++--------- squidasm/sim/stack/processor.py | 28 +++++--------- squidasm/sim/stack/qnos.py | 43 ++++++--------------- squidasm/sim/stack/stack.py | 66 ++++++++++++++++++++------------- 9 files changed, 131 insertions(+), 135 deletions(-) diff --git a/squidasm/run/stack/config.py b/squidasm/run/stack/config.py index 14607a8d..ebb41db8 100644 --- a/squidasm/run/stack/config.py +++ b/squidasm/run/stack/config.py @@ -114,6 +114,7 @@ class StackConfig(BaseModel): name: str qdevice_typ: str qdevice_cfg: Any + host_qnos_latency: float = 0.0 @classmethod def from_file(cls, path: str) -> StackConfig: @@ -125,6 +126,7 @@ def perfect_generic_config(cls, name: str) -> StackConfig: name=name, qdevice_typ="generic", qdevice_cfg=GenericQDeviceConfig.perfect_config(), + host_qnos_latency=0.0, ) @@ -199,6 +201,8 @@ class LinkConfig(BaseModel): stack2: str typ: str cfg: Any + host_host_latency: float = 0.0 + qnos_qnos_latency: float = 0.0 @classmethod def from_file(cls, path: str) -> LinkConfig: @@ -206,7 +210,14 @@ def from_file(cls, path: str) -> LinkConfig: @classmethod def perfect_config(cls, stack1: str, stack2: str) -> LinkConfig: - return LinkConfig(stack1=stack1, stack2=stack2, typ="perfect", cfg=None) + return LinkConfig( + stack1=stack1, + stack2=stack2, + typ="perfect", + cfg=None, + host_host_latency=0.0, + qnos_qnos_latency=0.0, + ) class StackNetworkConfig(BaseModel): diff --git a/squidasm/run/stack/run.py b/squidasm/run/stack/run.py index bcb18f54..72c7c121 100644 --- a/squidasm/run/stack/run.py +++ b/squidasm/run/stack/run.py @@ -72,22 +72,35 @@ def _setup_network(config: StackNetworkConfig) -> StackNetwork: if not isinstance(qdevice_cfg, NVQDeviceConfig): qdevice_cfg = NVQDeviceConfig(**cfg.qdevice_cfg) qdevice = build_nv_qdevice(f"qdevice_{cfg.name}", cfg=qdevice_cfg) - stack = NodeStack(cfg.name, qdevice_type="nv", qdevice=qdevice) + stack = NodeStack( + cfg.name, + qdevice_type="nv", + qdevice=qdevice, + host_qnos_latency=cfg.host_qnos_latency, + ) elif cfg.qdevice_typ == "generic": qdevice_cfg = cfg.qdevice_cfg if not isinstance(qdevice_cfg, GenericQDeviceConfig): qdevice_cfg = GenericQDeviceConfig(**cfg.qdevice_cfg) qdevice = build_generic_qdevice(f"qdevice_{cfg.name}", cfg=qdevice_cfg) - stack = NodeStack(cfg.name, qdevice_type="generic", qdevice=qdevice) + stack = NodeStack( + cfg.name, + qdevice_type="generic", + qdevice=qdevice, + host_qnos_latency=cfg.host_qnos_latency, + ) NetSquidContext.add_node(stack.node.ID, cfg.name) stacks[cfg.name] = stack - for (_, s1), (_, s2) in itertools.combinations(stacks.items(), 2): - s1.connect_to(s2) - for link in config.links: stack1 = stacks[link.stack1] stack2 = stacks[link.stack2] + stack1.connect_to( + stack2, + host_host_delay=link.host_host_latency, + qnos_qnos_delay=link.qnos_qnos_latency, + ) + if link.typ == "perfect": link_dist = PerfectStateMagicDistributor( nodes=[stack1.node, stack2.node], state_delay=1000.0 diff --git a/squidasm/sim/stack/common.py b/squidasm/sim/stack/common.py index 8fb2aab2..10693167 100644 --- a/squidasm/sim/stack/common.py +++ b/squidasm/sim/stack/common.py @@ -6,7 +6,9 @@ from netqasm.lang import operand from netqasm.lang.encoding import RegisterName from netqasm.sdk.shared_memory import Arrays, RegisterGroup, setup_registers +from netsquid.components.channel import Channel from netsquid.components.component import Component, Port +from netsquid.nodes.connections import DirectConnection from netsquid.protocols import Protocol from pydynaa import EventExpression @@ -391,3 +393,10 @@ class NVPhysicalQuantumMemory(PhysicalQuantumMemory): def __init__(self, qubit_count: int) -> None: super().__init__(qubit_count) self._comm_qubit_ids: Set[int] = {0} + + +class DelayedClassicalConnection(DirectConnection): + def __init__(self, name: str, delay: float) -> None: + chan1 = Channel(f"chan_1_{name}", delay=delay) + chan2 = Channel(f"chan_2_{name}", delay=delay) + super().__init__(name, channel_AtoB=chan1, channel_BtoA=chan2) diff --git a/squidasm/sim/stack/handler.py b/squidasm/sim/stack/handler.py index c8b1beea..52bf8e71 100644 --- a/squidasm/sim/stack/handler.py +++ b/squidasm/sim/stack/handler.py @@ -53,24 +53,16 @@ class HandlerComponent(Component): def __init__(self, node: Node) -> None: super().__init__(f"{node.name}_handler") self._node = node - self.add_ports(["proc_out", "proc_in"]) - self.add_ports(["host_out", "host_in"]) + self.add_ports(["proc"]) + self.add_ports(["host"]) @property - def processor_in_port(self) -> Port: - return self.ports["proc_in"] + def processor_port(self) -> Port: + return self.ports["proc"] @property - def processor_out_port(self) -> Port: - return self.ports["proc_out"] - - @property - def host_in_port(self) -> Port: - return self.ports["host_in"] - - @property - def host_out_port(self) -> Port: - return self.ports["host_out"] + def host_port(self) -> Port: + return self.ports["host"] @property def node(self) -> Node: @@ -125,11 +117,11 @@ def __init__( self.add_listener( "host", - PortListener(self._comp.ports["host_in"], SIGNAL_HOST_HAND_MSG), + PortListener(self._comp.ports["host"], SIGNAL_HOST_HAND_MSG), ) self.add_listener( "processor", - PortListener(self._comp.ports["proc_in"], SIGNAL_PROC_HAND_MSG), + PortListener(self._comp.ports["proc"], SIGNAL_PROC_HAND_MSG), ) # Number of applications that were handled so far. Used as a unique ID for @@ -176,13 +168,13 @@ def flavour(self, flavour: Optional[flavour.Flavour]) -> None: self._flavour = flavour def _send_host_msg(self, msg: Any) -> None: - self._comp.host_out_port.tx_output(msg) + self._comp.host_port.tx_output(msg) def _receive_host_msg(self) -> Generator[EventExpression, None, str]: return (yield from self._receive_msg("host", SIGNAL_HOST_HAND_MSG)) def _send_processor_msg(self, msg: str) -> None: - self._comp.processor_out_port.tx_output(msg) + self._comp.processor_port.tx_output(msg) def _receive_processor_msg(self) -> Generator[EventExpression, None, str]: return (yield from self._receive_msg("processor", SIGNAL_PROC_HAND_MSG)) diff --git a/squidasm/sim/stack/host.py b/squidasm/sim/stack/host.py index 4e22c305..ee6167ef 100644 --- a/squidasm/sim/stack/host.py +++ b/squidasm/sim/stack/host.py @@ -32,24 +32,16 @@ class HostComponent(Component): def __init__(self, node: Node) -> None: super().__init__(f"{node.name}_host") - self.add_ports(["qnos_in", "qnos_out"]) - self.add_ports(["peer_in", "peer_out"]) + self.add_ports(["qnos"]) + self.add_ports(["peer"]) @property - def qnos_in_port(self) -> Port: - return self.ports["qnos_in"] + def qnos_port(self) -> Port: + return self.ports["qnos"] @property - def qnos_out_port(self) -> Port: - return self.ports["qnos_out"] - - @property - def peer_in_port(self) -> Port: - return self.ports["peer_in"] - - @property - def peer_out_port(self) -> Port: - return self.ports["peer_out"] + def peer_port(self) -> Port: + return self.ports["peer"] class Host(ComponentProtocol): @@ -66,11 +58,11 @@ def __init__(self, comp: HostComponent, qdevice_type: Optional[str] = "nv") -> N self.add_listener( "qnos", - PortListener(self._comp.ports["qnos_in"], SIGNAL_HAND_HOST_MSG), + PortListener(self._comp.ports["qnos"], SIGNAL_HAND_HOST_MSG), ) self.add_listener( "peer", - PortListener(self._comp.ports["peer_in"], SIGNAL_HOST_HOST_MSG), + PortListener(self._comp.ports["peer"], SIGNAL_HOST_HOST_MSG), ) if qdevice_type == "nv": @@ -100,13 +92,13 @@ def compiler(self, typ: Optional[Type[SubroutineTranspiler]]) -> None: self._compiler = typ def send_qnos_msg(self, msg: bytes) -> None: - self._comp.qnos_out_port.tx_output(msg) + self._comp.qnos_port.tx_output(msg) def receive_qnos_msg(self) -> Generator[EventExpression, None, str]: return (yield from self._receive_msg("qnos", SIGNAL_HAND_HOST_MSG)) def send_peer_msg(self, msg: str) -> None: - self._comp.peer_out_port.tx_output(msg) + self._comp.peer_port.tx_output(msg) def receive_peer_msg(self) -> Generator[EventExpression, None, str]: return (yield from self._receive_msg("peer", SIGNAL_HOST_HOST_MSG)) diff --git a/squidasm/sim/stack/netstack.py b/squidasm/sim/stack/netstack.py index afc11a64..54e7f857 100644 --- a/squidasm/sim/stack/netstack.py +++ b/squidasm/sim/stack/netstack.py @@ -76,24 +76,16 @@ class NetstackComponent(Component): def __init__(self, node: Node) -> None: super().__init__(f"{node.name}_netstack") self._node = node - self.add_ports(["proc_out", "proc_in"]) - self.add_ports(["peer_out", "peer_in"]) + self.add_ports(["proc"]) + self.add_ports(["peer"]) @property - def processor_in_port(self) -> Port: - return self.ports["proc_in"] + def processor_port(self) -> Port: + return self.ports["proc"] @property - def processor_out_port(self) -> Port: - return self.ports["proc_out"] - - @property - def peer_in_port(self) -> Port: - return self.ports["peer_in"] - - @property - def peer_out_port(self) -> Port: - return self.ports["peer_out"] + def peer_port(self) -> Port: + return self.ports["peer"] @property def node(self) -> Node: @@ -132,11 +124,11 @@ def __init__( self.add_listener( "processor", - PortListener(self._comp.processor_in_port, SIGNAL_PROC_NSTK_MSG), + PortListener(self._comp.processor_port, SIGNAL_PROC_NSTK_MSG), ) self.add_listener( "peer", - PortListener(self._comp.peer_in_port, SIGNAL_PEER_NSTK_MSG), + PortListener(self._comp.peer_port, SIGNAL_PEER_NSTK_MSG), ) self._egp: Optional[EgpProtocol] = None @@ -163,7 +155,7 @@ def open_epr_socket(self, app_id: int, socket_id: int, remote_node_id: int) -> N def _send_processor_msg(self, msg: str) -> None: """Send a message to the processor.""" - self._comp.processor_out_port.tx_output(msg) + self._comp.processor_port.tx_output(msg) def _receive_processor_msg(self) -> Generator[EventExpression, None, str]: """Receive a message from the processor. Block until there is at least one @@ -174,7 +166,7 @@ def _send_peer_msg(self, msg: str) -> None: """Send a message to the network stack of the other node. NOTE: for now we assume there is only one other node, which is 'the' peer.""" - self._comp.peer_out_port.tx_output(msg) + self._comp.peer_port.tx_output(msg) def _receive_peer_msg(self) -> Generator[EventExpression, None, str]: """Receive a message from the network stack of the other node. Block until diff --git a/squidasm/sim/stack/processor.py b/squidasm/sim/stack/processor.py index 0e912eea..506a4e01 100644 --- a/squidasm/sim/stack/processor.py +++ b/squidasm/sim/stack/processor.py @@ -72,24 +72,16 @@ class ProcessorComponent(Component): def __init__(self, node: Node) -> None: super().__init__(f"{node.name}_processor") self._node = node - self.add_ports(["nstk_out", "nstk_in"]) - self.add_ports(["hand_out", "hand_in"]) + self.add_ports(["nstk"]) + self.add_ports(["hand"]) @property - def netstack_in_port(self) -> Port: - return self.ports["nstk_in"] + def netstack_port(self) -> Port: + return self.ports["nstk"] @property - def netstack_out_port(self) -> Port: - return self.ports["nstk_out"] - - @property - def handler_in_port(self) -> Port: - return self.ports["hand_in"] - - @property - def handler_out_port(self) -> Port: - return self.ports["hand_out"] + def handler_port(self) -> Port: + return self.ports["hand"] @property def qdevice(self) -> QuantumProcessor: @@ -116,11 +108,11 @@ def __init__(self, comp: ProcessorComponent, qnos: Qnos) -> None: self.add_listener( "handler", - PortListener(self._comp.ports["hand_in"], SIGNAL_HAND_PROC_MSG), + PortListener(self._comp.ports["hand"], SIGNAL_HAND_PROC_MSG), ) self.add_listener( "netstack", - PortListener(self._comp.ports["nstk_in"], SIGNAL_NSTK_PROC_MSG), + PortListener(self._comp.ports["nstk"], SIGNAL_NSTK_PROC_MSG), ) self.add_signal(SIGNAL_MEMORY_FREED) @@ -141,13 +133,13 @@ def qdevice(self) -> QuantumProcessor: return self._comp.qdevice def _send_handler_msg(self, msg: str) -> None: - self._comp.handler_out_port.tx_output(msg) + self._comp.handler_port.tx_output(msg) def _receive_handler_msg(self) -> Generator[EventExpression, None, str]: return (yield from self._receive_msg("handler", SIGNAL_HAND_PROC_MSG)) def _send_netstack_msg(self, msg: str) -> None: - self._comp.netstack_out_port.tx_output(msg) + self._comp.netstack_port.tx_output(msg) def _receive_netstack_msg(self) -> Generator[EventExpression, None, str]: return (yield from self._receive_msg("netstack", SIGNAL_NSTK_PROC_MSG)) diff --git a/squidasm/sim/stack/qnos.py b/squidasm/sim/stack/qnos.py index 515362d6..c136f449 100644 --- a/squidasm/sim/stack/qnos.py +++ b/squidasm/sim/stack/qnos.py @@ -41,10 +41,10 @@ def __init__(self, node: Node) -> None: self._node = node # Ports for communicating with Host - self.add_ports(["host_out", "host_in"]) + self.add_ports(["host"]) # Ports for communicating with other nodes - self.add_ports(["peer_out", "peer_in"]) + self.add_ports(["peer"]) comp_handler = HandlerComponent(node) self.add_subcomponent(comp_handler, "handler") @@ -55,25 +55,14 @@ def __init__(self, node: Node) -> None: comp_netstack = NetstackComponent(node) self.add_subcomponent(comp_netstack, "netstack") - self.netstack_comp.ports["peer_out"].forward_output(self.peer_out_port) - self.peer_in_port.forward_input(self.netstack_comp.ports["peer_in"]) + self.netstack_comp.peer_port.forward_output(self.peer_port) + self.peer_port.forward_input(self.netstack_comp.peer_port) - self.handler_comp.ports["host_out"].forward_output(self.host_out_port) - self.host_in_port.forward_input(self.handler_comp.ports["host_in"]) + self.handler_comp.host_port.forward_output(self.host_port) + self.host_port.forward_input(self.handler_comp.host_port) - self.handler_comp.processor_out_port.connect( - self.processor_comp.handler_in_port - ) - self.handler_comp.processor_in_port.connect( - self.processor_comp.handler_out_port - ) - - self.processor_comp.netstack_out_port.connect( - self.netstack_comp.processor_in_port - ) - self.processor_comp.netstack_in_port.connect( - self.netstack_comp.processor_out_port - ) + self.handler_comp.processor_port.connect(self.processor_comp.handler_port) + self.processor_comp.netstack_port.connect(self.netstack_comp.processor_port) @property def handler_comp(self) -> HandlerComponent: @@ -92,20 +81,12 @@ def qdevice(self) -> QuantumProcessor: return self.node.qmemory @property - def host_in_port(self) -> Port: - return self.ports["host_in"] - - @property - def host_out_port(self) -> Port: - return self.ports["host_out"] - - @property - def peer_in_port(self) -> Port: - return self.ports["peer_in"] + def host_port(self) -> Port: + return self.ports["host"] @property - def peer_out_port(self) -> Port: - return self.ports["peer_out"] + def peer_port(self) -> Port: + return self.ports["peer"] @property def node(self) -> Node: diff --git a/squidasm/sim/stack/stack.py b/squidasm/sim/stack/stack.py index 40775421..ee1934c3 100644 --- a/squidasm/sim/stack/stack.py +++ b/squidasm/sim/stack/stack.py @@ -12,6 +12,7 @@ MagicLinkLayerProtocolWithSignaling, ) +from squidasm.sim.stack.common import DelayedClassicalConnection from squidasm.sim.stack.host import Host, HostComponent from squidasm.sim.stack.qnos import Qnos, QnosComponent @@ -39,6 +40,7 @@ def __init__( name: str, qdevice: QuantumProcessor, node_id: Optional[int] = None, + host_qnos_latency: float = 0.0, ) -> None: """ProcessingNode constructor. Typically created indirectly through constructing a `NodeStack`.""" @@ -51,17 +53,23 @@ def __init__( host_comp = HostComponent(self) self.add_subcomponent(host_comp, "host") - self.host_comp.ports["qnos_out"].connect(self.qnos_comp.ports["host_in"]) - self.host_comp.ports["qnos_in"].connect(self.qnos_comp.ports["host_out"]) + host_qnos_connection = DelayedClassicalConnection( + f"host_qnos_{self.name}", host_qnos_latency + ) + self.add_subcomponent(host_qnos_connection, "host_qnos_connection") + + self.host_comp.qnos_port.connect(host_qnos_connection.port_A) + self.qnos_comp.host_port.connect(host_qnos_connection.port_B) # Ports for communicating with other nodes - self.add_ports(["qnos_peer_out", "qnos_peer_in"]) - self.add_ports(["host_peer_out", "host_peer_in"]) + self.add_ports(["qnos_peer"]) + self.add_ports(["host_peer"]) + + self.qnos_comp.peer_port.forward_output(self.qnos_peer_port) + self.qnos_peer_port.forward_input(self.qnos_comp.peer_port) - self.qnos_comp.peer_out_port.forward_output(self.qnos_peer_out_port) - self.qnos_peer_in_port.forward_input(self.qnos_comp.peer_in_port) - self.host_comp.peer_out_port.forward_output(self.host_peer_out_port) - self.host_peer_in_port.forward_input(self.host_comp.peer_in_port) + self.host_comp.peer_port.forward_output(self.host_peer_port) + self.host_peer_port.forward_input(self.host_comp.peer_port) @property def qnos_comp(self) -> QnosComponent: @@ -76,20 +84,12 @@ def qdevice(self) -> QuantumProcessor: return self.qmemory @property - def host_peer_in_port(self) -> Port: - return self.ports["host_peer_in"] + def host_peer_port(self) -> Port: + return self.ports["host_peer"] @property - def host_peer_out_port(self) -> Port: - return self.ports["host_peer_out"] - - @property - def qnos_peer_in_port(self) -> Port: - return self.ports["qnos_peer_in"] - - @property - def qnos_peer_out_port(self) -> Port: - return self.ports["qnos_peer_out"] + def qnos_peer_port(self) -> Port: + return self.ports["qnos_peer"] class NodeStack(Protocol): @@ -107,6 +107,7 @@ def __init__( qdevice_type: Optional[str] = "generic", qdevice: Optional[QuantumProcessor] = None, node_id: Optional[int] = None, + host_qnos_latency: float = 0.0, use_default_components: bool = True, qnos_corrects_bell_states: bool = False, ) -> None: @@ -130,7 +131,7 @@ def __init__( self._node = node else: assert qdevice is not None - self._node = ProcessingNode(name, qdevice, node_id) + self._node = ProcessingNode(name, qdevice, node_id, host_qnos_latency) self._host: Optional[Host] = None self._qnos: Optional[Qnos] = None @@ -181,13 +182,26 @@ def qnos(self) -> Qnos: def qnos(self, qnos: Qnos) -> None: self._qnos = qnos - def connect_to(self, other: NodeStack) -> None: + def connect_to( + self, + other: NodeStack, + host_host_delay: float = 1e6, + qnos_qnos_delay: float = 1e6, + ) -> None: """Create connections between ports of this NodeStack and those of another NodeStack.""" - self.node.host_peer_out_port.connect(other.node.host_peer_in_port) - self.node.host_peer_in_port.connect(other.node.host_peer_out_port) - self.node.qnos_peer_out_port.connect(other.node.qnos_peer_in_port) - self.node.qnos_peer_in_port.connect(other.node.qnos_peer_out_port) + + host_host_connection = DelayedClassicalConnection( + f"host_host_{self.node.name}_{other.node.name}", host_host_delay + ) + self.node.host_peer_port.connect(host_host_connection.port_A) + other.node.host_peer_port.connect(host_host_connection.port_B) + + qnos_qnos_connection = DelayedClassicalConnection( + f"qnos_qnos_{self.node.name}_{other.node.name}", qnos_qnos_delay + ) + self.node.qnos_peer_port.connect(qnos_qnos_connection.port_A) + other.node.qnos_peer_port.connect(qnos_qnos_connection.port_B) def start(self) -> None: assert self._host is not None From cc1de3b499b938b2f9d311298b3c8ddb63ac8f6e Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Thu, 18 Aug 2022 14:23:18 +0200 Subject: [PATCH 11/12] Add latency to config file --- examples/stack/qne_teleport/config_nv.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/stack/qne_teleport/config_nv.yaml b/examples/stack/qne_teleport/config_nv.yaml index c49aebae..6b920e5c 100644 --- a/examples/stack/qne_teleport/config_nv.yaml +++ b/examples/stack/qne_teleport/config_nv.yaml @@ -80,4 +80,5 @@ links: stack2: receiver typ: nv cfg: - <<: *link_cfg \ No newline at end of file + <<: *link_cfg + host_host_latency: 10_000_000 \ No newline at end of file From c63cc245980d869901c19943d2a5c386243117bc Mon Sep 17 00:00:00 2001 From: Bart van der Vecht Date: Mon, 29 Aug 2022 18:03:07 +0200 Subject: [PATCH 12/12] Fix bug in fidelity calculation --- examples/stack/qne_teleport/example_teleport_nv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/stack/qne_teleport/example_teleport_nv.py b/examples/stack/qne_teleport/example_teleport_nv.py index 6c9a3f36..596c9f23 100644 --- a/examples/stack/qne_teleport/example_teleport_nv.py +++ b/examples/stack/qne_teleport/example_teleport_nv.py @@ -152,8 +152,8 @@ def do_teleportation( rotate_phi = ns.create_rotation_op(angle=phi, rotation_axis=(0, 0, 1)) expected = qubitapi.create_qubits(1)[0] - qubitapi.operate(expected, rotate_phi) qubitapi.operate(expected, rotate_theta) + qubitapi.operate(expected, rotate_phi) fid = qubitapi.fidelity(teleported, qubitapi.reduced_dm(expected), squared=True) if verbose: