Vi introducerar Strawberry Fields, en öppen kvantprogrammeringsarkitektur för ljusbaserade kvantdatorer. Byggt i Python, Strawberry Fields är ett fullstack bibliotek för design, simulering, optimering och kvant maskininlärning av kontinuerliga variabla kretsar. Plattformen består av tre huvudkomponenter: (i) ett API för kvantprogrammering baserat på ett lättanvänd språk som heter Blackbird; (ii) en svit med tre virtuella kvantdatorbackends, inbyggda i NumPy och Tensorflow, varje målinriktning specialiserade användningsområden; och (iii) en motor som kan sammanställa Blackbird program på olika backends, inklusive de tre inbyggda simulatorer, och - inom en nära framtid - fotoniska kvantinformation processorer. Biblioteket innehåller också exempel på flera paradigmasalgoritmer, inklusive teleportering, (gaussisk) bosonprovtagning, momentant kvantpolynom, Hamiltonsimulering och variationsrik kvantkretsoptimering. Den decennier långa globala strävan att bygga praktiska kvantdatorer genomgår för närvarande en kritisk period. Under de närmaste åren kommer ett antal olika kvantenheter att bli tillgängliga för allmänheten. Medan feltoleranta kvantdatorer en dag kommer att ge betydande beräkningshastigheter för problem som factoring [1], sök [2], eller linjär algebra [3], nära-term kvantum enheter kommer att vara bullriga, ungefärliga, och sub-universal [4]. Ändå förväntas dessa framväxande kvantprocessorer vara tillräckligt starka för att visa en beräkningsfördel framför klassiska datorer för vissa problem, en prestation känd som kvantsuveränitet. När vi närmar oss denna milstolpe pågår redan ett arbete med att undersöka hur sådana kvantprocessorer bäst kan utnyttjas. Populär teknik inkluderar variationsrika kvanteigensolvers [5, 6], kvant approximativa optimeringsalgoritmer [7, 8], provtagning från beräkningsmässigt svåra sannolikhetsfördelningar [9] [10] [11] [12] [13] [15] [16] [17], och kvantangning [18, 19]. I synnerhet kan dessa metoder tillämpas för att ta itu med viktiga praktiska problem i kemi [20] [21] [22], finansiering [24], optimering [25, 26] och maskininlärning [27] [28] [29] [30] [31] [32] [33] [34]. Dessa kända tillämpningar är mycket lovande, men det är kanske de okända framtida tillämpningarna av kvantdatorer som är mest lockande. Vi kanske inte vet de bästa tillämpningarna av kvantdatorer förrän dessa enheter blir tillgängliga mer allmänt för forskare, studenter, entreprenörer och programmerare över hela världen. Därför har ett nytt kvantprogramsystem nyligen börjat utvecklas [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48]. Ett förhärskande tema för dessa programvaruinsatser är dock att rikta in sig på qubitbaserade kvantenheter. I verkligheten finns det flera konkurrerande modeller av kvantdatorer som är likvärdiga i beräkningstermer, men som begreppsmässigt är ganska distinkta. En framträdande metod är den kontinuerliga variabeln (CV) modell av kvantdator [49] [50] [51]. I CV-modellen är den grundläggande informationsbehandlingsenheten ett oändligt stort bosoniskt läge, vilket gör den särskilt lämplig för implementeringar och tillämpningar baserade på ljus. CV-modellen behåller beräkningskraften hos qubit-modellen [52], samtidigt som den erbjuder ett antal unika funktioner. CV-modellen är till exempel en naturlig passform för simulering av bosoniska system (elektromagnetiska fält, instängda atomer, harmoniska oscillatorer, Bose-Einstein kondensater, fononer eller optomekaniska resonatorer) och för inställningar där kontinuerliga kvantoperatörer - såsom position och momentum - finns. Även inom klassisk databehandling har de senaste framstegen från djupt lärande visat kraften och flexibiliteten i en kontinuerlig representation av beräkningar [53, 54]. Här introducerar vi Strawberry Fields 1, en öppen programvaruarkitektur för fotonisk kvantdator. Strawberry Fields är en fullstack kvant programvara plattform, implementerad i Python, särskilt inriktad på CV-modellen. Dess huvudelement är ett nytt kvantprogramspråk som heter Blackbird. För att lägga grunden för framtida fotonisk kvantdator hårdvara, Strawberry Fields innehåller också en svit av tre CV kvantsimulatorbackends implementeras med Numpy 2 ulation med två distinkta representationer, medan Tensorflow backend ger ytterligare beräknings-, optimerings- och maskininlärning funktioner. Strawberry Fields levereras med en inbyggd motor för att konvertera Blackbird program för att köra på någon av simulator backends eller, när de är tillgängliga, på fotoniska kvantdatorer. För att följa med biblioteket finns en onlinetjänst för interaktiv prospektering och simulering av CV-kretsar på jordgubbsfields.ai. Återstoden av denna vitbok är uppbyggd enligt följande. Innan vi presenterar Strawberry Fields ger vi först en kort översikt över de viktigaste ingredienserna för CV kvantberäkning, särskilt de viktigaste tillstånden, grindarna och mätningarna. Vi introducerar sedan Strawberry Fields arkitektur i sin helhet, presenterar Blackbird användarspråk, beskriver hur man använder biblioteket för numeriska simulering, optimering och kvant maskininlärning. Slutligen diskuterar vi de tre inbyggda simulatorerna och de interna representationer som de använder. I tilläggen ger vi ytterligare matematiska och programvarudetaljer och ger en fullständig exempelkod för ett antal viktiga CV kvantdatauppgifter. Många fysiska system i naturen är i sig kontinuerliga, och ljuset är ett förebildligt exempel. Sådana system befinner sig i ett oändligt-dimensionellt Hilbert utrymme, erbjuder ett paradigm för kvantberäkning som skiljer sig från den diskreta qubit modellen. Denna kontinuerlig-variabla modell tar sitt namn från det faktum att de kvant operatorer som ligger bakom modellen har kontinuerliga spektra. Det är möjligt att inbädda qubit-baserade beräkningar i CV-bilden [57], så CV-modellen är lika kraftfull som sina qubit motsvarigheter. En jämförelse på hög nivå av CV quantum beräkning med qubit modellen visas i tabell I. I återstoden av detta avsnitt kommer vi att ge en grundläggande presentation av de viktigaste delarna i CV-modellen. En mer detaljerad teknisk översikt finns i bilaga A. Läsare med CV quantum computing kan säkert hoppa till nästa avsnitt. Det mest elementära CV-systemet är den boroniska harmoniska oscillatorn, definierad via de kanoniska mode operatorernaâ och en †. Dessa uppfyller den välkända pendlingsrelationen Det är också vanligt att arbeta med kvadraturoperatörerna (även kallad position & momentum oper- där [x,p] = i. Vi kan föreställa oss en fast harmonisk oscillator-läge (säg, inom en optisk fiber eller en vågguide på ett fotoniskt chip) som en enda "tråd" i en kvantkrets. Dessa qumodes är de grundläggande informationsbärande enheterna för CV kvantdatorer. Genom att kombinera flera qumodeseach med motsvarande operatorsâ i och † i -och interagera dem via sekvenser av lämpliga kvantportar, kan vi genomföra en allmän CV kvantberäkning. Dikotomin mellan qubit- och CV-system är kanske mest uppenbar i grundutvidgningen av kvanttillstånd: För qubits använder vi en diskret uppsättning koefficienter; för CV-system kan vi ha en kontinuum. Staterna är eigenstates av dex quadrature,x  påx = x. Dessa kvadraturtillstånd är speciella fall av en mer allmän familj 2 Det är vanligt att föreställa sig  på h som en (dimensionlös) skalningsparameter för dex andp operatörer snarare än en fysisk konstant. Det finns dock flera konventioner för skalvärdet i vanlig användning [58]. Dessa självanslutna operatörer står i proportion till de hermitiska och antihermitiska delarna av operatören. Strawberry Fields gör det möjligt för användaren att ange detta värde, med den förvalda  till h = 2. av CV-tillstånd, Gaussiska stater, som vi nu introducerar. Vår utgångspunkt är vakuumtillståndet. Andra stater kan skapas genom att utveckla vakuumtillståndet enligt där H är en bosonisk Hamiltonian (dvs. en funktion av operatorernaâ i ochâ † i ) och t är evolutionstiden. Stater där Hamiltonian H är som mest kvadratisk i operatorernaâ i ochâ † i (likvärdigt, inx i ochp i ) kallas Gaussian. För en enda qumode, Gaussiska tillstånd parameteriseras av två kontinuerliga komplexa variabler: en deplacement parameter α  på och en klämmande parameter z  på (ofta uttryckt som z = r exp(i)), med r ≥ 0). Gaussiska stater är så namngivna eftersom vi kan identifiera varje Gaussian tillstånd med en motsvarande Gaussian distribution. För enstaka qumodes sker identifieringen genom dess förskjutnings- och klämmande parametrar. Förskjutningen ger distributionens mittpunkt, medan klämman bestämmer fördelningens varians och rotation (se bild).  1 )............................................................................................................... Multimode Gaussian stater, å andra sidan, är parameteriserade av en vektor av deplacementsr och en covariance matris V. Många viktiga rena tillstånd i CV-modellen är specialfall av de rena Gaussiska tillstånden; se tabell II formen medan (oförorenade) pressade stater bara har ens antal tillstånd i sin expansion: Blandade Gaussiska stater är också viktiga i CV-bilden, till exempel termiska tillstånd som parameteriseras via medelfoton nummer n := Tr (ρ(n)n). Med utgångspunkt från detta tillstånd, kan vi överväga en blandning-state-skapande process som liknar Eq. (5), nämligen analogt med rena tillstånd, genom att tillämpa Hamiltonianer av andra ordningen (eller lägre) på termiska tillstånd, genererar vi familjen av Gaussiska blandstater. Enhetliga operationer kan associeras med en genererande Hamiltonian H via receptet (jfr. Ekar. (5) & (9)) 4 För enkelhetens skull klassificerar vi enheter efter graden av deras generator. En CV kvantdator sägs vara universell om den kan implementera, godtycklig precision och med ett begränsat antal steg, varje enhet som är polynom i modeoperatörerna [49]. Vi kan bygga en multimode enhet genom att tillämpa en sekvens av grindar från en universell port uppsättning, som var och en fungerar endast på ett eller två lägen. Vi fokuserar på en universell uppsättning gjord av följande två undergrupper: Gaussiska portar: Enstaka och två-stegs grindar som är som mest kvadratiska i läget operatörer, t.ex., Deplacement, Rotation, Squeezing, och Beamsplitter portar. En enstegsgrind som är grad 3 eller högre, t.ex. Cubic-fasgrinden. Ett antal grundläggande CV-grindar presenteras i tabell III. Många av de Gaussiska staterna från föregående avsnitt är anslutna till en motsvarande Gaussian grind. Alla multimode Gaussiska grindar kan implementeras genom en lämplig kombination av Förskjutning, Rotation, Squeezing och Beamsplitter Gates [51], vilket gör dessa portar tillräckliga för att bygga alla fyrhjulingar. Kubikfasporten presenteras som en exemplarisk icke-gaussisk grind, men alla andra icke-gaussiska grindar kan också användas för att uppnå universalitet. Ett antal andra användbara CV-grindar listas i bilaga B. Enhetlig symbol Som med CV-tillstånd och grindar kan vi skilja mellan Gaussiska och icke-gaussiska mätningar. Den Gaussiska klassen består av två (kontinuerliga) typer: homodyne och heterodyne mätningar, medan den viktigaste icke-gaussiska mätningen är fotonräkning. Dessa sammanfattas i tabell IV. Idealisk homodyne detektion är en projektiv mätning på eigenstates av quadrature operatorx. Dessa tillstånd bildar en kontinuum, så homodyne mätningar är i sig kontinuerliga, returvärden x. Mer allmänt kan vi överväga projektiv mätning på mätvärdena eigenstates x en Hermitian Operator Detta är likvärdigt med att rotera staten medurs med  och utföra anx-homodyne mätning. Om vi har en multimode Gaussian tillstånd och vi utför homodyne mätning på en av de lägen, det villkorliga tillståndet för de omätta lägen förblir Gaussian. Medan homodyne detektion är en mätning av x, heterodyne detektion kan ses som en samtidig mätning av både x och p. Eftersom dessa operatörer inte pendlar kan de inte mätas samtidigt utan viss osäkerhet. På motsvarande sätt kan vi föreställa oss heterodynemätning som projicering på de sammanhängande tillstånden, med mätoperatörerna 1 π.  och................................................................................................. Eftersom de sammanhängande tillstånden inte är ortogonala finns det en motsvarande brist på skärpa i mätningarna. Om vi utför heterodynemätning på ett läge av ett multimode tillstånd, det villkorliga tillståndet på de återstående lägen förblir Gaussian. Fotonräkning (även känd som foton-numrering upplösning mätning), är en kompletterande mätmetod till "-dyne" mätningar, avslöjar partikelliknande, snarare än vågliknande, karaktär qumodes. Denna mätning projekt på antalet eigenstates  på, returnera icke-negativa heltal värden n. Med undantag för resultatet n = 0, en fotonräkning mätning på ett enda läge av ett multimode Gaussian tillstånd kommer att orsaka de återstående lägen att bli icke-gaussian. Således kan fotonräkning användas som en ingrediens för att genomföra icke-gaussiska grindar. En relaterad process är fotodetektion, där en detektor endast löser vakuumtillståndet från icke-vakuumtillstånd. Denna process har bara två mätoperatörer, nämligen 0-0 och - 0-0-0.  Strawberry Fields bibliotek har utformats med flera viktiga mål i åtanke. Framför allt är det en standardbärare för CV-modellen, som lägger grunden för framtida fotoniska kvantdatorer. Dessutom är Strawberry Fields utformad för att vara enkel att använda, vilket ger ingångar för så många användare som möjligt. Slutligen är det viktigt att Strawberry Fields ger kraftfulla verktyg för att enkelt utforska många olika användningsfall och applikationer, eftersom de potentiella applikationerna av quantumdatorer håller på att utarbetas. Strawberry Fields har implementerats i Python, ett modernt språk med en mild inlärningskurva som redan är bekant för många programmerare och forskare. De tillhörande kvantsimulatorbackends är uppbyggda på de allmänt använda Python-paketen NumPy och Tensorflow. All jordgubbsfältskod är öppen källkod. Strawberry Fields kan nås programmatiskt som ett Python-paket, eller via ett webbläsarbaserat gränssnitt för att designa kvantkretsar. En bild av Strawberry Fields nyckelelement och deras inbördes beroende presenteras i bild. 2............................................................... Konceptuellt är programvaru stacken uppdelad i två huvuddelar: en användarvänd frontend lager och en lägre nivå backends komponent. Frontend omfattar Strawberry Fields Python API och Blackbird kvantprogrammeringsspråk. Dessa element ger åtkomstpunkter för användare att designa kvantkretsar. Dessa kretsar kopplas sedan till ett gränssnitt via en kvantkompilatormotor. För ett gränssnitt kan motorn för närvarande rikta in sig på en av tre kvantdatorsimulatorer. När CV kvantprocessorer blir tillgängliga inom en snar framtid, kommer motorn också att bygga och köra kretsar på dessa enheter. Tillämpningar, såsom Strawberry Fields Interactive hemsida, kan byggas genom att utnyttja frontend API. I återstoden av detta avsnitt kommer de viktigaste delarna av jordgubbsfälten att presenteras mer i detalj. Genom att gå igenom en rad exempel visar vi hur CV kvantberäkningar kan definieras med hjälp av Blackbird-språket, sedan kompileras och körs på ett kvantdatorgränssnitt. Vi beskriver också hur man använder jordgubbsfält för optimering och maskininlärning på kvantkretsar. Slutligen diskuterar vi sviten av kvantdatorsimulatorer som ingår i jordgubbsfälten. Allteftersom klassiska datorer har blivit allt kraftfullare, har de språk som används för att programmera dem också genomgått avsevärda paradigmatiska förändringar. Maskinkod gav vika för mänskliga läsbara monteringsspråk, följt av högre nivå procedur- och objektorienterade språk. För varje generation har trenden gått mot högre abstraktionsnivåer, och programmeraren har mer och mer separerats från detaljerna i den faktiska datorhårdvaran. Kvantdatorer befinner sig fortfarande i ett tidigt utvecklingsstadium, så även om vi kan föreställa oss hur kvantprogrammering på högre nivå kan se ut, måste vi på kort sikt först bygga språk som är begreppsmässigt närmare kvanthårdvaran. Blackbird är ett kvantsammansatt språk, med operationer som matchar de grundläggande CV-tillstånd, grindar och mätningar som beskrivs i föregående avsnitt. Vi har byggt en implementering av Blackbird med Python 3 som inbäddningsspråk. Den abstrakta syntaxen håller en nära koppling mellan kod och kvantoperationer som de genomför; denna syntax är modellerad efter projekt Q [42], men specialiserad på CV-inställningen. Vi kommer att introducera Blackbirds element genom en rad grundläggande exempel och diskutera mer tekniska aspekter när de uppstår. Kvantberäkningarna består av fyra huvudingredienser: tillståndsförberedelser, tillämpning av grindar, genomförande av mea-6-säkerheter och tillägg/byte av delsystem. I Blackbird betraktas alla dessa som operationer och har samma grundläggande syntax. I följande kodexempel använder vi variabeln q för en uppsättning qumodes (mer specifikt ett kvantregister), vars detaljer skjuts upp till nästa avsnitt. Vår konceptuellt skiljer den vertikala barsymbolen'på' operationer - liknande tillståndsförberedelse - från de register som de agerar på. Observera att vi kan använda Operations inline, eller bygga dem separat och återanvända dem flera gånger. Efter att ha skapat tillstånd kommer vi att vilja omvandla dessa med hjälp av kvantportar. Blackbird stöder alla de portar som anges i föregående avsnitt samt ett antal sammansatta portar, som var och en kan brytas ner med hjälp av de universella portarna. De kompositportar som stöds är: kontrollerad X (CXgate), kontrollerad Z (CZgate), kvadratisk fas (Pgate) och tvåstegs klämma (S2gate Mätningar har flera effekter. För det första placeras det numeriska mätresultatet i ett klassiskt register. Dessutom beräknas tillståndet för alla återstående qumodes till det (normaliserade) villkorliga tillståndet för det mätvärdet. Slutligen återställs tillståndet för det uppmätta qumode till vakuumtillståndet. Detta är det typiska beteendet hos fotonisk hårdvara, där mätningarna absorberar all energi från det uppmätta qumode. Inom Python, Blackbird program hanteras av en eng.run (). Vi kommer att diskutera jordgubbsfältsbackends vidare i ett senare avsnitt. När en jordgubbsmotor konstrueras måste användaren ange antalet qumode-delsystem till att börja med. Detta nummer krävs för initiering av motorn, men kan ändras inom en beräkning (t.ex. när tillfälliga ancillalägen används). Qumodes kan läggas till eller tas bort med hjälp av New and Del Operations. En Motor upprätthåller en unik numerisk indexering för kvantregistren baserat på den ordning de tillsattes. När ett delsystem stryks från kretsen kan inga ytterligare grindar påverka registret. I kvantalgoritmer är det vanligt att behandla ett mätresultat klassiskt och använda det postprocessade värdet som parameter för vidare operationer i en krets. Jordgubbsfält ger den konverterade inredningsarkitekten att omvandla en användarspecificerad numerisk funktion till en som fungerar på register. 1 @sf.convert 2 def neg(x): 5 # En Blackbird beräkning med klassisk 6 # databehandling 7 med eng: 10 eng.run ("gaussian") Kodblock 7: Symboliskt bearbeta ett uppmätt värde innan du använder det. Mätningen Operations in Strawberry Fields är stokastiska i naturen, med resultat som bestäms av någon underliggande kvantsannolikhet fördelning. Ofta är det praktiskt att välja specifika värden för dessa mätningar snarare än att ta prover på dem. Vi kanske till exempel vill utforska det villkorade tillstånd som skapas av ett specifikt värde, bestämma de mätberoende korrigeringar vi behöver göra i en teleporteringskrets, eller till och med utforma en algoritm som i sig innehåller postval. Denna funktionalitet stöds i Strawberry Fields genom det op-8 nationella nyckelord argumentet väljer, som kan levereras för alla mätningar Operation. Mätresultatet kommer sedan att returnera exakt detta värde, medan de återstående lägen kommer att projiceras i det villkorade tillstånd som motsvarar detta värde 3. 1 med eng: Kodblock 8: Välja ett specifikt önskat mätresultat. Jordgubbsfält kan utföra kvantkretssimuleringar med hjälp av både numeriska och symboliska representationer. Numerisk beräkning är förvalt driftläge och stöds av alla tre tillhandahållna gränssnitt. Symbolisk beräkning är endast aktiverad för Tensorflow- gränssnittet. I det här avsnittet beskriver vi de viktigaste Tensorflow-funktionerna tillgängliga via Strawberry Fields gränssnitt. Mer information om motsvarande Tensorflow-backend diskuteras i nästa avsnitt. Tensorflöde [56] modellerar beräkningar abstrakt med hjälp av en beräkningskurva, där enskilda operationer representeras som noder och deras beroenden med riktade kanter. Denna synpunkt skiljer den symboliska representationen av en beräkning från dess numeriska utvärdering, och gör optimering och maskininlärning mer möjligt. Utöver detta tillhandahåller Tensorflow ett antal avancerade funktioner, inklusive automatisk gradientberäkning, GPU-användning, inbyggda optimeringsalgoritmer och olika andra verktyg för maskininlärning. Observera att termen 'kvantmaskininlärning' kommer att användas här i hybridbetydelse, dvs. tillämpa konventionella maskininlärningsmetoder på kvantsystem. För att bygga en Tensorflow beräkningskurva med Strawberry Fields, vi omedelbart en Motor, deklarera en krets i Blackbird kod, sedan köra eng.run på Tensorflow ("tf") backend. För att hålla den underliggande simuleringen helt symbolisk, måste det extra argumentet eval=False ges. 1 # Skapa motor och kör symbolisk beräkning 2 importera jordgubbsfält som sf 3 från jordgubbsfält.ops import * 4 import tensorflow som tf 5 6 eng, q = sf.Engine(num_subsystems=1) 7 med eng: 3 Användare bör vara noga med att undvika post-selection på mätvärden som inte har någon sannolikhet att inträffa med tanke på nuvarande kretstillstånd. I detta fall definieras inte det förväntade beteendet hos ett gränssnitt. Kodblock 12: Behandling av ett mätresultat med hjälp av ett neuralt nätverk. Tensorflow-backend stöder dessutom användningen av batched bearbetning, så att många utvärderingar av en kvantkrets kan beräknas parallellt. Scalars sänds automatiskt till angiven satsstorlek. Slutligen kan vi enkelt köra kretssimuleringar på specialhårdvara som GPU:er eller TPU:er.  Det yttersta målet är att Blackbird-programmen ska genomföras på fotoniska kvantdatorer. För att lägga grunden för dessa nya enheter kommer Strawberry Fields med en svit av tre CV kvantdatorsimulatorer speciellt utformade för CV-modellen. Dessa simulatorer riktar sig till olika användningsfall och stöder olika funktioner. Till exempel omfattar många viktiga algoritmer i CV formalism endast Gaussiska stater, operationer och mätningar. Vi kan utnyttja denna struktur för att mer effektivt simulera sådana beräkningar. Andra kretsar har i sig icke-gaussiska element till dem; för dessa, Fock basen ger standardbeskrivningen. Dessa representationer finns i Strawberry Fields i Gaussian backend och Fock backend, respektive. Den tredje inbyggda backend är Tensorflow-backend. Även med hjälp av Fock representation, är detta gränssnitt främst inriktad mot optimering och maskininlärning applikationer. De flesta Blackbird-operationer stöds av alla tre backends. En liten delmängd stöds dock inte enhetligt på grund av matematisk inkompatibilitet. Till exempel stöder Gaussian backend i allmänhet inte nonGaussian grindar eller förberedelse/mätning av Fock stater. Ibland är det också användbart att arbeta med ett gränssnitt direkt. För att tillåta detta, ger Strawberry Fields ett gränssnitt API, vilket ger tillgång till ytterligare metoder och egenskaper som inte är en del av den strömlinjeformade frontend API. En fristående backend kan skapas i jordgubbsfält med jordgubbsfält.backend.load_backend(namn) där namnet är en av "gaussian", "fock", eller "tf" (för jämförelse, backend i samband med en Motor eng är tillgänglig via eng.backend). Tre viktiga gränssnittsmetoder, gemensamma för alla simulatorer, är start_krets, återställning och tillstånd. Det första kommandot direktierar kretssimuleringen, den andra re-10 ställer in simuleringen tillbaka till ett initialt vakuumtillstånd, rensar alla tidigare operationer, och den tredje returnerar en klass som inkapslar simulatorns aktuella kvanttillstånd. Förutom att innehålla numeriska (eller symboliska) tillståndsdata innehåller statsklasser också ett antal användbara metoder och attribut för att ytterligare utforska kvanttillståndet, såsom trohet, medelvärde_foton eller perukner. Som en bekvämlighet för användaren kommer alla simuleringar som utförs via eng.run att returnera en statsklass som representerar det slutliga kretstillståndet (se bilaga C för exempel). Detta gränssnitt, som är skrivet i NumPy, använder den symmetriska formalismen för att representera CV-system. På en hög nivå spårar denna representation kvanttillståndet i ett N-läge kvantsystem med hjälp av två Gaussiska komponenter: en 2N-dimensionell förskjutningsvektor och en 2N × 2N-dimensionell kovariansmatris V (en djupare teknisk översikt finns i tillägg A). Efter att vi har skapat en Gaussian stat (antingen via stat = eng.run(backend="gaussian") eller genom att direkt kalla den statliga metoden för en Gaussian backend), kan vi accesser och V via state.means och state.cov, respektive. Andra användbara Gaussian state metoder är förskjutning och klämma, som returnerar Gaussian parametrar associerade till den underliggande staten. Skalan av den symmetriska representationen med antalet lägen är O(N 2 ). Å ena sidan är detta ganska kraftfullt. Det gör det möjligt för oss att effektivt simulera alla beräkningar som är helt Gaussian. Å andra sidan är formalismen inte tillräckligt uttrycksfull för att simulera mer allmänna kvantberäkningar. Endast ett litet antal icke-gaussiska metoder finns tillgängliga för detta gränssnitt. Dessa är hjälpmetoder där vi extraherar en del icke-gaussisk information från ett Gaussiskt tillstånd, men inte uppdatera tillståndet i kretsen. En sådan metod är fock_prob, som genomförs med hjälp av en optimerad - ännu exponentiellt skalalgoritm. Denna metod möjliggör simulering av Gaussian boson sampling algoritm [10] med hjälp av Gaussian backend; se tillägg C för ett komplett kodexempel. Detta gränssnitt, även skrivet i NumPy, använder en fundamentalt annorlunda beskrivning för qumodes än Gaussian representation. Som diskuteras i de inledande avsnitten kodar Fock-representationen kvantberäkningen i ett oändligt oändligt dimensionellt Hilbert-utrymme. Denna representation är trogen, vilket möjliggör en exakt beskrivning av CV-system, särskilt icke-gaussiska kretsar. Ändå simulerar oändliga-dimensionella system leder till vissa beräkningsavsättningar som inte är närvarande för qubit simulatorer. Viktigast av allt, vi inför en cutoff dimension D för simuleringar (väljs av användaren), så Fock-gränssnittet täcker endast en begränsad uppsättning av taltillstånd {..,.,..D − 1 till} för varje läge. Storleken på simulerade kvantsystem beror alltså på både antalet delsystem N och cutoff, som är O(D N ). Vi jämför detta med qubit system, där basen är fast, dvs., O(2 N ). Medan dessa skalningar är båda exponentiella, i praktiken simulerar qumode system för D > 2 är mer computationally krävande än qubits. Detta beror på att de (trunkerade) qumode delsystemen har en högre dimension och därmed koda mer information än deras qubit motsvarigheter. Fysiskt är införandet av en brytpunkt en rimlig strategi eftersom högre foton-antal tillstånd måste ha högre energi och i praktiken quantum-optiska system kommer att ha avgränsad energi (t.ex., begränsas av kraften i en laser). Å andra sidan, det finns säkert stater som lätt kan förberedas i labbet, men skulle inte passa exakt på simulatorn. Därför måste man vara försiktig med att göra en avvägning mellan det numeriska brytvärdet, antalet lägen och strömkretsens energiskala. Om energiskalan är tillräckligt låg att alla tillstånd passar inom den angivna cutoff, då simuleringar med Fock och Gaussian backends kommer att vara i numerisk överenskommelse. Liksom Gaussian backend, har Fock backend en tillståndsmetod som inkapslar det numeriska tillståndet, samtidigt som det ger ett antal metoder och attribut som är specifika för Fock representation (såsom ket, spår, och all_fock_probs.  Den andra inbyggda backend för jordgubbsfält kodas med hjälp av Tensorflow. Som en simulator använder den samma interna representation som Fock-backend (Fock bas, ändlig cutoff, ren vs. blandade tillstånd representationer, etc.) och har samma metoder. Det kan fungera som en numerisk simulator liknande de andra backends. Dess huvudsakliga syfte är dock att utnyttja de många kraftfulla verktyg som tillhandahålls av Tensorflow för att möjliggöra optimering och maskininlärning på kvantkretsar. Mycket av denna funktionalitet presenterades i föregående avsnitt, så vi kommer inte att upprepa det här. Liksom de andra simulatorerna kan användare fråga Tensorflow Vi har infört Strawberry Fields, en mångfacetterad mjukvaruplattform för kontinuerlig-variabel kvantdator. De viktigaste komponenterna i detta bibliotek - ett anpassat kvantprogrammeringsspråk (Blackbird), en kompilatormotor, och en svit av kvantsimulatorer som riktar sig till olika tillämpningar - har presenterats i detalj. Ytterligare information finns i både tilläggen och jordgubbsfältens onlinedokumentation. Scenen är nu inställd på att det bredare samhället ska använda jordgubbsfält för prospektering, forskning och utveckling av nya kvantalgoritmer, specialiserade kretsar och maskininlärningsmodeller. Vi förutser skapandet av ytterligare mjukvaruapplikationer och bakgrundsmoduler för Strawberry Fields-plattformen (utvecklad både internt och externt), vilket ger avancerad funktionalitet och applikationer för kvantdator- och kvantmaskininlärning.
Strawberry Fields REF är en Python-baserad kvantprogrammeringsram som baseras på den "kontinuerliga variabeln" (CV) modellen för beräkning.
Strawberry Fields: A Software Platform for Photonic Quantum Computing
{'venue': 'Quantum 3, 129 (2019)', 'journal': None, 'mag_field_of_study': ['Physics', 'Mathematics']}