Skip to main content
IBM Quantum Platform

Introduzione alle modalità di esecuzione dei computer quantistici

Quando è stato introdotto il servizio di calcolo " IBM Quantum ", gli utenti potevano eseguire i circuiti solo come singoli lavori. Con l'emergere di diversi tipi di carichi di lavoro quantistici, è diventata evidente la necessità di adottare strategie di pianificazione diverse. Le modalità di esecuzione determinano le modalità di pianificazione dei lavori e la scelta della modalità di esecuzione più adeguata consente di eseguire il carico di lavoro in modo efficiente, nel rispetto del budget. Esistono tre modalità di esecuzione: job, sessione e batch.


Modalità lavoro

Una singola richiesta primitiva effettuata senza un gestore di contesto. I circuiti e gli input vengono raggruppati in blocchi primitivi unificati (PUB) e inviati al computer quantistico come attività di esecuzione. Per eseguire in modalità job, specificare mode=backend al momento dell'istanziazione di una primitiva. Per informazioni sull'utilizzo, consultare gli esempi relativi a Estimator e Sampler.


Modalità batch

Un gestore multi-attività per eseguire in modo efficiente esperimenti che comprendono carichi di lavoro multi-attività. Questi carichi di lavoro sono costituiti da attività eseguibili in modo indipendente che non hanno alcuna relazione condizionale tra loro. Con la modalità batch, gli utenti inviano tutti i loro lavori contemporaneamente.

Il sistema parallelizza o suddivide in thread la fase di pre-elaborazione (calcolo classico) di ogni lavoro primitivo per raggruppare in modo più compatto l'esecuzione quantistica tra i vari lavori, quindi esegue l'esecuzione quantistica di ogni lavoro in rapida successione per fornire i risultati più efficienti. Per ulteriori dettagli sul threading, consultare la pagina delle domande frequenti sulla modalità di esecuzione.

Una serie di lavori eseguiti in modalità batch.  La parte di calcolo classico di ogni lavoro avviene simultaneamente, quindi tutti i lavori vengono inviati alla QPU.  Il QPU è bloccato per l'uso da parte dell'utente dal momento in cui il primo lavoro arriva al QPU fino al termine dell'elaborazione dell'ultimo lavoro sul QPU.  Non ci sono intervalli tra i lavori in cui la QPU è inattiva.
Come funziona un batch
Note
  • Quando si esegue il batching, non è garantito che i lavori vengano eseguiti nell'ordine in cui sono stati inviati. Inoltre, anche se i lavori batch verranno eseguiti il più vicino possibile, non avranno accesso esclusivo al backend. Pertanto, i lavori batch possono essere eseguiti in parallelo con quelli di altri utenti se la capacità di elaborazione della QPU è sufficiente. Inoltre, i lavori di calibrazione della QPU potrebbero essere eseguiti tra i lavori in batch.
  • Il tempo di accodamento non diminuisce per il primo lavoro inviato all'interno di un batch. Pertanto, i batch non offrono alcun vantaggio nell'esecuzione di un singolo lavoro.

Per eseguire in modalità batch, specificare mode=batch quando si istanzia una primitiva o eseguire il lavoro in un gestore di contesto batch. Per esempi, vedere Esecuzione di lavori in batch.


Modalità sessione

Una finestra dedicata all'esecuzione di un carico di lavoro multiplo. Durante questa finestra, l'utente ha accesso esclusivo al sistema e non può eseguire altri lavori, compresi quelli di calibrazione. Ciò consente agli utenti di sperimentare algoritmi variazionali in modo più prevedibile e persino di eseguire più esperimenti contemporaneamente, sfruttando il parallelismo nello stack. L'uso delle sessioni consente di evitare i ritardi causati dall'accodamento di ogni lavoro separatamente, il che può essere particolarmente utile per i compiti iterativi che richiedono una comunicazione frequente tra risorse classiche e quantistiche.

Una serie di lavori viene eseguita in modalità sessione e l'altra in modalità batch.  Tra ogni lavoro c'è il TTL interattivo (interactive time to live).  La finestra attiva inizia all'avvio del primo lavoro e termina al termine dell'ultimo lavoro. Al termine del lavoro finale del primo gruppo di lavori, la finestra attiva termina e la sessione viene messa in pausa (ma non chiusa).  Si avvia quindi un'altra serie di lavori, che proseguono in modo analogo. Il QPU è riservato all'uso dell'utente per tutta la durata della sessione.
Come funziona una sessione

Per eseguire in modalità sessione, specificare mode=session quando si istanzia una primitiva o eseguire il lavoro in un gestore di contesto di sessione. Per esempi, vedere Esecuzione di lavori in una sessione.

Note
  • Il tempo di accodamento non diminuisce per il primo lavoro inviato in una sessione. Pertanto, le sessioni non offrono alcun vantaggio nell'esecuzione di un singolo lavoro.
  • Gli utenti di Open Plan non possono inviare lavori di sessione.

Flusso di lavoro di base

Il flusso di lavoro di base per i batch e le sessioni è simile:

  1. Il primo lavoro di un batch o di una sessione entra nella coda normale. Per i batch, l'intero gruppo di lavori viene pianificato insieme.
  2. Quando il primo lavoro inizia ad essere eseguito, si avvia il timer del tempo massimo di vita (TTL), che non si arresta né si mette in pausa finché non viene raggiunto il termine.
  3. Il timer TTL interattivo si avvia dopo il completamento di ogni lavoro. Se non ci sono lavori pronti per il carico di lavoro entro la finestra TTL interattiva, il carico di lavoro viene temporaneamente disattivato e riprende la normale selezione dei lavori. Un lavoro può riattivare il carico di lavoro disattivato se il batch o la sessione non ha raggiunto il valore TTL massimo.
    Note

    Il lavoro deve passare attraverso la normale coda per riattivare il carico di lavoro.

  4. Se viene raggiunto il valore massimo di TTL, il carico di lavoro termina e i lavori in coda rimasti falliscono. Qualsiasi lavoro in corso non verrà eseguito fino al completamento se ciò comporta il superamento del limite di costo dell'istanza.

Il video seguente illustra il flusso di lavoro di base, utilizzando le sessioni come esempio:

Per tutti i dettagli sui timer TTL, vedere la guida Tempo massimo di esecuzione.


Passi successivi

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.