Мы рады объявить о следующем крупном выпуске Qiskit - Qiskit 0.20.0 (и 0.20.1)! Обратите внимание - этот выпуск включает в себя новые функции, классы, а также ошибки и исправления ошибок, только некоторые из которых мы рассмотрим здесь. Вы можете найти все примечания к выпуску и все примечания к предыдущим выпускам в документации Qiskit, связанной здесь.

Qiskit традиционно делится на четыре «элемента»: Terra, который занимается схемами и импульсами; Аэр, отвечающий за тренажеры; Ignis, который обрабатывает устранение ошибок и шум, и Aqua для алгоритмов. Однако, поскольку большинство пользователей Qiskit без проблем включают каждый из элементов в свой код, мы решили упорядочить соответствующие обновления по их действиям, а не по именам самих элементов.

Цепи и импульсы

Этот новый выпуск вводит произвольный базисный перевод - это означает, что мы можем разложить квантовую схему на набор базовых вентилей, отличных от только U1, U2, U3 и CX. Это обновление позволит вам запускать схемы Qiskit на любом оборудовании, независимо от базового набора вентилей.

Класс QuantumCircuit теперь отслеживает глобальную фазу. Это означает, что управление схемой, которая имеет глобальную фазу, теперь правильно добавляет относительную фазу, и определения матрицы затвора теперь точны, а не равны глобальной фазе. Это в основном важно для целей отслеживания, а также для тех, кто изучает вектор состояний или матрицы плотности - каждый раз, когда вам нужно увидеть, что происходит с состоянием ваших кубитов, прежде чем вы их измеряете.

В этом обновлении Qiskit добавлен новый класс, который обрабатывает данные результатов подсчета, называемый qiskit.result.Counts, который возвращается функцией result.get_counts (). Подсчеты результатов всех снимков схемы ранее сохранялись в виде словаря. С этим новым классом можно по-прежнему взаимодействовать как со словарем, как и в предыдущих выпусках, но с ним также можно работать с помощью методов, чтобы иметь дело с экспериментальными результатами и обрабатывать постобработку.

В этом выпуске в класс QuantumCircuit добавлено несколько новых методов: reverse_bits (), control () и repeat (). Метод reverse_bits () может изменить порядок как квантовых, так и классических битов в схеме, что полезно для переключения с прямого порядка байтов на обратный порядок байтов - независимо от того, хранится ли старший или наименее значимый (qu) бит по наименьшему адресу. Метод control () возвращает управляемую версию схемы с указанным количеством кубитов, выступающих в качестве элемента управления. Метод repeat () возвращает новый объект схемы, содержащий указанное количество повторений исходной схемы.

В этом выпуске также есть важное предупреждение: интерактивные функции построения графиков из qiskit.visualization, включая iplot_bloch_multivector, iplot_state_city, iplot_state_qsphere, iplot_state_hinton, iplot_histogram, iplot_state_paulivec, теперь просто устаревшие интерактивные псевдонимы и больше не являются эквивалентами псевдонимов на основе matplot. Веб-сайт, на котором размещался код javascript, на который полагались эти функции, был закрыт, поэтому они перестали работать; обычное прекращение поддержки было невозможно, потому что сайт, от которого они зависели, больше не существует.

Наконец, мы выпустили Qiskit 0.20.1; это обновление содержит в основном исправления ошибок, которые вы можете просмотреть в документации примечания к выпуску.

Симуляторы

Последний выпуск Qiskit включает улучшения производительности для всех симуляторов. Это было достигнуто за счет добавления поддержки SIMD-векторизации, аппроксимации в методе состояния произведения матрицы (MPS) посредством усечения размерности связи, более эффективного вычисления математического ожидания Паули и значительного повышения эффективности преобразования Python объектов результата C ++.

Система сборки была обновлена ​​для использования диспетчера пакетов Conan C / C ++ для управления общими зависимостями C ++ при компиляции в вашей собственной системе. Это важно для тех, кто использует 32-битные системы x86 или не x86. Это обновление должно упростить установку Aer в этих системах, но, пожалуйста, держите глаза открытыми, так как были сообщения об ошибках от людей, пытающихся собрать Aer из исходников, поскольку это меняет способ управления зависимостями. Если у вас возникнут проблемы при сборке Aer из исходников, пожалуйста, откройте вопрос об этом здесь.

Устранение ошибок и обработка шума

Команда Qiskit реструктурировала код рандомизированного эталонного тестирования, чтобы использовать недавно обновленный класс Clifford. Это должно позволить более эффективный рандомизированный сравнительный анализ последовательностей вентилей Клиффорда с более чем двумя кубитами. Кроме того, функция qiskit.ignis.verification.qv_circuits () теперь использует класс библиотеки схем QuantumVolume для построения своего вывода, а не строит схемы квантового объема с нуля, что может привести к незначительным изменениям вывода по сравнению с предыдущими версиями. функции.

Алгоритмы

Самым важным последним обновлением алгоритма стал модуль оптимизации Qiskit, о котором вы можете прочитать здесь. В Qiskit 0.21.0 появятся новые интересные функции; А пока ознакомьтесь с примечаниями к выпуску, чтобы узнать о других недавних изменениях.

Поставщик IBM Q

Для наших премиальных пользователей IBM Quantum Experience новейшая версия IBM Q Provider предоставляет метод reservations () для возврата информации о резервировании из серверной части. Кроме того, использование Qconfig.py для сохранения учетных данных IBM Quantum Experience теперь не рекомендуется и будет удалено в следующем выпуске. Вместо этого вам следует использовать qiskitrc (по умолчанию) - тем, кто использует Q Experience более двух лет, следует проверить, обновились ли они.

Это только самые заметные обновления, о которых говорится в сообщении команды Qiskit, но есть много других новых функций, обновлений, исправлений ошибок и устаревших рекомендаций, упомянутых в примечании к выпуску здесь. Взглянем!