Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Job operations are not parallelizable

オープン
#300 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
python
領域
api, cloud

調査の方向性

まず、報告されている multiprocessing.Pool の例を exec_job で実行し、次に SimulatedBifurcationMachine が使用する solver.submit() と job.get_results() のエントリーポイントを追跡します。両方の worker のタイムスタンプを比較し、送信または結果取得がどこで直列化されるのかを特定します。独立したジョブを、観測された数分間の遅延なしに同時に送信して処理できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
Python
スター
160
フォーク
113
平均マージ
6日 23時間
マージ済み PR(30日)
1

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

microsoft/azure-quantum-python のほかの issue

microsoft/azure-quantum-python の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。