Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Job operations are not parallelizable

Aperta
#300 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
python
Ambito
api, cloud

Direzione di ricerca

Inizia eseguendo l’esempio segnalato di multiprocessing.Pool con exec_job, quindi traccia i punti di ingresso solver.submit() e job.get_results() utilizzati da SimulatedBifurcationMachine. Confronta i timestamp di entrambi i worker e identifica dove l’invio o il recupero dei risultati viene serializzato. Il lavoro è completato quando i job indipendenti possono essere inviati ed elaborati contemporaneamente senza il ritardo osservato di diversi minuti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

I'm trying to submit and process results of multiple jobs in parallel but I'm noticing that, in many cases, jobs are submitted sequentially.

import datetime
import imp
from multiprocessing import Pool
from azure.quantum import Workspace
from azure.quantum.optimization import Problem, ProblemType, Term
from azure.quantum.target.toshiba import SimulatedBifurcationMachine
import logging


def create_problem():
    problem = Problem('Test_Problem', problem_type=ProblemType.pubo)
    problem.add_terms([
        Term(c=1, indices=[]),
        Term(c=2, indices=[1, 2]),
        Term(c=-3, indices=[1, 2]),
        Term(c=1, indices=[0, 2])
    ])
    return problem


def exec_job(no):
    workspace = Workspace (
        resource_id = "<workspace-id>",
        location= "<location>"
    )

    problem = create_problem()
    solver = SimulatedBifurcationMachine(workspace, loops=0, timeout=10)
    print(str(datetime.datetime.utcnow()), "\t[%d] solver.submit() start" % no)
    job = solver.submit(problem)
    print(str(datetime.datetime.utcnow()), "\t[%d] job.id=%s" % (no, str(job.id)))

    print(str(datetime.datetime.utcnow()), "\t[%d] job.get_results() start" % no)
    result = job.get_results()
    print(str(datetime.datetime.utcnow()), "\t[%d] job.details=%s" % (no, str(job.details)))


if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)

    njobs = 2
    with Pool(processes=njobs) as pool:
        pool.map(func=exec_job, iterable=range(njobs))

For the above, output is:
2022-04-21 18:40:23.466530 [0] solver.submit() start
2022-04-21 18:40:23.542727 [1] solver.submit() start
2022-04-21 18:40:28.752803 [1] job.id=810bc3bb-c1a2-11ec-baa1-b831b575aea6
2022-04-21 18:40:28.752803 [1] job.get_results() start
..........2022-04-21 18:40:52.826348 [1] job.details={..........}
2022-04-21 18:44:19.108243 [0] job.id=81018a8e-c1a2-11ec-adf4-b831b575aea6
2022-04-21 18:44:19.109211 [0] job.get_results() start
..........2022-04-21 18:44:42.799796 [0] job.details={..............}

You can see that job 1 was submitted and awaited while job 0 hasn't been submitted at the same time and was done 4 mins after the first job.

Lingua principale
Python
Stelle
160
Fork
113
Merge medio
6g 23h
PR unite (30g)
1

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/azure-quantum-python

Tutte le issue di microsoft/azure-quantum-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.