1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/quingo-pyqcisim

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

PyQCISim

Введение

PyQCISim — это симулятор на основе Python, разработанный Zhihao Wu и Xiang Fu из QUANTA@NUDT.

На самом деле PyQCISim представляет собой скорее парсер QCIS, чем симулятор. PyQCISim реализует парсер QCIS, который переводит файлы QCIS во внутреннее представление квантовых операций. Эти квантовые операции затем отправляются другому симулятору для моделирования эволюции квантового состояния. В настоящее время в качестве бэкенда используется симулятор матрицы плотности с открытым исходным кодом QuantumSim. В будущем будут добавлены другие симуляторы квантовых состояний.

Установка

Установить из pip

pip install pyqcisim

Установить из репозитория

Клонируйте (или скачайте) этот репозиторий на свой компьютер и установите его с помощью следующих команд:

git clone https://gitee.com/hpcl_quanta/pyqcisim
cd pyqcisim
pip install -e .

Обратите внимание: если на вашем компьютере также установлен python2, вам может потребоваться заменить pip на pip3.

Проверьте установку в корневом каталоге pyqcisim:

pytest -ra

Успешная установка должна увидеть все пройденные тесты. Обратите внимание, если на вашем компьютере также установлен python2, вам может потребоваться заменить pytest на pytest-3.

Использование

Прямое моделирование QCIS в командной строке

Вы можете использовать файл pyqcisim/simulate_qcis.py, чтобы напрямую смоделировать файл QCIS:

python <путь-к-pyqcisim/simulate_qcis.py> <файл-qcis>

Вы можете использовать следующую команду, чтобы увидеть различные параметры:

python <путь-к-pyqcisim/simulate_qcis.py> --help

Вызов PyQCISim в Python

Сначала импортируйте симулятор, создайте экземпляр PyQCISim и скомпилируйте данную программу QCIS:

from pyqcisim.simulator import *
pyqcisim = PyQCISim()
prog = """
X qA
X qB
CNOT qA qB
M qA
M qB
"""
pyqcisim.compile(prog)

Затем вы можете начать моделировать программу, используя либо режим one_shot:

msmt_results = pyqcisim.simulate()
print("msmt_results: ", msmt_results)

либо режим final_state:

final_state = pyqcisim.simulate(mode="final_state")
print("final_state: ", final_state)

Эти два режима имеют некоторые отличия:

  • Режим one_shot
    • Записывается только результат измерения кубита.
    • Если в схеме нет измерений, то результат будет пустым.
    • Вся схема будет моделироваться $n$ раз, где $n$ по умолчанию равно 1000 и может быть задано с помощью необязательного параметра num_shots при вызове simulate().
    • Формат результата
      • (['qA', 'qB'], {'00': 0, '01': 1000, '10': 0, '11': 0})
  • Режим final_state
    • Симулятор возвращает конечное состояние всей квантовой системы, которое состоит из двух частей:
      • Классическое состояние измеренных кубитов
      • Вектор состояния кубитов, которые не были измерены
    • Пример формата результата после комментирования M qB в приведенном выше коде:
      • {'classical': {'qA': 1}, 'quantum': (['qB'], array([1.+0.j, 0.+0.j]))}

Проблемы и обратная связь

Если у вас есть какие-либо предложения или вы столкнулись с какими-либо проблемами при использовании PyQCISim, пожалуйста, не стесняйтесь опубликовать вопрос на https://gitee.com/hpcl_quanta/pyqcisim/issues, или отправьте электронное письмо Xiang Fu (xiangfu at quanta dot org dot cn).

В настоящее время поддерживаются QCIS и синтаксис

Обратите внимание, что PyQCISim поддерживает расширенный набор инструкций QCIS, поддерживаемых current quantumcomputer.ac.cn. Пользователь должен обратить внимание на инструкции, не поддерживаемые quantumcomputer.ac.cn.

Далее мы используем следующие соглашения:

  • [qubit], [control_qubit], [target_qubit] являются IDENTIFIERами
  • [theta] $\in [-\pi, \pi]$
  • [phi] $\in [-\pi, \pi]$
  • $R_{x/y/z}(\theta)$: повернуть целевой кубит на угол $\theta$-радиуса вдоль оси $x/y/z$.
  • $R_{\hat{n}}(\theta)$: повернуть целевой кубит на $\theta$-радиус угла вдоль направления $\hat{n}$.

Инструкции для однокубитных операций | Инструкция | Описание |

| ------------------------------------ | ------------------------------------------ | | X [qubit] | $R_x(\pi)$ | | Y [qubit] | $R_y(\pi)$ | | Z [qubit] | $R_z(\pi)$ | | H [qubit] | $\frac{1}{\sqrt{2}}[[1, 1], [1, -1]]$ | | S [qubit] | $e^{\frac{\pi}{4}}R_z(\frac{\pi}{2})$ | | SD [qubit] | $e^{-\frac{\pi}{4}}R_z(-\frac{\pi}{2})$ | | T [qubit] | $e^{\frac{\pi}{8}}R_z(\frac{\pi}{4})$ | | TD [qubit] | $e^{-\frac{\pi}{8}}R_z(-\frac{\pi}{4})$ | | X2P [qubit] | $R_x(\frac{\pi}{2})$ | | X2M [qubit] | $R_x(-\frac{\pi}{2})$ | | Y2P [qubit] | $R_y(\frac{\pi}{2})$ | | Y2M [qubit] | $R_y(-\frac{\pi}{2})$ | | RX [qubit] [theta] | $R_x(\theta)$ | | RY [qubit] [theta] | $R_y(\theta)$ | | RZ [qubit] [theta] | $R_z(\theta)$ | | XY [qubit] [phi] | $R_{\hat{n}}(\pi), \hat{n}=[\cos{\phi}, \sin{\phi}, 0]$ | | XY2P [qubit] [phi] | $R_{\hat{n}}(\frac{\pi}{2}), \hat{n}=[\cos{\phi}, \sin{\phi}, 0]$ | | XY2M [qubit] [phi] | $R_{\hat{n}}(-\frac{\pi}{2}), \hat{n}=[\cos{\phi}, \sin{\phi}, 0]$ | | RXY [qubit] [phi] [theta] | $R_{\hat{n}}(\theta), \hat{n}=[\cos{\phi}, \sin{\phi}, 0]$ | | XYARB [qubit] [phi] [theta] | То же, что и RYX | | Z2P [qubit] | $R_z(\frac{\pi}{2})$ | | Z2M [quбит] | $R_z(-\frac{\pi}{2})$ | | Z4P [quбит] | $R_z(\frac{\pi}{4})$ | | Z4M [quбит] | $R_z(-\frac{\pi}{4})$ |

Инструкции для операций с двумя кубитами

Формат инструкции Описание
CZ [control_qubit] [target_qubit] Операция Control-Z
CNOT [control_qubit] [target_qubit] Операция Control-NOT
SWP [control_qubit] [target_qubit] Операция SWAP
SSWP [control_qubit] [target_qubit] $\sqrt{\text{SWAP}}$ операция
ISWP [control_qubit] [target_qubit] $i$ SWAP операция
SISWP [control_qubit] [target_qubit] $\sqrt{i \text{SWAP}}$ операция

Инструкции измерения

Формат инструкции Описание Примечание
Инструкции измерения Нет данных Нет данных

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/quingo-pyqcisim.git
git@api.gitlife.ru:oschina-mirror/quingo-pyqcisim.git
oschina-mirror
quingo-pyqcisim
quingo-pyqcisim
master