Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Разреженный симулятор использует разреженное представление векторов квантовых состояний. Разреженное квантовое состояние — это состояние, в котором большинство коэффициентов амплитуды равны нулю. Разреженные представления позволяют разреженным симулятору свести к минимуму объем памяти, необходимый для представления квантовых состояний, что позволяет моделировать более большое количество кубитов. Разреженный симулятор эффективен для программ с квантовыми состояниями, которые разрежены в вычислительной основе. Разреженный симулятор позволяет пользователям изучать более крупные приложения, чем симулятор полного состояния, так как симуляторы полного состояния тратят память и время на экспоненциально большое количество нулевой амплитуды.
Дополнительные сведения о разреженном симуляторе см. в разделе Jaques и Häner (arXiv:2105.01533).
Запустите разреженный симулятор
Разреженный симулятор — это локальный симулятор по умолчанию в расширении MicrosoftQuantum Development Kit (QDK) для Visual Studio Code (VS Code). Использование разреженного симулятора зависит от среды разработки.
| Среда разработки | Как вызвать разреженный симулятор |
|---|---|
| В программе Q# или OpenQASM в VS Code | Запустите файл Q# или OpenQASM |
В программе Python, использующей пакет qdk |
qsharp.runили openqasm.runили qiskit.QSharpBackend |
В ячейке блокнота %%qsharp |
Вызовите операцию запуска программы, например,Main() |
Добавьте Pauli шум в разреженный симулятор в VS Code
Разреженный симулятор поддерживает добавление Pauli шума к имитациям программ Q# с расширением VS Code . Эта функция позволяет имитировать влияние шума на квантовые операции и измерения. Чтобы указать модель шума в Q# программе, используйте функцию ConfigurePauliNoise . Функция задает вероятности для Pauli операторов X, Y, и Z возникновения шума. Вы также можете настроить глобальные модели шума в параметрах расширения.
Добавьте Pauli шум с помощью VS Code параметров
Чтобы задать глобальный Pauli шум для Q# программ, VS Codeнастройте Q#> параметр "Имитация:Pauli шум пользователя" для QDK расширения.
Параметры шума применяются к результатам гистограммы для всех ворот, измерений и кубитов во всех Q# программах VS Code.
Например, настроенная программа на ГГц без шума показывает, что гистограмма для следующей программы дает результат $\ket{00000}$ для около половины измерений и $\ket{11111}$ для другой половины.
import Std.Diagnostics.*;
import Std.Measurement.*;
operation Main() : Result []{
let num = 5;
return GHzSample(num);
}
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Если добавить даже 1% уровень шума битового флипа, результаты начинают рассеиваться. С 25% бит-флип шум, гистограмма неотличима от чистого шума.
Добавить Pauli шум к отдельным Q# программам
Используйте функцию ConfigurePauliNoise , чтобы задать или изменить модель шума для отдельных Q# программ. Функция ConfigurePauliNoise позволяет контролировать время и место возникновения шума в программах Q# .
Замечание
При настройке шума в VS Code параметрах шум применяется ко всем Q# программам. Однако функция ConfigurePauliNoise переопределяет параметры шума VS Code в вызывающей программе.
Например, в предыдущей программе можно добавить шум сразу после выделения кубита.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
// 5% bit-flip noise applies to all operations
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Кроме того, можно добавить шум только к операции измерения.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
H(qs[0]);
ApplyCNOTChain(qs);
// Noise applies to only the measurement operation
ConfigurePauliNoise(0.05, 0.0, 0.0);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Чтобы изменить или очистить конфигурации шума в разных точках в программе, вызовите ConfigurePauliNoise несколько раз. Например, можно задать 5% шума бит-флип на врата Адамара, а затем не добавлять шум для остальной программы.
operation GHzSample(n: Int) : Result[] {
use qs = Qubit[n];
// Noise applies to the H operation
ConfigurePauliNoise(0.05, 0.0, 0.0);
H(qs[0]);
// Clear the noise settings
ConfigurePauliNoise(0.0, 0.0, 0.0);
ApplyCNOTChain(qs);
let results = MeasureEachZ(qs);
ResetAll(qs);
return results;
}
Другие Q# функции шума
Функция ConfigureNoiseFunction достаточно для моделирования любого Pauli шума в программе, но Q# имеет другие функции шума, которые также можно использовать. Следующие функции доступны в библиотеке Std.Diagnostics для настройки шума в Q# программах:
| Функция | Description | Example |
|---|---|---|
ConfigurePauliNoise |
Настраивает Pauli шум для запуска симулятора. Параметры представляют вероятности шума на воротах X, Y и Z.Pauli Конфигурация шума применяется ко всем последующим шлюзам, измерениям и кубитам в программе Q# . Переопределяет VS Code параметры шума расширения. Последующие вызовы для ConfigurePauliNoise переопределяют шумы, заданные предыдущими вызовами. |
ConfigurePauliNoise(0.1, 0.0, 0.5)или ConfigurePauliNoise(BitFlipNoise(0.1)) |
BitFlipNoise |
Настраивает только шум шлюза X с указанной вероятностью. | 10% шум, вызванный изменением бита:ConfigurePauliNoise(BitFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.1, 0.0, 0.0) |
PhaseFlipNoise |
Настраивает только шум шлюза Z с указанной вероятностью. | 10% шум фазового переворота.ConfigurePauliNoise(PhaseFlipNoise(0.1)) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.1) |
DepolarizingNoise |
Настраивает шум для ворот X, Y или Z с равными вероятностями. | 6% деполяризующий шум.ConfigurePauliNoise(DepolarizingNoise(0.06)) $\equiv$ ConfigurePauliNoise(0.2, 0.2, 0.2) |
NoNoise |
Сбрасывает модель шума до состояния без шума. |
ConfigurePauliNoise(NoNoise()) $\equiv$ ConfigurePauliNoise(0.0, 0.0, 0.0) |
ApplyIdleNoise |
Применяет сконфигурированный шум к одному кубиту во время моделирования. | ...use q = Qubit[2];ConfigurePauliNoise(0.1, 0.0, 0.0);ApplyIdleNoise(q[0]);... |