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.
- 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.
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.
- 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:
- 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.
- 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.
- 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.
- 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.