Support CUDA-Q kernels for CircuitToEinsum
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- python
調査の方向性
CircuitToEinsum API ドキュメントから始め、Qiskit の例を、issue にある CUDA-Q kernel と observe の例と比較します。CUDA-Q 回路とパラメータバインディングをどのように表現すべきか、また、未バインドの変分回路が実現可能かどうかを判断します。CircuitToEinsum が、定義済みのパラメータ処理方針とともに、要求された CUDA-Q 回路ワークフローを受け入れれば完了です。
索引モデルが issue の本文から書いたものです。
説明
For an upcoming demo, we need cuQuantum to accept CUDA-Q circuits into the CircuitToEinsum function here.
Here is an example of how to do this in Qiskit:
from cuquantum import cutensornet as cutn
from cuquantum import contract, CircuitToEinsum
import torch
from qiskit.circuit import QuantumCircuit, Parameter
num_qubits = 1
measurement_ops = 'Z'
light_cone = True
# Define the quantum circuit with one qubit and two parameters
theta = Parameter('θ')
phi = Parameter('φ')
circuit = QuantumCircuit(num_qubits)
circuit.rx(theta, 0)
circuit.ry(phi, 0)
parameters = [1,2]
circuit = circuit.bind_parameters({theta: parameters[0], phi: parameters[1]})
converter = CircuitToEinsum(circuit, backend='torch')
einsum_expression, tensor_operands = converter.expectation(measurement_ops, light_cone)
Note that you have to provide a bound circuit (circuit with values supplied for the variational gates).
It would be nice if we could support CircuitToEinsum to take in variational circuits that are unbound but I'm guessing that the einsum expression will look different for different parameter values and hence this is not feasible?
In CUDA-Q, the corresponding code looks like this:
import cudaq
from typing import List
cudaq.set_target("nvidia")
@cudaq.kernel
def kernel(angles: List[float]):
qubit = cudaq.qubit()
rx(angles[0], qubit)
ry(angles[1], qubit)
hamiltonian = cudaq.spin.z(0)
parameters = [1, 2]
expectation_value = cudaq.observe(kernel, hamiltonian, parameters).expectation()
Note how the binding of the parameters happens in the observe call. How do we deal with this? @1tnguyen @bettinaheim
- 主要言語
- Jupyter Notebook
- スター
- 502
- フォーク
- 102
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
NVIDIA/cuQuantum のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 94/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 8/100
-
CUDA 12 cuquantum-appliance image ships a UCX `libucm_cuda.so.0` linked against `libcudart.so.13`オープン
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
NVIDIA/cuQuantum の issue をすべて見る
似ている issue
-
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
Qiskit/qiskit-aer#2482 ·
メンテナーはふだん 1 日以内に返信
-
Multi-controlled gphase definition applies mixed ctrl_state to the wrong qubits対応中かも @jaayvaardhaan が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
eclipse-qrisp/Qrisp#974 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Document that shot order is execution order in the sampler対応中かも @Ashiq1w が今日担当しました。 オープンcontent 📄
難易度 1/5 1〜3時間 初心者へのやさしさ 68/100
Qiskit/documentation#5808 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Reusing a parameter name on two gates fails on Qiskit only (name conflict adding parameter)対応中かも @Imad2702 が 4 日前に担当しました。 オープンbug enhancement good-first-issue qumat
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
apache/mahout#1509 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Quantinuum/pytket-qiskit#557 ·