Quantum Computing Compiler and Simulator
Project description
XQI-QC Shell 简介
功能特点
- 模拟终端: 模拟linux终端风格,实现linux终端常用指令,使用方便
- 快捷执行: 将(.XQIASM)文件设为可执行文件,./test.XQIASM 回车一键执行
- 完善提示: 完善的XQI代码提示功能,方便使用
- 多行交互设计: 终端输入XQI-BEGIN回车自动开启多行输入模式,调试方便
- 多误差模型支持: 支持调节解极化误差、幅度/相位误差等6种误差模型
快速开始
(非必要)
推荐下载使用 conda 隔离环境
conda create -n xqishell python=3.11 -y
conda activate xqishell
(或使用 venv )
python -m venv xqishell
source xqishell/bin/activate # Windows 用 xqishell\Scripts\activate
下载
pip install xqishell
输入xqishell以唤醒终端 (ctrl+c以退出)
xqishell
Shell 指令列表
| 命令名称 | 格式示例 | 功能说明 | 备注 |
|---|---|---|---|
| ls | ls | 列出当前目录下所有 .xqiasm / .txt 文件和文件夹(带颜色区分) | 无参数 |
| XQI-BEGIN | XQI-BEGIN | 手动触发多行程序编辑模式(出现 XQI-BEGIN 后进入多行输入,直到 XQI-END) | 单独输入此行会启动编辑器模式 |
| ./文件名.XQIASM | ./demo.XQIASM | 直接执行当前目录下的 .XQIASM 文件(相对路径,需以 ./ 开头) | 只支持当前目录下的文件 |
| mkdir | mkdir 新文件夹名 | 创建文件夹(支持不存在的父目录) | 支持一个参数 |
| rm | rm 要删除的文件或文件夹 | 删除文件 或 递归删除文件夹 | 支持一个参数(文件或目录) |
| cat | cat filename.xqiasm | 显示文件内容(.xqiasm / .txt 优先使用高亮,其它文件用普通方式显示) | 支持一个参数(文件名) |
| mv | mv oldname newname | 移动文件/文件夹 或 重命名 | 必须正好两个参数(源 → 目标) |
| cp | cp source dest | 复制文件 或 递归复制文件夹 | 必须正好两个参数(源 → 目标) |
| vim | vim filename.xqiasm | 使用 pyvim 打开指定文件进行编辑(目前仅限 .xqiasm / .txt),支持一个参数(文件名) | |
| cd | cd 子目录名 .. | 切换当前工作目录 | 支持一个参数(路径) |
XQI-QC 常用汇编指令
- shot 定义shot次数
- qreg 定义量子寄存器的大小(例如 qreg q[5];),会重置量子系统并分配对应维度的状态向量和密度矩阵
- creg 定义经典寄存器的大小(例如 creg c[8];),初始化经典寄存器数组(用于存储测量结果)
- error 设置/关闭/修改全局错误模型,支持多种噪声类型(去极化、幅度衰减、相位衰减、热弛豫、Pauli、相干误差等),可指定不同概率参数
- ERR 局部误差指令(ERR(model,code,p1,p2,p3) q[...];),立即对指定量子位施加指定的Kraus噪声算符(独立于全局 error 模型)
- MOV 数据移动指令,支持: • 寄存器 ↔ 寄存器 • 立即数 → 寄存器 • PC/LR/SF/ZF 的读写 • MOV PC, 0 可用于提前结束当前 shot
- ADD / SUB / MUL / DIV 寄存器间的二元浮点运算(R[i] ← R[j] ±/*÷ R[k] 或立即数),结果写入目标寄存器并更新 SF(符号标志)和 ZF(零标志)
- U3 通用单量子比特门(U3(θ,φ,λ)),最常用的参数化旋转门,支持立即数或寄存器参数
- CNOT 控制非门(受控-X),标准两量子比特纠缠门(control, target)
- GPS Global Phase Shift,全局相位门,对整个量子态乘以 e^(iδ),δ 可来自立即数或寄存器
- measure 测量指定量子比特到经典寄存器,支持理想采样(statevector)和带读出误差的物理采样(density matrix),会引起态坍缩
- reset 重置指定量子比特到 |0⟩,支持带重置误差的物理实现(根据 error model 中的 p_reset)
- B / BL 无条件跳转(Branch)和带链接寄存器的跳转(Branch with Link),用于实现函数调用与返回
- BEQ / BNE / BGT / BGE / BLT / BLE 条件分支指令,根据 ZF(零标志)和 SF(符号标志)判断是否跳转
- LDR 从内存加载浮点数到通用寄存器 R[](Load Register)
- STR 将通用寄存器 R[] 的值存储到内存 M[](Store Register)
- CLDR 从内存的实部+虚部两个位置加载复数值到经典寄存器 c[](Complex Load Register)
- CSTR 将经典寄存器 c[] 的复数值拆成实部+虚部分别存入内存两个位置(Complex Store Register)
- debug / debug-p 调试输出指令,把当前量子态(statevector + density matrix)、寄存器、标志位、内存等信息写入文本和二进制调试文件;带 -p 的版本会暂停等待输入
- barrier 屏障指令,目前在模拟器中为空操作(主要用于语义分隔和未来可能的优化/调度)
- rand 产生 [0,1) 均匀随机数,写入目标寄存器 R[],随机种子可由另一个寄存器控制
| 指令名 | 参数格式说明 | 功能描述 |
|---|---|---|
| shot | shot <N> 其中 <N> 为整数,表示执行的次数(shots 数量) |
设置程序运行的总 shot 次数 |
| qreg | qreg q[<n>] 其中 <n> 为整数,表示量子寄存器大小 |
初始化量子寄存器大小 |
| creg | creg c[<n>] 其中 <n> 为整数,表示经典寄存器大小 |
初始化经典寄存器大小 |
| error | error <enable>, <code>, <params...> 其中 <enable> 为 TRUE/FALSE 或 1/0 <code> 为误差模型编号 <params...> 为不同模型对应的参数 |
设置全局误差模型 |
| ERR | ERR(<model>, <code>, p1, p2, p3, ...) q[n]; 其中 <model> 为误差类型编号 <code> 为误差代码 p1, p2, p3... 为物理参数 q[n] 为目标量子位 |
应用局部误差模型到指定量子位 |
| U3 | U3(theta, phi, lambda) q[n] 其中参数为浮点数, q[n] 为目标量子位 |
单比特通用旋转门 |
| CNOT | CNOT q[a], q[b] q[a] 为控制位,q[b] 为目标位 |
双比特受控非门 |
| GPS | GPS <params> q[n] 参数依赖实现, q[n] 为目标量子位 |
特殊量子门(实现依赖) |
| reset | reset q[n] q[n] 为目标量子位 |
将目标量子位重置为 |
| measure | measure q[n] -> c[m] q[n] 为量子位,c[m] 为经典寄存器位 |
测量量子位并存入经典寄存器 |
| barrier | barrier |
插入屏障,阻止门优化跨越 |
| debug | debug |
调试指令,打印当前状态 |
| debug-p | debug-p |
调试指令,打印概率分布 |
| Label | <label>: |
定义标签,用于跳转指令 |
| B/BL | B <label> 或 BL <label> |
无条件跳转(B),带链接寄存器保存的跳转(BL) |
| BEQ/BNE | BEQ <label> 或 BNE <label> |
条件跳转:等于/不等于 |
| BGT/BGE | BGT <label> 或 BGE <label> |
条件跳转:大于/大于等于 |
| BLT/BLE | BLT <label> 或 BLE <label> |
条件跳转:小于/小于等于 |
| MOV | MOV <dest>, <src> 其中 <dest> 可为寄存器(PC, LR, SF, ZF)或普通寄存器 |
将源值赋给目标寄存器 |
| ADD/SUB | ADD <dest>, <src1>, <src2> SUB <dest>, <src1>, <src2> |
整数加法/减法 |
| MUL/DIV | MUL <dest>, <src1>, <src2> DIV <dest>, <src1>, <src2> |
整数乘法/除法 |
| github链接:https://github.com/kerpers34-a11y/Quantum_Compiler |
祝您使用愉快!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
xqishell-0.1.0.tar.gz
(52.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
xqishell-0.1.0-py3-none-any.whl
(45.9 kB
view details)
File details
Details for the file xqishell-0.1.0.tar.gz.
File metadata
- Download URL: xqishell-0.1.0.tar.gz
- Upload date:
- Size: 52.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
031b94deea5079c93488a2027641205552bf7f98f3673f684818c6a8e8603f7b
|
|
| MD5 |
cd039e063e23b4d60d998588b798116a
|
|
| BLAKE2b-256 |
72d29213ebe0f88bdd239fe522e21d742d991c9eb0e0ebe08476053317cca0b1
|
File details
Details for the file xqishell-0.1.0-py3-none-any.whl.
File metadata
- Download URL: xqishell-0.1.0-py3-none-any.whl
- Upload date:
- Size: 45.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d405a3413bca46e50de242b6ac43bde29aa9c743c8d0b0a1097358a2490cd0f
|
|
| MD5 |
d3f6d402514d43912a1fef312c8a6d3b
|
|
| BLAKE2b-256 |
b3c8d62e71fb3813e1d89732648acc7360aa92ff6f397b8f32df4771a8000734
|