Tipi di profili di destinazione in Azure Quantum

Questo articolo illustra il diverso tipo di tipi di profilo disponibili nei provider di target calcolo quantistici in Azure Quantum. In questo momento, a causa della fase di sviluppo iniziale del campo, i dispositivi quantistici hanno alcune limitazioni e requisiti per i programmi che vengono eseguiti su di essi.

Unità di elaborazione quantistica (QPU): profili diversi e limitazioni

Un'unità di elaborazione quantistica (QPU) è un processore fisico o simulato che contiene un numero di qubit interconnessi che possono essere manipolati per calcolare gli algoritmi quantistici. È il componente centrale di un computer quantistico o di un simulatore quantistico.

I dispositivi quantistici sono ancora una tecnologia emergente e non tutti possono eseguire tutti i codici Q#. Di conseguenza, è necessario tenere presenti alcune restrizioni durante lo sviluppo di programmi per diversi targets. Attualmente, Azure Quantum e QDK gestiscono tre diversi profili per le unità di elaborazione quantistica:

  • Full: questo profilo può eseguire qualsiasi programma Q# entro i limiti di memoria per i simulatori o il numero di qubit per i computer quantistici fisici.
  • No Control Flow: questo profilo può eseguire qualsiasi programma Q# che non richiede l'uso dei risultati dalle misurazioni qubit per controllare il flusso del programma. All'interno di un programma targetQ# ed per questo tipo di QPU, i valori di tipo Result non supportano il confronto tra uguaglianza.
  • Basic Measurement Feedback: questo profilo ha una capacità limitata di usare i risultati delle misurazioni qubit per controllare il flusso del programma. All'interno di un programma targetQ# ed per questo tipo di QPU, è possibile confrontare i valori di tipo Result come parte delle condizioni all'interno if delle istruzioni nelle operazioni, consentendo la misurazione del circuito intermedio. I blocchi condizionali corrispondenti potrebbero non contenere istruzioni return o set.

Creare ed eseguire applicazioni per Full il profilo targets

Full profile targets può eseguire qualsiasi programma Q#, ovvero è possibile scrivere programmi senza restrizioni di funzionalità. Azure Quantum non fornisce target ancora alcun profilo.

Creare ed eseguire applicazioni per No Control Flow il profilo targets

No Control Flow profile targets può eseguire un'ampia gamma di applicazioni Q# con il vincolo che non possono usare i risultati dalle misurazioni qubit per controllare il flusso del programma. In particolare, i valori di tipo Result non supportano il confronto di uguaglianza.

Ad esempio, questa operazione non può essere eseguita in un No Control Flowtargetoggetto :

    operation SetQubitState(desired : Result, q : Qubit) : Result {
        if (desired != M(q)) {
            X(q);
        }
    }

Il tentativo di eseguire questa operazione in un No Control Flowtarget errore avrà esito negativo perché valuta un confronto tra due risultati (desired != M(q)) per controllare il flusso di calcolo con un'istruzione if . Ciò sarà applicabile a qualsiasi tipo di ramo condizionale, ad esempio elif e else istruzioni.

Nota

Attualmente non è possibile inviare programmi quantistici che applicano operazioni sui qubit misurati in No Control Flowtargets, anche se non si usano i risultati per controllare il flusso del programma. Vale a dire, No Control Flowtargets non consentire misurazioni a metà circuito.

Ad esempio, il codice seguente non può essere eseguito in un No Control Flowtargetoggetto :

operation MeasureQubit(q : Qubit) : Result { 
   return M(q); 
}

operation SampleMeasuredQubit(q : Qubit) : Result {
    H(MeasureQubit(q));
    return M(MeasureQubit(q));
}

Attualmente sono No Control Flowtargets disponibili per Azure Quantum:

Creare ed eseguire applicazioni per Basic Measurement Feedback il profilo targets

Basic Measurement Feedback profile targets può eseguire un'ampia gamma di applicazioni Q# con il vincolo che è possibile confrontare solo i valori di tipo Result come parte delle condizioni all'interno if di istruzioni nelle operazioni. Questo tipo di profilo presuppone un miglioramento rispetto No Control Flow ai profili, ma è comunque soggetto a alcune limitazioni.

Basic Measurement Feedback profile targets allow measurement-based condizional operations and mid-circuit measurements, significa che i qubit possono essere misurati selettivamente in un punto diverso dall'istruzione finale di un programma quantistico e l'output della misurazione può essere usato in altre operazioni. La misurazione del circuito intermedio consente più misurazioni in qualsiasi momento durante il programma quantistico. Le informazioni quantistiche dei qubit misurati si comprimono in uno stato classico (zero o uno), ma i qubit non misurati mantengono lo stato quantistico.

In Q# quando si misura un qubit, viene restituito un valore di tipo Result . Se si vuole usare questo risultato in un'istruzione condizionale, è necessario confrontare direttamente nell'istruzione condizionale. I blocchi condizionali corrispondenti potrebbero non contenere istruzioni return o set.

Ad esempio, il codice Q# seguente sarà consentito in un Basic Measurement Feedbacktargetoggetto :

operation MeasureQubit(q : Qubit) : Result { 
    return M(q); 
}

operation SetToZero(q : Qubit) : Unit {
     if MeasureQubit(q) == One { X(q); )
}

Tuttavia, lo stesso codice con la valutazione booleana spostata non sarebbe consentito:

operation BeOne(q : Qubit) : Bool {
     return M(q) == One;
}

operation SetToZeroUsingBeOne(q : Qubit) : Unit {
     if BeOne(q) { X(q); }
}

L'operazione SetQubitState in può essere usata in un Basic Measurement Feedbacktarget valore finché non si include alcuna return istruzione o set all'interno dell'istruzione ifNo Control Flow . Ciò sarà applicabile a qualsiasi tipo di ramo condizionale, ad esempio elif e else istruzioni. Ad esempio, l'operazione seguente non può essere usata in un Basic Measurement Feedbacktargetoggetto :

    operation SetQubitState(desired : Result, q : Qubit) : Result {
    if desired != M(q) {
        X(q);
        return M(q);
    }
}

Attualmente sono Basic Measurement Feedbacktargets disponibili per Azure Quantum: