common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Desktop RAG

Overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

NVIDIA cuQuantum / cuStateVecを各種GPUで実行

Yuichiro Minato

2023/01/15 16:18

こんにちは、ベンチマークを取りたかったのですが、結構比較するのは大変ですね。

参考程度でお願いします。

blueqatのcuStateVecの実装も無駄があるようなので、今後改善するかどうか検討します。

実行したGPUは、

Google ColabのNVIDIA Tesla T4

blueqat cloudのNVIDIA V100

blueqat cloudのNVIDIA A100

です。なんか弊社のクラウドマシンのスペックが出し切れてないのかT4が結構早いことになってました。。。

実行回路は、QAOA回路ですが、パラメータはあまりパフォーマンスに関係ないと思うので、適当なパラメータで組みました。

!pip install git+https://github.com/derwind/Blueqat.git@cuquantum-0.2

量子ビット数は24にしてみます。

from blueqat.pauli import qubo_bit as q
from blueqat.utils import qaoa
from blueqat import Circuit
import numpy as np

n_qubits = 24

hamiltonian = 0

for i in range(n_qubits):
    hamiltonian += np.random.rand() * q(i)
    for j in range(i+i, n_qubits):
        hamiltonian += np.random.rand() * q(i) * q(j)
step = 4

c = qaoa(hamiltonian, step)

全結合回路で、断熱ステップはp=4にしてみます。回路はそこそこ長いはずです。

Circuit(24).h[:].cx[0, 10].rz(-0.00440670285394899)[10].cx[0, 10].cx[0, 11].rz(-0.015135682662923143)[11].cx[0, 11].cx[0, 12].rz(-0.010286257881628513)[12].cx[0, 12].cx[0, 13].rz(-0.016150549178780598)[13].cx[0, 13].cx[0, 14].rz(-0.002711743845893463)[14].cx[0, 14].cx[0, 15].rz(-0.0038393566028827)[15].cx[0, 15].cx[0, 16].rz(-0.006250362499647054)[16].cx[0, 16].cx[0, 17].rz(-0.011911157018837035)[17].cx[0, 17].cx[0, 18].rz(-0.0055304184185955745)[18].cx[0, 18].cx[0, 19].rz(-0.0023410721400241126)[19].cx[0, 19].cx[0, 1].rz(-0.0021573810894843885)[1].cx[0, 1].cx[0, 20].rz(-0.016102900696015623)[20].cx[0, 20].cx[0, 21].rz(-0.008397798669148464)[21].cx[0, 21].cx[0, 22].rz(-0.003610898753863641)[22].cx[0, 22].cx[0, 23].rz(-0.008347097262661744)[23].cx[0, 23].cx[0, 2].rz(-0.0052083259985665235)[2].cx[0, 2].cx[0, 3].rz(-0.003020029954950007)[3].cx[0, 3].cx[0, 4].rz(-0.01669504684178658)[4].cx[0, 4].cx[0, 5].rz(-0.0001505151641206811)[5].cx[0, 5].cx[0, 6].rz(-8.55665444452495e-05)[6].cx[0, 6].cx[0, 7].rz(-0.006299963079788978)[7].cx[0, 7].cx[0, 8].rz(-0.01454348053295458)[8].cx[0, 8].cx[0, 9].rz(-0.00257983320383881)[9].cx[0, 9].rz(0.19659653502530097)[0].cx[10, 20].rz(-0.01091279732202167)[20].cx[10, 20].cx[10, 21].rz(-0.0050952663068423104)[21].cx[10, 21].cx[10, 22].rz(-0.013612316933590175)[22].cx[10, 22].cx[10, 23].rz(-0.006576909968294568)[23].cx[10, 23].rz(0.09464841426486345)[10].cx[11, 22].rz(-0.005996687488616351)[22].cx[11, 22].cx[11, 23].rz(-0.00011245937135695483)[23].cx[11, 23].rz(0.04585565247756521)[11].rz(0.0851937522005289)[12].rz(0.0934707065774131)[13].rz(0.0610613398740053)[14].rz(0.08914603581616656)[15].rz(0.08163863116422891)[16].rz(0.09572201595264791)[17].rz(0.07840003284098046)[18].rz(0.10324214344490193)[19].cx[1, 10].rz(-0.002576866033401178)[10].cx[1, 10].cx[1, 11].rz(-0.0008055266363642799)[11].cx[1, 11].cx[1, 12].rz(-0.002428058759806167)[12].cx[1, 12].cx[1, 13].rz(-0.0024351592931045455)[13].cx[1, 13].cx[1, 14].rz(-0.0033952217302307634)[14].cx[1, 14].cx[1, 15].rz(-0.013446619435793306)[15].cx[1, 15].cx[1, 16].rz(-0.012746101020891997)[16].cx[1, 16].cx[1, 17].rz(-0.011032640752109881)[17].cx[1, 17].cx[1, 18].rz(-0.0006245593767143349)[18].cx[1, 18].cx[1, 19].rz(-0.008372145348355413)[19].cx[1, 19].cx[1, 20].rz(-0.005145431140976549)[20].cx[1, 20].cx[1, 21].rz(-0.0011430247360311803)[21].cx[1, 21].cx[1, 22].rz(-0.016782151972011165)[22].cx[1, 22].cx[1, 23].rz(-0.014278164529733423)[23].cx[1, 23].cx[1, 2].rz(-0.01459705039040762)[2].cx[1, 2].cx[1, 3].rz(-0.004850701601401014)[3].cx[1, 3].cx[1, 4].rz(-0.014339925540409401)[4].cx[1, 4].cx[1, 5].rz(-0.008138013794076396)[5].cx[1, 5].cx[1, 6].rz(-0.012224158910075202)[6].cx[1, 6].cx[1, 7].rz(-0.01375169725498483)[7].cx[1, 7].cx[1, 8].rz(-0.015542215841456293)[8].cx[1, 8].cx[1, 9].rz(-0.01089732573683759)[9].cx[1, 9].rz(0.21846311960448525)[1].rz(0.1247763284460142)[20].rz(0.10017626106731478)[21].rz(0.13308048419056553)[22].rz(0.0841257291869229)[23].cx[2, 10].rz(-0.00212016478163022)[10].cx[2, 10].cx[2, 11].rz(-0.0011622493897593593)[11].cx[2, 11].cx[2, 12].rz(-0.01493089903464591)[12].cx[2, 12].cx[2, 13].rz(-0.0016355271120571933)[13].cx[2, 13].cx[2, 14].rz(-0.01023443307280581)[14].cx[2, 14].cx[2, 15].rz(-0.0012762640753803689)[15].cx[2, 15].cx[2, 16].rz(-0.0020657214603940536)[16].cx[2, 16].cx[2, 17].rz(-0.006301175177043177)[17].cx[2, 17].cx[2, 18].rz(-0.01384773837664424)[18].cx[2, 18].cx[2, 19].rz(-0.009559538741187609)[19].cx[2, 19].cx[2, 20].rz(-0.00331394540454655)[20].cx[2, 20].cx[2, 21].rz(-0.005673468136308244)[21].cx[2, 21].cx[2, 22].rz(-0.014721417002480001)[22].cx[2, 22].cx[2, 23].rz(-0.006283900007044604)[23].cx[2, 23].cx[2, 4].rz(-0.001653834925725019)[4].cx[2, 4].cx[2, 5].rz(-0.01351868954939802)[5].cx[2, 5].cx[2, 6].rz(-0.004199045496260331)[6].cx[2, 6].cx[2, 7].rz(-0.004932722585630265)[7].cx[2, 7].cx[2, 8].rz(-0.011809730974400037)[8].cx[2, 8].cx[2, 9].rz(-0.011150168225704504)[9].cx[2, 9].rz(0.18582303398237487)[2].cx[3, 10].rz(-0.015235780551420938)[10].cx[3, 10].cx[3, 11].rz(-0.004438354006876075)[11].cx[3, 11].cx[3, 12].rz(-0.010609904876260259)[12].cx[3, 12].cx[3, 13].rz(-0.014540258058652313)[13].cx[3, 13].cx[3, 14].rz(-0.004294826284038375)[14].cx[3, 14].cx[3, 15].rz(-0.01559447941019674)[15].cx[3, 15].cx[3, 16].rz(-0.012080244793002686)[16].cx[3, 16].cx[3, 17].rz(-0.004329372175054468)[17].cx[3, 17].cx[3, 18].rz(-0.0038168632290697295)[18].cx[3, 18].cx[3, 19].rz(-0.016761240592006215)[19].cx[3, 19].cx[3, 20].rz(-0.006227756487464521)[20].cx[3, 20].cx[3, 21].rz(-0.009667424000780609)[21].cx[3, 21].cx[3, 22].rz(-0.012366317773640756)[22].cx[3, 22].cx[3, 23].rz(-0.014342203522669936)[23].cx[3, 23].cx[3, 6].rz(-0.010560767287874048)[6].cx[3, 6].cx[3, 7].rz(-0.006220039295912911)[7].cx[3, 7].cx[3, 8].rz(-0.009044315158693774)[8].cx[3, 8].cx[3, 9].rz(-0.010882935072456294)[9].cx[3, 9].rz(0.20340742930772815)[3].cx[4, 10].rz(-0.007364638023081372)[10].cx[4, 10].cx[4, 11].rz(-0.0010085851168060323)[11].cx[4, 11].cx[4, 12].rz(-0.002865407413400892)[12].cx[4, 12].cx[4, 13].rz(-0.013855403844077113)[13].cx[4, 13].cx[4, 14].rz(-0.013761323158937466)[14].cx[4, 14].cx[4, 15].rz(-0.004100922610285352)[15].cx[4, 15].cx[4, 16].rz(-0.008383692150240164)[16].cx[4, 16].cx[4, 17].rz(-0.0088902439389637)[17].cx[4, 17].cx[4, 18].rz(-0.011806070579102292)[18].cx[4, 18].cx[4, 19].rz(-0.01657604172829271)[19].cx[4, 19].cx[4, 20].rz(-0.013215581159746316)[20].cx[4, 20].cx[4, 21].rz(-0.005426281055835455)[21].cx[4, 21].cx[4, 22].rz(-0.008764161698814854)[22].cx[4, 22].cx[4, 23].rz(-0.005719126746006419)[23].cx[4, 23].cx[4, 8].rz(-0.012819632563633887)[8].cx[4, 8].cx[4, 9].rz(-0.01108902430203831)[9].cx[4, 9].rz(0.2010832104621523)[4].cx[5, 10].rz(-0.0002860394932254219)[10].cx[5, 10].cx[5, 11].rz(-0.009638697940398983)[11].cx[5, 11].cx[5, 12].rz(-0.00941814389737278)[12].cx[5, 12].cx[5, 13].rz(-0.004431054033994237)[13].cx[5, 13].cx[5, 14].rz(-0.001523308384168274)[14].cx[5, 14].cx[5, 15].rz(-0.0010671055992448122)[15].cx[5, 15].cx[5, 16].rz(-0.011492868629327826)[16].cx[5, 16].cx[5, 17].rz(-0.011732857703068476)[17].cx[5, 17].cx[5, 18].rz(-0.006086592037735652)[18].cx[5, 18].cx[5, 19].rz(-0.0062610779442593585)[19].cx[5, 19].cx[5, 20].rz(-0.009776503373672427)[20].cx[5, 20].cx[5, 21].rz(-0.012059783130112262)[21].cx[5, 21].cx[5, 22].rz(-0.011760294971991781)[22].cx[5, 22].cx[5, 23].rz(-0.0054620424591388566)[23].cx[5, 23].rz(0.14499252406006946)[5].cx[6, 12].rz(-0.011881254896515998)[12].cx[6, 12].cx[6, 13].rz(-0.01079825815064291)[13].cx[6, 13].cx[6, 14].rz(-0.016341114040437282)[14].cx[6, 14].cx[6, 15].rz(-0.014721044114710298)[15].cx[6, 15].cx[6, 16].rz(-0.01220425574198526)[16].cx[6, 16].cx[6, 17].rz(-0.004936137689615052)[17].cx[6, 17].cx[6, 18].rz(-0.001251314773063774)[18].cx[6, 18].cx[6, 19].rz(-0.0005269531000775892)[19].cx[6, 19].cx[6, 20].rz(-0.009480468576456813)[20].cx[6, 20].cx[6, 21].rz(-0.009937189387610611)[21].cx[6, 21].cx[6, 22].rz(-0.014250565199340036)[22].cx[6, 22].cx[6, 23].rz(-0.012049067259061448)[23].cx[6, 23].rz(0.16246699711198004)[6].cx[7, 14].rz(-0.004848585440683127)[14].cx[7, 14].cx[7, 15].rz(-0.010902766641509383)[15].cx[7, 15].cx[7, 16].rz(-0.006752902439204204)[16].cx[7, 16].cx[7, 17].rz(-0.005874998795021943)[17].cx[7, 17].cx[7, 18].rz(-0.008516950705767476)[18].cx[7, 18].cx[7, 19].rz(-0.012257877762631412)[19].cx[7, 19].cx[7, 20].rz(-0.010666317148595231)[20].cx[7, 20].cx[7, 21].rz(-0.0012583051552440944)[21].cx[7, 21].cx[7, 22].rz(-0.009478294034931781)[22].cx[7, 22].cx[7, 23].rz(-0.007720358874629259)[23].cx[7, 23].rz(0.13826085229689997)[7].cx[8, 16].rz(-0.008536507287058917)[16].cx[8, 16].cx[8, 17].rz(-0.012160245048608713)[17].cx[8, 17].cx[8, 18].rz(-0.006970932607837865)[18].cx[8, 18].cx[8, 19].rz(-0.015876021066798352)[19].cx[8, 19].cx[8, 20].rz(-0.008421876233304705)[20].cx[8, 20].cx[8, 21].rz(-0.003911093820678209)[21].cx[8, 21].cx[8, 22].rz(-0.010308919853516505)[22].cx[8, 22].cx[8, 23].rz(-0.0024034543686864106)[23].cx[8, 23].rz(0.13580165851583928)[8].cx[9, 18].rz(-0.012501643078343668)[18].cx[9, 18].cx[9, 19].rz(-0.002307974469155776)[19].cx[9, 19].cx[9, 20].rz(-0.014986150835921775)[20].cx[9, 20].cx[9, 21].rz(-0.0056071640326151246)[21].cx[9, 21].cx[9, 22].rz(-8.453260165622407e-05)[22].cx[9, 22].cx[9, 23].rz(-0.0001339544178484326)[23].cx[9, 23].rz(0.10763279900924265)[9].rx(0.4671961597284129)[:].cx[0, 10].rz(-0.009810096506448289)[10].cx[0, 10].cx[0, 11].rz(-0.03369469477189556)[11].cx[0, 11].cx[0, 12].rz(-0.022899021298557053)[12].cx[0, 12].cx[0, 13].rz(-0.03595396633880022)[13].cx[0, 13].cx[0, 14].rz(-0.006036819297934457)[14].cx[0, 14].cx[0, 15].rz(-0.00854708385050206)[15].cx[0, 15].cx[0, 16].rz(-0.01391440751828209)[16].cx[0, 16].cx[0, 17].rz(-0.026516332898084444)[17].cx[0, 17].cx[0, 18].rz(-0.012311685222624666)[18].cx[0, 18].cx[0, 19].rz(-0.005211638811002031)[19].cx[0, 19].cx[0, 1].rz(-0.004802710187291742)[1].cx[0, 1].cx[0, 20].rz(-0.03584789242599002)[20].cx[0, 20].cx[0, 21].rz(-0.018694978562542097)[21].cx[0, 21].cx[0, 22].rz(-0.008038496450622316)[22].cx[0, 22].cx[0, 23].rz(-0.018582108303953716)[23].cx[0, 23].cx[0, 2].rz(-0.01159465078004842)[2].cx[0, 2].cx[0, 3].rz(-0.006723118461203874)[3].cx[0, 3].cx[0, 4].rz(-0.03716611401443428)[4].cx[0, 4].cx[0, 5].rz(-0.0003350732587709161)[5].cx[0, 5].cx[0, 6].rz(-0.00019048619490623616)[6].cx[0, 6].cx[0, 7].rz(-0.014024827143588128)[7].cx[0, 7].cx[0, 8].rz(-0.03237634855276946)[8].cx[0, 8].cx[0, 9].rz(-0.005743162981256773)[9].cx[0, 9].rz(0.4376585046353273)[0].cx[10, 20].rz(-0.024293808416968037)[20].cx[10, 20].cx[10, 21].rz(-0.011342959998172829)[21].cx[10, 21].cx[10, 22].rz(-0.030303414416792816)[22].cx[10, 22].cx[10, 23].rz(-0.01464135968354955)[23].cx[10, 23].rz(0.21070403630427212)[10].cx[11, 22].rz(-0.013349682275404541)[22].cx[11, 22].cx[11, 23].rz(-0.00025035436303076045)[23].cx[11, 23].rz(0.1020827569001948)[11].rz(0.18965629372642612)[12].rz(0.20808225161554036)[13].rz(0.13593329453567124)[14].rz(0.19845477299205547)[15].rz(0.18174196829671083)[16].rz(0.2130940627062595)[17].rz(0.17453227816109895)[18].rz(0.22983519068444763)[19].cx[1, 10].rz(-0.005736557537388877)[10].cx[1, 10].cx[1, 11].rz(-0.0017932441335740987)[11].cx[1, 11].cx[1, 12].rz(-0.00540528634366173)[12].cx[1, 12].cx[1, 13].rz(-0.005421093381080175)[13].cx[1, 13].cx[1, 14].rz(-0.007558361418561779)[14].cx[1, 14].cx[1, 15].rz(-0.02993454260987994)[15].cx[1, 15].cx[1, 16].rz(-0.028375065267638076)[16].cx[1, 16].cx[1, 17].rz(-0.024560600994955356)[17].cx[1, 17].cx[1, 18].rz(-0.0013903791480027352)[18].cx[1, 18].cx[1, 19].rz(-0.018637869753295934)[19].cx[1, 19].cx[1, 20].rz(-0.01145463575222233)[20].cx[1, 20].cx[1, 21].rz(-0.0025445743317308003)[21].cx[1, 21].cx[1, 22].rz(-0.037360025372206944)[22].cx[1, 22].cx[1, 23].rz(-0.03178570841147374)[23].cx[1, 23].cx[1, 2].rz(-0.0324956044882996)[2].cx[1, 2].cx[1, 3].rz(-0.010798515899723981)[3].cx[1, 3].cx[1, 4].rz(-0.03192319929641602)[4].cx[1, 4].cx[1, 5].rz(-0.01811665168645405)[5].cx[1, 5].cx[1, 6].rz(-0.0272131302228679)[6].cx[1, 6].cx[1, 7].rz(-0.030613699554978623)[7].cx[1, 7].cx[1, 8].rz(-0.034599709211639205)[8].cx[1, 8].cx[1, 9].rz(-0.024259365944036708)[9].cx[1, 9].rz(0.48633737228259316)[1].rz(0.2777740783403994)[20].rz(0.22300999665653706)[21].rz(0.2962605912636891)[22].rz(0.18727868643547993)[23].cx[2, 10].rz(-0.0047198601327808265)[10].cx[2, 10].cx[2, 11].rz(-0.0025873717960997627)[11].cx[2, 11].cx[2, 12].rz(-0.03323881035605845)[12].cx[2, 12].cx[2, 13].rz(-0.003640971342965767)[13].cx[2, 13].cx[2, 14].rz(-0.02278365014855465)[14].cx[2, 14].cx[2, 15].rz(-0.002841188562549569)[15].cx[2, 15].cx[2, 16].rz(-0.004598659713065723)[16].cx[2, 16].cx[2, 17].rz(-0.014027525485507923)[17].cx[2, 17].cx[2, 18].rz(-0.03082750400317781)[18].cx[2, 18].cx[2, 19].rz(-0.021281216527713535)[19].cx[2, 19].cx[2, 20].rz(-0.007377426006060085)[20].cx[2, 20].cx[2, 21].rz(-0.012630139083139428)[21].cx[2, 21].cx[2, 22].rz(-0.03277246646584745)[22].cx[2, 22].cx[2, 23].rz(-0.01398906791519559)[23].cx[2, 23].cx[2, 4].rz(-0.00368172775991875)[4].cx[2, 4].cx[2, 5].rz(-0.03009498337321831)[5].cx[2, 5].cx[2, 6].rz(-0.009347814662921162)[6].cx[2, 6].cx[2, 7].rz(-0.01098110905327001)[7].cx[2, 7].cx[2, 8].rz(-0.026290540663579096)[8].cx[2, 8].cx[2, 9].rz(-0.024822237845983128)[9].cx[2, 9].rz(0.4136747942635887)[2].cx[3, 10].rz(-0.033917530297412124)[10].cx[3, 10].cx[3, 11].rz(-0.009880557546152115)[11].cx[3, 11].cx[3, 12].rz(-0.023619516497935915)[12].cx[3, 12].cx[3, 13].rz(-0.03236917475754375)[13].cx[3, 13].cx[3, 14].rz(-0.00956103956205958)[14].cx[3, 14].cx[3, 15].rz(-0.03471605711847748)[15].cx[3, 15].cx[3, 16].rz(-0.026892752057170496)[16].cx[3, 16].cx[3, 17].rz(-0.009637944798469024)[17].cx[3, 17].cx[3, 18].rz(-0.008497009639652307)[18].cx[3, 18].cx[3, 19].rz(-0.037313472958138964)[19].cx[3, 19].cx[3, 20].rz(-0.01386408255458778)[20].cx[3, 20].cx[3, 21].rz(-0.021521388112526005)[21].cx[3, 21].cx[3, 22].rz(-0.02752960088518527)[22].cx[3, 22].cx[3, 23].rz(-0.031928270486046115)[23].cx[3, 23].cx[3, 6].rz(-0.023510127573803923)[6].cx[3, 6].cx[3, 7].rz(-0.013846902727313471)[7].cx[3, 7].cx[3, 8].rz(-0.020134238110021237)[8].cx[3, 8].cx[3, 9].rz(-0.024227329791146137)[9].cx[3, 9].rz(0.452820754603226)[3].cx[4, 10].rz(-0.016394981040471834)[10].cx[4, 10].cx[4, 11].rz(-0.002245288066557058)[11].cx[4, 11].cx[4, 12].rz(-0.006378901457030375)[12].cx[4, 12].cx[4, 13].rz(-0.030844568683455975)[13].cx[4, 13].cx[4, 14].rz(-0.03063512851215293)[14].cx[4, 14].cx[4, 15].rz(-0.009129375840788384)[15].cx[4, 15].cx[4, 16].rz(-0.018663574967508128)[16].cx[4, 16].cx[4, 17].rz(-0.01979124844529634)[17].cx[4, 17].cx[4, 18].rz(-0.0262823919791062)[18].cx[4, 18].cx[4, 19].rz(-0.036901187676800805)[19].cx[4, 19].cx[4, 20].rz(-0.029420210725061947)[20].cx[4, 20].cx[4, 21].rz(-0.012079857116109996)[21].cx[4, 21].cx[4, 22].rz(-0.019510567177554183)[22].cx[4, 22].cx[4, 23].rz(-0.012731783188116453)[23].cx[4, 23].cx[4, 8].rz(-0.02853875942957131)[8].cx[4, 8].cx[4, 9].rz(-0.02468612070538429)[9].cx[4, 9].rz(0.4476466341932755)[4].cx[5, 10].rz(-0.000636774279137595)[10].cx[5, 10].cx[5, 11].rz(-0.021457438843892816)[11].cx[5, 11].cx[5, 12].rz(-0.02096644670789357)[12].cx[5, 12].cx[5, 13].rz(-0.009864306521102604)[13].cx[5, 13].cx[5, 14].rz(-0.0033911526946685195)[14].cx[5, 14].cx[5, 15].rz(-0.0023755649650354484)[15].cx[5, 15].cx[5, 16].rz(-0.02558514928879367)[16].cx[5, 16].cx[5, 17].rz(-0.026119407225377513)[17].cx[5, 17].cx[5, 18].rz(-0.013549825632572067)[18].cx[5, 18].cx[5, 19].rz(-0.013938261984816408)[19].cx[5, 19].cx[5, 20].rz(-0.021764218003806887)[20].cx[5, 20].cx[5, 21].rz(-0.02684720079258782)[21].cx[5, 21].cx[5, 22].rz(-0.026180487417287845)[22].cx[5, 22].cx[5, 23].rz(-0.012159468296904273)[23].cx[5, 23].rz(0.32277888954281464)[5].cx[6, 12].rz(-0.026449765508487457)[12].cx[6, 12].cx[6, 13].rz(-0.024038824052867485)[13].cx[6, 13].cx[6, 14].rz(-0.03637819727643078)[14].cx[6, 14].cx[6, 15].rz(-0.032771636352012204)[15].cx[6, 15].cx[6, 16].rz(-0.02716882226605356)[16].cx[6, 16].cx[6, 17].rz(-0.010988711676088177)[17].cx[6, 17].cx[6, 18].rz(-0.0027856470223989738)[18].cx[6, 18].cx[6, 19].rz(-0.0011730903892239366)[19].cx[6, 19].cx[6, 20].rz(-0.021105192417965643)[20].cx[6, 20].cx[6, 21].rz(-0.022121933365204006)[21].cx[6, 21].cx[6, 22].rz(-0.03172426744219444)[22].cx[6, 22].cx[6, 23].rz(-0.026823345376726287)[23].cx[6, 23].rz(0.3616801435461228)[6].cx[7, 14].rz(-0.010793804953342149)[14].cx[7, 14].cx[7, 15].rz(-0.024271478355896933)[15].cx[7, 15].cx[7, 16].rz(-0.015033149913400115)[16].cx[7, 16].cx[7, 17].rz(-0.013078781815929499)[17].cx[7, 17].cx[7, 18].rz(-0.018960231976923075)[18].cx[7, 18].cx[7, 19].rz(-0.027288194326036706)[19].cx[7, 19].cx[7, 20].rz(-0.023745100149499394)[20].cx[7, 20].cx[7, 21].rz(-0.0028012088440326805)[21].cx[7, 21].cx[7, 22].rz(-0.021100351505627127)[22].cx[7, 22].cx[7, 23].rz(-0.01718687829306592)[23].cx[7, 23].rz(0.307793002852668)[7].cx[8, 16].rz(-0.01900376837049527)[16].cx[8, 16].cx[8, 17].rz(-0.027070846712981555)[17].cx[8, 17].cx[8, 18].rz(-0.015518523460585552)[18].cx[8, 18].cx[8, 19].rz(-0.03534281842128963)[19].cx[8, 19].cx[8, 20].rz(-0.018748579460047873)[20].cx[8, 20].cx[8, 21].rz(-0.008706783529151232)[21].cx[8, 21].cx[8, 22].rz(-0.02294947083840937)[22].cx[8, 22].cx[8, 23].rz(-0.0053505126365689295)[23].cx[8, 23].rz(0.3023184044692885)[8].cx[9, 18].rz(-0.027830858842188298)[18].cx[9, 18].cx[9, 19].rz(-0.005137957567651103)[19].cx[9, 19].cx[9, 20].rz(-0.033361810594702994)[20].cx[9, 20].cx[9, 21].rz(-0.01248253447317119)[21].cx[9, 21].cx[9, 22].rz(-0.00018818445619621713)[22].cx[9, 22].cx[9, 23].rz(-0.00029820612147256765)[23].cx[9, 23].rz(0.2396095630985435)[9].rx(0.3807268235885656)[:].cx[0, 10].rz(-0.11195774037655307)[10].cx[0, 10].cx[0, 11].rz(-0.3845407521587023)[11].cx[0, 11].cx[0, 12].rz(-0.26133511324132697)[12].cx[0, 12].cx[0, 13].rz(-0.41032469213945355)[13].cx[0, 13].cx[0, 14].rz(-0.0688952088508054)[14].cx[0, 14].cx[0, 15].rz(-0.09754360663854322)[15].cx[0, 15].cx[0, 16].rz(-0.15879819565499764)[16].cx[0, 16].cx[0, 17].rz(-0.30261768703199043)[17].cx[0, 17].cx[0, 18].rz(-0.14050712516909764)[18].cx[0, 18].cx[0, 19].rz(-0.05947783536634964)[19].cx[0, 19].cx[0, 1].rz(-0.05481093686481052)[1].cx[0, 1].cx[0, 20].rz(-0.4091141234581645)[20].cx[0, 20].cx[0, 21].rz(-0.2133564695183711)[21].cx[0, 21].cx[0, 22].rz(-0.09173935221178046)[22].cx[0, 22].cx[0, 23].rz(-0.21206833753119175)[23].cx[0, 23].cx[0, 2].rz(-0.13232396857015588)[2].cx[0, 2].cx[0, 3].rz(-0.0767275990308059)[3].cx[0, 3].cx[0, 4].rz(-0.4241583292170783)[4].cx[0, 4].cx[0, 5].rz(-0.003824024043794207)[5].cx[0, 5].cx[0, 6].rz(-0.002173923971146643)[6].cx[0, 6].cx[0, 7].rz(-0.16005835978634575)[7].cx[0, 7].cx[0, 8].rz(-0.36949512405195417)[8].cx[0, 8].cx[0, 9].rz(-0.06554385571774249)[9].cx[0, 9].rz(4.994778308586938)[0].cx[10, 20].rz(-0.2772531232202271)[20].cx[10, 20].cx[10, 21].rz(-0.12945154716289684)[21].cx[10, 21].cx[10, 22].rz(-0.34583776026752877)[22].cx[10, 22].cx[10, 23].rz(-0.16709453827830315)[23].cx[10, 23].rz(2.4046601149478564)[10].cx[11, 22].rz(-0.15235326801492685)[22].cx[11, 22].cx[11, 23].rz(-0.0028571695252856415)[23].cx[11, 23].rz(1.165019608771678)[11].rz(2.1644527227479857)[12].rz(2.374738993447032)[13].rz(1.551338917833348)[14].rz(2.2648653799203515)[15].rz(2.07413047248947)[16].rz(2.431936294670546)[17].rz(1.9918498735302588)[18].rz(2.6229944416072897)[19].cx[1, 10].rz(-0.0654684710801757)[10].cx[1, 10].cx[1, 11].rz(-0.020465401232954126)[11].cx[1, 11].cx[1, 12].rz(-0.06168783810911817)[12].cx[1, 12].cx[1, 13].rz(-0.06186823594620912)[13].cx[1, 13].cx[1, 14].rz(-0.08625981047334924)[14].cx[1, 14].cx[1, 15].rz(-0.34162801024484185)[15].cx[1, 15].cx[1, 16].rz(-0.32383047285149735)[16].cx[1, 16].cx[1, 17].rz(-0.280297893897158)[17].cx[1, 17].cx[1, 18].rz(-0.015867704010326885)[18].cx[1, 18].cx[1, 19].rz(-0.21270471515136835)[19].cx[1, 19].cx[1, 20].rz(-0.13072604686532194)[20].cx[1, 20].cx[1, 21].rz(-0.02903995819138985)[21].cx[1, 21].cx[1, 22].rz(-0.426371342864325)[22].cx[1, 22].cx[1, 23].rz(-0.3627544425967115)[23].cx[1, 23].cx[1, 2].rz(-0.37085613258634215)[2].cx[1, 2].cx[1, 3].rz(-0.12323807811255505)[3].cx[1, 3].cx[1, 4].rz(-0.3643235575172826)[4].cx[1, 4].cx[1, 5].rz(-0.20675631321987917)[5].cx[1, 5].cx[1, 6].rz(-0.31056988749524833)[6].cx[1, 6].cx[1, 7].rz(-0.3493788898497786)[7].cx[1, 7].cx[1, 8].rz(-0.3948692307435205)[8].cx[1, 8].cx[1, 9].rz(-0.27686004844875695)[9].cx[1, 9].rz(5.550325955064713)[1].rz(3.170097065378413)[20].rz(2.5451019050258057)[21].rz(3.3810744204913847)[22].rz(2.137318276147773)[23].cx[2, 10].rz(-0.05386541049949705)[10].cx[2, 10].cx[2, 11].rz(-0.0295283843145626)[11].cx[2, 11].cx[2, 12].rz(-0.3793379706125209)[12].cx[2, 12].cx[2, 13].rz(-0.04155259064641086)[13].cx[2, 13].cx[2, 14].rz(-0.26001843982731687)[14].cx[2, 14].cx[2, 15].rz(-0.032425068523808144)[15].cx[2, 15].cx[2, 16].rz(-0.0524822105365738)[16].cx[2, 16].cx[2, 17].rz(-0.16008915461735532)[17].cx[2, 17].cx[2, 18].rz(-0.3518189334199007)[18].cx[2, 18].cx[2, 19].rz(-0.24287191398584648)[19].cx[2, 19].cx[2, 20].rz(-0.08419488482002116)[20].cx[2, 20].cx[2, 21].rz(-0.1441414803065815)[21].cx[2, 21].cx[2, 22].rz(-0.37401582030012426)[22].cx[2, 22].cx[2, 23].rz(-0.15965025754129586)[23].cx[2, 23].cx[2, 4].rz(-0.04201772331303665)[4].cx[2, 4].cx[2, 5].rz(-0.34345904068535243)[5].cx[2, 5].cx[2, 6].rz(-0.1066819481777317)[6].cx[2, 6].cx[2, 7].rz(-0.1253219227379168)[7].cx[2, 7].cx[2, 8].rz(-0.30004083283354543)[8].cx[2, 8].cx[2, 9].rz(-0.28328382483280695)[9].cx[2, 9].rz(4.721064179750329)[2].cx[3, 10].rz(-0.38708386291159425)[10].cx[3, 10].cx[3, 11].rz(-0.11276187709270438)[11].cx[3, 11].cx[3, 12].rz(-0.26955776573221624)[12].cx[3, 12].cx[3, 13].rz(-0.36941325310370543)[13].cx[3, 13].cx[3, 14].rz(-0.10911537764337094)[14].cx[3, 14].cx[3, 15].rz(-0.39619705139631345)[15].cx[3, 15].cx[3, 16].rz(-0.30691357122212204)[16].cx[3, 16].cx[3, 17].rz(-0.1099930587636195)[17].cx[3, 17].cx[3, 18].rz(-0.09697213463577622)[18].cx[3, 18].cx[3, 19].rz(-0.42584006337235475)[19].cx[3, 19].cx[3, 20].rz(-0.15822386193503438)[20].cx[3, 20].cx[3, 21].rz(-0.24561287254018743)[21].cx[3, 21].cx[3, 22].rz(-0.3141816093804749)[22].cx[3, 22].cx[3, 23].rz(-0.3643814324761714)[23].cx[3, 23].cx[3, 6].rz(-0.2683093644794875)[6].cx[3, 6].cx[3, 7].rz(-0.15802779713175474)[7].cx[3, 7].cx[3, 8].rz(-0.22978202115746335)[8].cx[3, 8].cx[3, 9].rz(-0.2764944358081852)[9].cx[3, 9].rz(5.167817507978565)[3].cx[4, 10].rz(-0.187107744516186)[10].cx[4, 10].cx[4, 11].rz(-0.025624353263083054)[11].cx[4, 11].cx[4, 12].rz(-0.07279922197955874)[12].cx[4, 12].cx[4, 13].rz(-0.3520136841079226)[13].cx[4, 13].cx[4, 14].rz(-0.3496234478541045)[14].cx[4, 14].cx[4, 15].rz(-0.10418901480848031)[15].cx[4, 15].cx[4, 16].rz(-0.21299807594524034)[16].cx[4, 16].cx[4, 17].rz(-0.22586765111942445)[17].cx[4, 17].cx[4, 18].rz(-0.2999478359603723)[18].cx[4, 18].cx[4, 19].rz(-0.42113485701084835)[19].cx[4, 19].cx[4, 20].rz(-0.33575819687552527)[20].cx[4, 20].cx[4, 21].rz(-0.13786138657273453)[21].cx[4, 21].cx[4, 22].rz(-0.22266437575085063)[22].cx[4, 22].cx[4, 23].rz(-0.14530149379965415)[23].cx[4, 23].cx[4, 8].rz(-0.32569863270811367)[8].cx[4, 8].cx[4, 9].rz(-0.28173038777151543)[9].cx[4, 9].rz(5.1087678514177455)[4].cx[5, 10].rz(-0.007267187369185682)[10].cx[5, 10].cx[5, 11].rz(-0.24488305142067054)[11].cx[5, 11].cx[5, 12].rz(-0.23927960296804826)[12].cx[5, 12].cx[5, 13].rz(-0.11257641224614043)[13].cx[5, 13].cx[5, 14].rz(-0.03870153496628578)[14].cx[5, 14].cx[5, 15].rz(-0.02711113855284233)[15].cx[5, 15].cx[5, 16].rz(-0.2919905527623784)[16].cx[5, 16].cx[5, 17].rz(-0.29808777222590255)[17].cx[5, 17].cx[5, 18].rz(-0.15463740436415896)[18].cx[5, 18].cx[5, 19].rz(-0.15907043478835528)[19].cx[5, 19].cx[5, 20].rz(-0.24838416902089194)[20].cx[5, 20].cx[5, 21].rz(-0.30639371735008125)[21].cx[5, 21].cx[5, 22].rz(-0.29878485000322635)[22].cx[5, 22].cx[5, 23].rz(-0.13876994928713574)[23].cx[5, 23].rz(3.683714537437311)[5].cx[6, 12].rz(-0.3018579866032387)[12].cx[6, 12].cx[6, 13].rz(-0.2743431138011266)[13].cx[6, 13].cx[6, 14].rz(-0.4151662283204406)[14].cx[6, 14].cx[6, 15].rz(-0.37400634662479515)[15].cx[6, 15].cx[6, 16].rz(-0.3100642228748876)[16].cx[6, 16].cx[6, 17].rz(-0.12540868768167632)[17].cx[6, 17].cx[6, 18].rz(-0.031791200617594696)[18].cx[6, 18].cx[6, 19].rz(-0.013387895740743637)[19].cx[6, 19].cx[6, 20].rz(-0.24086303858220345)[20].cx[6, 20].cx[6, 21].rz(-0.2524665960932127)[21].cx[6, 21].cx[6, 22].rz(-0.3620532474471496)[22].cx[6, 22].cx[6, 23].rz(-0.30612146738252544)[23].cx[6, 23].rz(4.127675154253051)[6].cx[7, 14].rz(-0.12318431443025098)[14].cx[7, 14].cx[7, 15].rz(-0.2769982813663934)[15].cx[7, 15].cx[7, 16].rz(-0.1715658448354657)[16].cx[7, 16].cx[7, 17].rz(-0.14926161613465636)[17].cx[7, 17].cx[7, 18].rz(-0.21638367448844856)[18].cx[7, 18].cx[7, 19].rz(-0.31142655667976127)[19].cx[7, 19].cx[7, 20].rz(-0.27099098933486293)[20].cx[7, 20].cx[7, 21].rz(-0.03196879992919245)[21].cx[7, 21].cx[7, 22].rz(-0.2408077916632333)[22].cx[7, 22].cx[7, 23].rz(-0.1961452730412681)[23].cx[7, 23].rz(3.5126880842046586)[7].cx[8, 16].rz(-0.2168805336422075)[16].cx[8, 16].cx[8, 17].rz(-0.30894607673566515)[17].cx[8, 17].cx[8, 18].rz(-0.17710517113523394)[18].cx[8, 18].cx[8, 19].rz(-0.40334996565889897)[19].cx[8, 19].cx[8, 20].rz(-0.21396818983763172)[20].cx[8, 20].cx[8, 21].rz(-0.09936617944898098)[21].cx[8, 21].cx[8, 22].rz(-0.2619108686868712)[22].cx[8, 22].cx[8, 23].rz(-0.06106273309877232)[23].cx[8, 23].rz(3.4502092223433696)[8].cx[9, 18].rz(-0.31761971624459656)[18].cx[9, 18].cx[9, 19].rz(-0.058636948071481274)[19].cx[9, 19].cx[9, 20].rz(-0.3807417110115443)[20].cx[9, 20].cx[9, 21].rz(-0.14245694248472174)[21].cx[9, 21].cx[9, 22].rz(-0.002147655374834508)[22].cx[9, 22].cx[9, 23].rz(-0.0034032777867760277)[23].cx[9, 23].rz(2.7345444807289008)[9].rx(0.9131295143471052)[:].cx[0, 10].rz(-0.10642307098873881)[10].cx[0, 10].cx[0, 11].rz(-0.36553084786640777)[11].cx[0, 11].cx[0, 12].rz(-0.2484159220683631)[12].cx[0, 12].cx[0, 13].rz(-0.39004014990940916)[13].cx[0, 13].cx[0, 14].rz(-0.06548935051433723)[14].cx[0, 14].cx[0, 15].rz(-0.0927215049078048)[15].cx[0, 15].cx[0, 16].rz(-0.1509479522562311)[16].cx[0, 16].cx[0, 17].rz(-0.2876576776302834)[17].cx[0, 17].cx[0, 18].rz(-0.13356110712847227)[18].cx[0, 18].cx[0, 19].rz(-0.05653752812588186)[19].cx[0, 19].cx[0, 1].rz(-0.052101339356297224)[1].cx[0, 1].cx[0, 20].rz(-0.38888942610708643)[20].cx[0, 20].cx[0, 21].rz(-0.20280911909343563)[21].cx[0, 21].cx[0, 22].rz(-0.0872041857941954)[22].cx[0, 22].cx[0, 23].rz(-0.2015846663539164)[23].cx[0, 23].cx[0, 2].rz(-0.1257824876894582)[2].cx[0, 2].cx[0, 3].rz(-0.07293454379292776)[3].cx[0, 3].cx[0, 4].rz(-0.40318991638194535)[4].cx[0, 4].cx[0, 5].rz(-0.003634982100447824)[5].cx[0, 5].cx[0, 6].rz(-0.002066455292214099)[6].cx[0, 6].cx[0, 7].rz(-0.15214581974048777)[7].cx[0, 7].cx[0, 8].rz(-0.3512290055579687)[8].cx[0, 8].cx[0, 9].rz(-0.06230367267563926)[9].cx[0, 9].rz(4.747859725642367)[0].cx[10, 20].rz(-0.2635470197511699)[20].cx[10, 20].cx[10, 21].rz(-0.123052065422037)[21].cx[10, 21].cx[10, 22].rz(-0.3287411516858876)[22].cx[10, 22].cx[10, 23].rz(-0.1588341623295799)[23].cx[10, 23].rz(2.285784915416882)[10].cx[11, 22].rz(-0.14482163182988403)[22].cx[11, 22].cx[11, 23].rz(-0.0027159243674769193)[23].cx[11, 23].rz(1.107426463865528)[11].rz(2.0574522582363484)[12].rz(2.2573429548446606)[13].rz(1.474647945062918)[14].rz(2.1529009811784254)[15].rz(1.971595119473143)[16].rz(2.3117126878171304)[17].rz(1.8933820902124527)[18].rz(2.4933258095721693)[19].cx[1, 10].rz(-0.06223201470354865)[10].cx[1, 10].cx[1, 11].rz(-0.019453687086773586)[11].cx[1, 11].cx[1, 12].rz(-0.058638278623238435)[12].cx[1, 12].cx[1, 13].rz(-0.05880975843123004)[13].cx[1, 13].cx[1, 14].rz(-0.0819955270855301)[14].cx[1, 14].cx[1, 15].rz(-0.32473951210293045)[15].cx[1, 15].cx[1, 16].rz(-0.3078218020896145)[16].cx[1, 16].cx[1, 17].rz(-0.2664412711428611)[17].cx[1, 17].cx[1, 18].rz(-0.015083278607085663)[18].cx[1, 18].cx[1, 19].rz(-0.20218958442764595)[19].cx[1, 19].cx[1, 20].rz(-0.12426355979348574)[20].cx[1, 20].cx[1, 21].rz(-0.02760435787394229)[21].cx[1, 21].cx[1, 22].rz(-0.40529352893868204)[22].cx[1, 22].cx[1, 23].rz(-0.3448215520079862)[23].cx[1, 23].cx[1, 2].rz(-0.35252273216752955)[2].cx[1, 2].cx[1, 3].rz(-0.11714576135045769)[3].cx[1, 3].cx[1, 4].rz(-0.3463130971929799)[4].cx[1, 4].cx[1, 5].rz(-0.19653524379076576)[5].cx[1, 5].cx[1, 6].rz(-0.2952167583295864)[6].cx[1, 6].cx[1, 7].rz(-0.3321072243097597)[7].cx[1, 7].cx[1, 8].rz(-0.3753487345613412)[8].cx[1, 8].cx[1, 9].rz(-0.26317337676617075)[9].cx[1, 9].rz(5.275943683213137)[1].rz(3.0133822270372836)[20].rz(2.4192839173169)[21].rz(3.213929844063916)[22].rz(2.031659212332938)[23].cx[2, 10].rz(-0.051202555411935365)[10].cx[2, 10].cx[2, 11].rz(-0.028068638483789737)[11].cx[2, 11].cx[2, 12].rz(-0.3605852676147352)[12].cx[2, 12].cx[2, 13].rz(-0.03949842404156904)[13].cx[2, 13].cx[2, 14].rz(-0.24716433885726138)[14].cx[2, 14].cx[2, 15].rz(-0.030822124113239417)[15].cx[2, 15].cx[2, 16].rz(-0.049887734414738545)[16].cx[2, 16].cx[2, 17].rz(-0.15217509221843878)[17].cx[2, 17].cx[2, 18].rz(-0.33442664348707907)[18].cx[2, 18].cx[2, 19].rz(-0.23086545741592776)[19].cx[2, 19].cx[2, 20].rz(-0.08003268174181838)[20].cx[2, 20].cx[2, 21].rz(-0.13701579667020344)[21].cx[2, 21].cx[2, 22].rz(-0.35552621963284553)[22].cx[2, 22].cx[2, 23].rz(-0.15175789217023194)[23].cx[2, 23].cx[2, 4].rz(-0.03994056271490246)[4].cx[2, 4].cx[2, 5].rz(-0.326480024924086)[5].cx[2, 5].cx[2, 6].rz(-0.10140808939114143)[6].cx[2, 6].cx[2, 7].rz(-0.11912659040031603)[7].cx[2, 7].cx[2, 8].rz(-0.28520821110508926)[8].cx[2, 8].cx[2, 9].rz(-0.2692795915561105)[9].cx[2, 9].rz(4.487676748870716)[2].cx[3, 10].rz(-0.3679482390648811)[10].cx[3, 10].cx[3, 11].rz(-0.10718745492985618)[11].cx[3, 11].cx[3, 12].rz(-0.25623208490632715)[12].cx[3, 12].cx[3, 13].rz(-0.3511511819281948)[13].cx[3, 13].cx[3, 14].rz(-0.10372122143450704)[14].cx[3, 14].cx[3, 15].rz(-0.37661091394364404)[15].cx[3, 15].cx[3, 16].rz(-0.29174119330850373)[16].cx[3, 16].cx[3, 17].rz(-0.10455551408681972)[17].cx[3, 17].cx[3, 18].rz(-0.09217828381997294)[18].cx[3, 18].cx[3, 19].rz(-0.40478851343105704)[19].cx[3, 19].cx[3, 20].rz(-0.15040201092117647)[20].cx[3, 20].cx[3, 21].rz(-0.23347091574176326)[21].cx[3, 21].cx[3, 22].rz(-0.29864993350166713)[22].cx[3, 22].cx[3, 23].rz(-0.346368111083378)[23].cx[3, 23].cx[3, 6].rz(-0.2550453987987411)[6].cx[3, 6].cx[3, 7].rz(-0.15021563864885618)[7].cx[3, 7].cx[3, 8].rz(-0.21842266793996448)[8].cx[3, 8].cx[3, 9].rz(-0.26282583831218737)[9].cx[3, 9].rz(4.912344672719293)[3].cx[4, 10].rz(-0.17785800883633315)[10].cx[4, 10].cx[4, 11].rz(-0.024357604549588786)[11].cx[4, 11].cx[4, 12].rz(-0.06920036741182811)[12].cx[4, 12].cx[4, 13].rz(-0.33461176660788117)[13].cx[4, 13].cx[4, 14].rz(-0.33233969250506)[14].cx[4, 14].cx[4, 15].rz(-0.0990383950400968)[15].cx[4, 15].cx[4, 16].rz(-0.20246844282981222)[16].cx[4, 16].cx[4, 17].rz(-0.21470180613055942)[17].cx[4, 17].cx[4, 18].rz(-0.28511981156431476)[18].cx[4, 18].cx[4, 19].rz(-0.4003159105637333)[19].cx[4, 19].cx[4, 20].rz(-0.31915987497563225)[20].cx[4, 20].cx[4, 21].rz(-0.1310461615292543)[21].cx[4, 21].cx[4, 22].rz(-0.21165688578115224)[22].cx[4, 22].cx[4, 23].rz(-0.13811846449742068)[23].cx[4, 23].cx[4, 8].rz(-0.3095976088214251)[8].cx[4, 8].cx[4, 9].rz(-0.2678029491900326)[9].cx[4, 9].rz(4.856214156232477)[4].cx[5, 10].rz(-0.006907931463051247)[10].cx[5, 10].cx[5, 11].rz(-0.2327771735802102)[11].cx[5, 11].cx[5, 12].rz(-0.22745073352837034)[12].cx[5, 12].cx[5, 13].rz(-0.10701115860174695)[13].cx[5, 13].cx[5, 14].rz(-0.036788311279215155)[14].cx[5, 14].cx[5, 15].rz(-0.025770890097375716)[15].cx[5, 15].cx[5, 16].rz(-0.27755589939701497)[16].cx[5, 16].cx[5, 17].rz(-0.2833517007200688)[17].cx[5, 17].cx[5, 18].rz(-0.14699285111338073)[18].cx[5, 18].cx[5, 19].rz(-0.15120673315443242)[19].cx[5, 19].cx[5, 20].rz(-0.236105212228142)[20].cx[5, 20].cx[5, 21].rz(-0.29124703859135875)[21].cx[5, 21].cx[5, 22].rz(-0.28401431821780765)[22].cx[5, 22].cx[5, 23].rz(-0.13190980913349526)[23].cx[5, 23].rz(3.5016088427776277)[5].cx[6, 12].rz(-0.28693553325342036)[12].cx[6, 12].cx[6, 13].rz(-0.26078086764819575)[13].cx[6, 13].cx[6, 14].rz(-0.39464234308471585)[14].cx[6, 14].cx[6, 15].rz(-0.3555172142919135)[15].cx[6, 15].cx[6, 16].rz(-0.2947360914135862)[16].cx[6, 16].cx[6, 17].rz(-0.11920906608925005)[17].cx[6, 17].cx[6, 18].rz(-0.030219591684900373)[18].cx[6, 18].cx[6, 19].rz(-0.01272606051189455)[19].cx[6, 19].cx[6, 20].rz(-0.22895589145853723)[20].cx[6, 20].cx[6, 21].rz(-0.23998582311455935)[21].cx[6, 21].cx[6, 22].rz(-0.3441550206817215)[22].cx[6, 22].cx[6, 23].rz(-0.2909882473945516)[23].cx[6, 23].rz(3.923622113862552)[6].cx[7, 14].rz(-0.11709465549427286)[14].cx[7, 14].cx[7, 15].rz(-0.2633047760919978)[15].cx[7, 15].cx[7, 16].rz(-0.16308442830980488)[16].cx[7, 16].cx[7, 17].rz(-0.14188281682325857)[17].cx[7, 17].cx[7, 18].rz(-0.20568667314503103)[18].cx[7, 18].cx[7, 19].rz(-0.29603107777843063)[19].cx[7, 19].cx[7, 20].rz(-0.25759445660741903)[20].cx[7, 20].cx[7, 21].rz(-0.0303884113134687)[21].cx[7, 21].cx[7, 22].rz(-0.22890337569000085)[22].cx[7, 22].cx[7, 23].rz(-0.18644876403157637)[23].cx[7, 23].rz(3.339037141061303)[7].cx[8, 16].rz(-0.20615896989569826)[16].cx[8, 16].cx[8, 17].rz(-0.2936732212131871)[17].cx[8, 17].cx[8, 18].rz(-0.16834991610946293)[18].cx[8, 18].cx[8, 19].rz(-0.38341022143040826)[19].cx[8, 19].cx[8, 20].rz(-0.20339059880839744)[20].cx[8, 20].cx[8, 21].rz(-0.09445397820473803)[21].cx[8, 21].cx[8, 22].rz(-0.24896321484550582)[22].cx[8, 22].cx[8, 23].rz(-0.058044075893996995)[23].cx[8, 23].rz(3.2796469432170445)[8].cx[9, 18].rz(-0.3019180763709021)[18].cx[9, 18].cx[9, 19].rz(-0.05573821038354159)[19].cx[9, 19].cx[9, 20].rz(-0.3619196136245115)[20].cx[9, 20].cx[9, 21].rz(-0.1354145345547299)[21].cx[9, 21].cx[9, 22].rz(-0.002041485292992086)[22].cx[9, 22].cx[9, 23].rz(-0.003235035579302517)[23].cx[9, 23].rz(2.5993613341576767)[9].rx(0.8519668989451595)[:]

こちらの回路を使って純粋に計算してみます。ビルトインのCPUはこちら。numpyを使っています。

まずはCPU版。

import time

start = time.time()
c.run(backend="numpy")
print(time.time() - start)

GPU版のコードはこちら。

import time

start = time.time()
c.run(backend="cusv")
print(time.time() - start)

マシンごとに見ます。

blueqat cloud V100のCPU

running...

blueqat cloud V100のGPU

14.311643600463867

Google ColabのCPU

470.4538240432739

Gooble ColabのGPU NVIDIA Tesla T4

4.915799856185913

blueqat cloud A100のCPU

293.0213541984558

blueqat cloud A100 80GのGPU

2.413858652114868

Google ColabのプレミアムプランのGPU NVIDIA A100 40G

2.0114381313323975

やっぱりA100は早いですが、このリソースの違いはメモリやCPUなどでしょうか。。。ちょっと悔しいのでスペックアップを誓います。

バーチャートにしてみます。

赤CPU、青GPU

GPUのみだと、

V100が遅いのがちょっと悔しいですね。結構リソースを犠牲にしているのでメモリやCPUなども調整したいと思います。

これを見る限り、A100くらいになると量子回路のサイズをもちょっと大きくしないとオーバーヘッドが大きそうです。

© 2025, blueqat Inc. All rights reserved