Skip to main content

Cqlib adapter

Project description

Cqlib Adapter

Installation

Install the package using pip:

pip install cqlib-adapter

1. Qiskit Ext

This project provides a Qiskit adapter for the TianYan quantum computing platform. It includes custom quantum gates and integrates with the TianYan backend to enable seamless execution of quantum circuits.

Features

  • Custom Quantum Gates: Adds custom gates like X2P, X2M, Y2P, Y2M, XY2P, and XY2M to Qiskit.
  • TianYan Backend Integration: Supports execution of quantum circuits on TianYan quantum computers and simulators.
  • Transpilation: Automatically transpiles Qiskit circuits to be compatible with TianYan backends.

QCIS Gates

QCIS Instruction Manual

The following QCIS gates are added to Qiskit:

  • X2P: Positive X rotation by π/2.
  • X2M: Negative X rotation by π/2.
  • Y2P: Positive Y rotation by π/2.
  • Y2M: Negative Y rotation by π/2.
  • XY2P: Positive XY rotation by a parameterized angle.
  • XY2M: Negative XY rotation by a parameterized angle.

Usage Example

Log in to the TianYan Lab, retrieve your Connection Key from the Dashboard page, and replace your_token in the code below.

from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister
from cqlib_adapter.qiskit_ext import X2PGate

# Create a quantum circuit
qs = QuantumRegister(2)
cs = ClassicalRegister(2)
circuit = QuantumCircuit(qs, cs)
circuit.x(qs[1])
circuit.h(qs[0])
circuit.cx(qs[0], qs[1])
circuit.append(X2PGate(), [qs[0]])
circuit.barrier(qs)
circuit.measure(qs, cs)

circuit.draw()

Circuit Text Diagram:

      ┌───┐     ┌─────┐ ░ ┌─┐   
q0_0: ┤ H ├──■──┤ X2p ├─░─┤M├───
      ├───┤┌─┴─┐└─────┘ ░ └╥┘┌─┐
q0_1: ┤ X ├┤ X ├────────░──╫─┤M├
      └───┘└───┘        ░  ║ └╥┘
c0: 2/═════════════════════╩══╩═
                           0  1 

1. Backend mode

from cqlib_adapter.qiskit_ext import TianYanProvider

# Initialize the TianYan provider
provider = TianYanProvider(token='your_token')

# Retrieve a specific backend (e.g., 'tianyan176-2')
backend = provider.backend('tianyan176-2')

# Run the circuit on the backend
job = backend.run([circuit], shots=3000)

# Retrieve and print the results
print(f'Job ID: {job.job_id()}')
print(f'Job Result: {job.result().get_counts()}')

2. Sampler mode

from cqlib_adapter.qiskit_ext import TianYanProvider, TianYanSampler

# Initialize the TianYan provider
provider = TianYanProvider(token='your_token')

# Retrieve a specific backend (e.g., 'tianyan24')
backend = provider.backend('tianyan24')

# Run the circuit on the backend
job = TianYanSampler(backend=backend).run([circuit], shots=3000)

# Retrieve and print the results
print(f'Job ID: {job.job_id()}')
print(f'Job Result: {job.result()}')
# c0 is the default register name
# cs = ClassicalRegister(2)
print(f'Counts: {job.result()[0].data.c0.get_counts()}')

PennyLane Ext

This project provides a PennyLane device adapter for the CQLib quantum computing framework. It enables seamless execution of PennyLane quantum circuits on various CQLib backends, including TianYan quantum hardware and simulators.

Features

  • Multiple Backend Support: Supports execution on TianYan quantum hardware, cloud simulators, and local simulators
  • Unified Interface: No need to call cqlib directly - all configuration is done through PennyLane device settings

Supported TianYan Backends

Quantum Hardware

tianyan24, tianyan504, tianyan176-2, tianyan176

Cloud Simulators

tianyan_sw, tianyan_s, tianyan_tn, tianyan_tnn, tianyan_sa, tianyan_swn

Local Simulator

default (local simulator)

Usage Example

import pennylane as qml
from pennylane import numpy as np

TOKEN = "your_token"
dev = qml.device('cqlib.device', wires=2, shots=500, cqlib_backend_name="default",login_key = TOKEN)


@qml.qnode(dev, diff_method="parameter-shift")
def circuit(params):
    qml.RX(params[0], wires=0)
    qml.RY(params[1], wires=1)
    qml.CNOT(wires=[0, 1])
    return qml.expval(qml.PauliY(0))
params = np.array([0.5, 0.8], requires_grad=True)

opt = qml.GradientDescentOptimizer(stepsize=0.1)
steps = 10
for i in range(steps):
    params = opt.step(circuit, params)

    print(f"step {i + 1}: paras = {params}, exps = {circuit(params)}")

License

This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cqlib_adapter-0.3.2.tar.gz (34.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cqlib_adapter-0.3.2-py3-none-any.whl (42.6 kB view details)

Uploaded Python 3

File details

Details for the file cqlib_adapter-0.3.2.tar.gz.

File metadata

  • Download URL: cqlib_adapter-0.3.2.tar.gz
  • Upload date:
  • Size: 34.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for cqlib_adapter-0.3.2.tar.gz
Algorithm Hash digest
SHA256 17161060a7a2a6782f977f96b27080b802b88e03a395e9b0d32e0c2d838f735c
MD5 53d890fdde40c5d0d28b1df5f8a6a42e
BLAKE2b-256 a38068888bbf81e258ab5b88210050d0130bd4ef2714dbbc8407f4ce97bfdc45

See more details on using hashes here.

File details

Details for the file cqlib_adapter-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: cqlib_adapter-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 42.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for cqlib_adapter-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f6de484edb44c9fcb285653b8680a3773e4275dd99068467e1d193fa2cccf08c
MD5 4ef0578ef1f708bde78332c6ec43a730
BLAKE2b-256 eb1539793c995391095fa3751891c2f0bcf315203c2e4b7c1d4e7d8a47d56df8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page