Skip to main content

Quingo Simulator Backend QuaLeSim

Project description

Start

The QuaLeSim(Quantum Lego Simulator) is an adapted version of DQCSim. For quantum circuit simulation, you can simulate QUIET-s and QCIS instruction by it. And what's more, now the QuaLeSim is integrated into the backend of Quingo, you can use it directly after installing quingoc and quingo-runtime. More inforemations is available in [[#Install]]

Install

The QuaLeSim now is only for Linux platform.

  1. 环境准备:
    • Linux platform with python>=3.7
    • Rust # if you don't have rust, make sure you have 'curl' to install rust in the setup.py .
  2. 安装说明:
    • 目前已经将 qualesim 及其相关插件上传至 PYPI,可以选择下面两种方式安装:
    1. 一键安装qualesim 及其相关插件:
      • pip install qualesim[TEQUILA]
      • 注:tequila目前尚未开源,tequila不会默认安装。
        • 若需要使用Tequila模拟器,可以在qualesim之后加[TEQUILA]来安装
    2. 单独安装各个模块插件:
      • pip install qualesim # 安装qualesim本体
      • pip install qualesim-tequila # 安装 tequila 后端,tequila尚未开源,需要单独安装

Quick Start

Quick Start is for users use the Simulator directly or use it with quingo-runtime. Some examples are available below.

  1. For independent users:
    • The Simulator can simulate QUIET-s and QCIS instructions, you can use it directly:
from qualesim.plugin import *
from qualesim.host import *
sim = Simulator(stderr_verbosity=Loglevel.INFO)

sim.with_frontend("<path-to-qcis-file>", verbosity=Loglevel.INFO)
# sim.with_frontend("<path-to-qi-file>", verbosity=Loglevel.INFO)
# Loglevel is for output information for DEBUG/INFO/OFF
# If you only want the simulation output, please set it OFF

sim.with_backend("quantumsim", verbosity=Loglevel.INFO)
# sim.with_backend("tequila", verbosity=Loglevel.INFO)
# now we have DQCsim-Tequila and DQCsim-QuantumSim backend for Simulator

sim.simulate()
res = sim.run(measure_mod="state_vector", num_shots=10)
# Start the simulation with different exe mod,
# measure_mod="one_shot" and num_shots=int /
#             "state_vector"
# the output should be

sim.stop()
final_state = dict()
final_state = res["res"]
print(final_state)
  • the output is :
measure_mod="state_vector":
res1(M Q1, M Q2) = {'classical': {'Q1': 1, 'Q2': 1}, 'quantum': (['Q3'], [0j, (1+0j)])}
# classical is qubit measured, quantum is qubit unmeasured with state vector.
res2() = {'classical': {}, 'quantum': (['Q1', 'Q2', 'Q3'], [(0.7071067811865472+0j), 0j, 0j, 0j, 0j, 0j, 0j, (0.7071067811865478+0j)])}

measure_mod="one_shot", num_shots=10:
# classical is classical value, quantum is qubit measured. and they are one to one correspondence
res(measure(q1)->c1, measure(q2)->c2) = {'quantum': [['q1', 'q2'], [[0, 0], [0, 0], [1, 1], [0, 0], [0, 0], [1, 1], [0, 0], [0, 0], [1, 1], [1, 1]]], 'classical': [{'c1': [0], 'c2': [0]}, {'c1': [0], 'c2': [0]}, {'c1': [1], 'c2': [1]}, {'c1': [0], 'c2': [0]}, {'c1': [0], 'c2': [0]}, {'c1': [1], 'c2': [1]}, {'c1': [0], 'c2': [0]}, {'c1': [0], 'c2': [0]}, {'c1': [1], 'c2': [1]}, {'c1': [1], 'c2': [1]}]}
  1. For Quingo Users
    • You should follow the [[#Install|extern: quingoc & quingo-runtime installation]] to install it.
from quingo import *
import qututor.global_config as gc
from quingo.backend.qisa import Qisa

# input quingo file and simulate qu func
qu_file = gc.quingo_dir / "ghz.qu"
circ_name = "GHZ_state"

# set the qisa, and it is the output instructions QUIET,
# you can change to Qisa.QCIS or others.
task = Quingo_task(
    qu_file,
    circ_name,
    qisa=Qisa.QUIET,
)

num_shots = 10
cfg = ExeConfig(ExeMode.SimFinalResult, num_shots)
num_qubits = 3

# now backend BackendType.QUANTUM_SIM, BackendType.DQCSIM_TEQUILA
# BackendType.DQCSIM_QUANTUMSIM, BackendType.SYMQC is available.
# method 1
qasm_fn = compile(task, params=(num_qubits,))
res = execute(qasm_fn, BackendType.QUANTUM_SIM, cfg)

# method 2
# res = call(task, (num_qubits,), BackendType.DQCSIM_TEQUILA, cfg)

print("res: ", res)
  • the output is :
measure_mod="state_vector":
res1(M Q1, M Q2) = {'classical': {'Q1': 1, 'Q2': 1}, 'quantum': (['Q3'], [0j, (1+0j)])}
# classical is qubit measured, quantum is qubit unmeasured with state vector.
res2() = {'classical': {}, 'quantum': (['Q1', 'Q2', 'Q3'], [(0.7071067811865472+0j), 0j, 0j, 0j, 0j, 0j, 0j, (0.7071067811865478+0j)])}

measure_mod="one_shot", num_shots=10:
# quingo-runtime only have quantum values.
res(measure(q1)->c1, measure(q2)->c2) =(['q1', 'q2'], [[0, 0], [0, 0], [1, 1], [0, 0], [0, 0], [1, 1], [0, 0], [0, 0], [1, 1], [1, 1]])

FAQ

  1. for install
    1. your environment donot have rust?
    2. if you have llvm in your platform, the setup install maybe very slow.
      • the problem is to be solved.
    3. install about quingoc
  2. for use
    1. when you first use it, there would be a problem 核心已转储
      • it is the dqcsim's problem and is to be solved.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

qualesim-1.0.2-cp312-cp312-manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.12

qualesim-1.0.2-cp311-cp311-manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.11

qualesim-1.0.2-cp310-cp310-manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.10

qualesim-1.0.2-cp39-cp39-manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.9

qualesim-1.0.2-cp38-cp38-manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.8

qualesim-1.0.2-cp37-cp37m-manylinux2014_x86_64.whl (11.7 MB view details)

Uploaded CPython 3.7m

File details

Details for the file qualesim-1.0.2-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qualesim-1.0.2-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d9e446c64d5241ff2c0dbb620902fb5489587ce14e63855fa28725cbffb22d9c
MD5 04c541444d55ddd082c65b84ed199959
BLAKE2b-256 dca1f33cf0c05bec99ad3fc7171533907180567080347f3c884dc44f6dae7c6d

See more details on using hashes here.

File details

Details for the file qualesim-1.0.2-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qualesim-1.0.2-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4895b646b2cd207d3cf6dde5864ba63ffa597d5a93d0a2a65c08c297e04febe
MD5 057adcbe918fb9e3f05b55050a8abc26
BLAKE2b-256 586a538c2b468a04e10ed5a20f81bd3c85418b6ceb7ee4f24a07f86c955665f7

See more details on using hashes here.

File details

Details for the file qualesim-1.0.2-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qualesim-1.0.2-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4442e494481613ac8423f4e26e8dddf22d36c952bbef132b429eafd98307923
MD5 7c5fc8725fa42621e5d60e188a671937
BLAKE2b-256 1bd5062b2283b2def4ef7fe02e506576d48314ec7d15c6a561cea835c1f0daec

See more details on using hashes here.

File details

Details for the file qualesim-1.0.2-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qualesim-1.0.2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a1fc2748f9c4c40acfb47d10d94799f762fa581e5970ec53bf4ec9974864d71
MD5 f6d2ff7191f0c4d6c80cd74392d9258e
BLAKE2b-256 81a38081ab37e47fdac766338abae06991dba4b7dd481be63a2f881970d7046b

See more details on using hashes here.

File details

Details for the file qualesim-1.0.2-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qualesim-1.0.2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd06e0c8bdb64aaedb9f1829af9c615c29ede51b2982c0c416eae47d75c01f2b
MD5 81a97d29c96cf9f3d483a5bb451158d1
BLAKE2b-256 a69c5f4e09c830506277995577c215327f339642e79e258b01ab291e9a5755a4

See more details on using hashes here.

File details

Details for the file qualesim-1.0.2-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qualesim-1.0.2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82f70dd7285bcf292836993dc183499c71708161bfc573178e72f6d139cfa04f
MD5 d6a478adc22106dead2e4b7194341624
BLAKE2b-256 786228233c2f0c19ed2d7ac2f48c0f90db811cb228bae9a7ee0b0b102373b27a

See more details on using hashes here.

Supported by

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