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.
- 环境准备:
- 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 .
- Linux platform with
- 安装说明:
- 目前已经将 qualesim 及其相关插件上传至 PYPI,可以选择下面两种方式安装:
- 一键安装qualesim 及其相关插件:
pip install qualesim[TEQUILA]- 注:tequila目前尚未开源,tequila不会默认安装。
- 若需要使用Tequila模拟器,可以在
qualesim之后加[TEQUILA]来安装
- 若需要使用Tequila模拟器,可以在
- 单独安装各个模块插件:
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.
- 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]}]}
- 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
- for install
- your environment donot have rust?
- you can install rust yourself by the Rust 程序设计语言 (rust-lang.org)
- or just make sure you have command
"curl", the setup will help you install it automatic.
- if you have llvm in your platform, the setup install maybe very slow.
- the problem is to be solved.
- install about quingoc
- please refer to docs/DeveloperGuide.md · Quingo/quingo-compiler - Gitee.com
- your environment donot have rust?
- for use
- when you first use it, there would be a problem
核心已转储- it is the dqcsim's problem and is to be solved.
- when you first use it, there would be a problem
Release files for qualesim 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| qualesim-1.0.2-cp312-cp312-manylinux2014_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ x86-64 | Details |
| qualesim-1.0.2-cp311-cp311-manylinux2014_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.17+ x86-64 | Details |
| qualesim-1.0.2-cp310-cp310-manylinux2014_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.17+ x86-64 | Details |
| qualesim-1.0.2-cp39-cp39-manylinux2014_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.17+ x86-64 | Details |
| qualesim-1.0.2-cp38-cp38-manylinux2014_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.17+ x86-64 | Details |
| qualesim-1.0.2-cp37-cp37m-manylinux2014_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.17+ x86-64 | Details |
Total release size: 70.0 MB
Release files / qualesim-1.0.2-cp312-cp312-manylinux2014_x86_64.whl
| Download URL | qualesim-1.0.2-cp312-cp312-manylinux2014_x86_64.whl |
|---|---|
| Size | 11.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
d9e446c64d5241ff2c0dbb620902fb5489587ce14e63855fa28725cbffb22d9c
|
|
BLAKE2b-256 checksum How to use checksums |
dca1f33cf0c05bec99ad3fc7171533907180567080347f3c884dc44f6dae7c6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Release files / qualesim-1.0.2-cp311-cp311-manylinux2014_x86_64.whl
| Download URL | qualesim-1.0.2-cp311-cp311-manylinux2014_x86_64.whl |
|---|---|
| Size | 11.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
f4895b646b2cd207d3cf6dde5864ba63ffa597d5a93d0a2a65c08c297e04febe
|
|
BLAKE2b-256 checksum How to use checksums |
586a538c2b468a04e10ed5a20f81bd3c85418b6ceb7ee4f24a07f86c955665f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Release files / qualesim-1.0.2-cp310-cp310-manylinux2014_x86_64.whl
| Download URL | qualesim-1.0.2-cp310-cp310-manylinux2014_x86_64.whl |
|---|---|
| Size | 11.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a4442e494481613ac8423f4e26e8dddf22d36c952bbef132b429eafd98307923
|
|
BLAKE2b-256 checksum How to use checksums |
1bd5062b2283b2def4ef7fe02e506576d48314ec7d15c6a561cea835c1f0daec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Release files / qualesim-1.0.2-cp39-cp39-manylinux2014_x86_64.whl
| Download URL | qualesim-1.0.2-cp39-cp39-manylinux2014_x86_64.whl |
|---|---|
| Size | 11.7 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5a1fc2748f9c4c40acfb47d10d94799f762fa581e5970ec53bf4ec9974864d71
|
|
BLAKE2b-256 checksum How to use checksums |
81a38081ab37e47fdac766338abae06991dba4b7dd481be63a2f881970d7046b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Release files / qualesim-1.0.2-cp38-cp38-manylinux2014_x86_64.whl
| Download URL | qualesim-1.0.2-cp38-cp38-manylinux2014_x86_64.whl |
|---|---|
| Size | 11.7 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
bd06e0c8bdb64aaedb9f1829af9c615c29ede51b2982c0c416eae47d75c01f2b
|
|
BLAKE2b-256 checksum How to use checksums |
a69c5f4e09c830506277995577c215327f339642e79e258b01ab291e9a5755a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|
Release files / qualesim-1.0.2-cp37-cp37m-manylinux2014_x86_64.whl
| Download URL | qualesim-1.0.2-cp37-cp37m-manylinux2014_x86_64.whl |
|---|---|
| Size | 11.7 MB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
82f70dd7285bcf292836993dc183499c71708161bfc573178e72f6d139cfa04f
|
|
BLAKE2b-256 checksum How to use checksums |
786228233c2f0c19ed2d7ac2f48c0f90db811cb228bae9a7ee0b0b102373b27a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.2
|