Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Квантовые устройства по-прежнему являются новыми технологиями, и, к сожалению, не все из них могут выполнять каждый код Q#. Таким образом, при разработке квантовых программ необходимо учитывать некоторые ограничения. target Типы профилей используются для определения возможностей квантовых устройств, которые можно использовать target с помощью программ Q#, то есть возможностей текущих квантовых устройств, доступных в Azure Quantum.
В этой статье рассматриваются различные типы профилей target в Azure Quantum, их ограничения и способы их настройки с помощью пакета средств разработки Quantum (QDK).
Целевые профили и их ограничения
В настоящее время Azure Quantum и QDK управляют тремя различными target профилями в зависимости от их способности выполнять программы квантового промежуточного представления (QIR).
- Unrestricted: Этот профиль может запускать любую программу QIR, а значит любую программу Q#, в пределах доступной памяти для симуляторов или доступного числа кубитов для физических квантовых компьютеров.
-
QIR base: Этот профиль может запускать любую программу Q#, которая не требует использования результатов из измерений кубитов для управления потоком программы. В программе на Q#, предназначенной для QPU такого типа, значения типа
Result
не поддерживают сравнение на равенство. -
QIR Adaptive RI: Этот профиль имеет ограниченную возможность использовать результаты измерений кубитов для управления потоком программы. В программе Q#, предназначенной для этого типа QPU, вы можете сравнивать значения типа
Result
в условиях инструкцийif
в операциях, что позволяет измерять в середине цикла.
Создание и запуск программ для Unrestrictedtarget профиля
Unrestricted target профили могут запускать любую программу, что означает, что вы можете писать программы Q# без ограничений функциональности. Azure Quantum не предоставляет target для этого профиля. Однако вы можете запускать Unrestricted программы Q# на симуляторах, предоставляемых QDK.
Настройка Unrestrictedtarget профиля
В Visual Studio Code:
- Выберите Вид —> Палитра команд и введите Q#: Задать профиль Azure Quantum QIRtarget. Нажмите ВВОД.
- Выберите "Без ограничений".
В Python можно задать target профиль с помощью qsharp.init
метода.
qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted)
Создание и запуск программ для QIR Basetarget профиля
QIR Base
target профили могут выполнять широкий спектр приложений Q# с тем ограничением, что они не могут использовать результаты измерений кубитов для управления потоком программы. В частности, значения типа Result
не поддерживают сравнение равенства.
Например, эта операция не может выполняться в :QIR Basetarget
operation FlipQubitOnZero() : Unit {
use q = Qubit();
if M(q) == Zero {
X(q);
}
}
Если вы попытаетесь запустить эту операцию на объекте QIR Basetarget, операция завершится ошибкой, так как она выполняет сравнение с помощью результата измерения (M(q) == Zero
) для управления потоком вычислений с помощью инструкции if
. То же самое применимо к любому типу условного ветвления, например, к операторам , elif
и else
.
Настройка QIR Basetarget профиля
В Visual Studio Code:
- Выберите Просмотр —> Командная палитра и введите Q#: задайте профиль Azure Quantum QIRtarget. Нажмите ВВОД.
- Выберите базу QIR.
В Python можно задать target профиль с помощью qsharp.init
метода.
qsharp.init(target_profile=qsharp.TargetProfile.Base)
Поддержка targets для профиля QIR Basetarget
В настоящее время в Azure Quantum доступны следующие QIR Basetargets.
Поставщик: IonQ
-
Симулятор IonQ (
ionq.simulator
) -
Квантовый процессор IonQ (
ionq.qpu.*
)
-
Симулятор IonQ (
Поставщик услуг: Rigetti
-
Симулятор Rigetti (
rigetti.sim.*
) -
QPU Rigetti (
rigetti.qpu.*
)
-
Симулятор Rigetti (
Создание и запуск программ для QIR Adaptive RItarget профиля
QIR Adaptive RI профиль targets может выполнять широкий спектр приложений Q# с некоторыми ограничениями. Этот тип профиля предполагает улучшение профилей QIR Base , но по-прежнему имеет некоторые ограничения.
QIR Adaptive RI профиль targets разрешает условные операции на основе измерений и измерения среднего канала, что означает, что кубиты можно выборочно измерять в точке, отличной от конечной инструкции квантовой программы, а выходные данные измерения можно использовать в других операциях. Измерение среднего канала позволяет выполнять несколько измерений в любой точке в рамках квантовой программы. Квантовая информация измеренных кубитов сворачивается до классического состояния (ноль или одна), но неизмеренные кубиты остаются в своём квантовом состоянии.
В Q# при измерении кубита возвращается значение типа Result
. Если вы хотите использовать этот результат в условном выражении, необходимо сравнивать его напрямую. Соответствующие условные блоки не могут содержать операторы return
или set
.
Например, в следующем коде Q# разрешено:QIR Adaptive RItarget
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
Настройка QIR Adaptive RItarget профиля
В Visual Studio Code:
- Выберите Просмотр —> Палитра команд и введите Q#: Задайте профиль QIR Azure Quantum. Нажмите ВВОД.
- Выберите QIR Adaptive RI.
В Python можно задать профиль target с помощью метода qsharp.init
.
qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI)
Поддерживается targets для QIR Adaptive RItarget профиля
В настоящее время в Azure Quantum доступны следующие QIR Adaptive RItargets:
-
Поставщик: Quantinuum
-
Эмуляторы Quantinuum (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) -
Квантовые процессорные устройства Quantinuum (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
-
Эмуляторы Quantinuum (