Kit de Desenvolvimento Quântico (QDK) simulador de estado completoQuantum Development Kit (QDK) full state simulator

O QDK fornece um simulador de estado completo que simula uma máquina quântica no seu computador local.The QDK provides a full state simulator that simulates a quantum machine on your local computer. Você pode usar o simulador de estado completo para executar e depurar algoritmos quânticos escritos em Q# , usando até 30 qubits.You can use the full state simulator to run and debug quantum algorithms written in Q#, utilizing up to 30 qubits. O simulador de estado completo é semelhante ao simulador quântico usado na plataforma LIQ$Ui/rangle$ da Microsoft Research.The full state simulator is similar to the quantum simulator used in the LIQ$Ui|\rangle$ platform from Microsoft Research.

Invocando e executando o simulador de estado completoInvoking and running the full state simulator

Expões o simulador de estado completo através da QuantumSimulator aula.You expose the full state simulator via the QuantumSimulator class. Para mais detalhes, consulte Formas de executar um Q# programa.For additional details, see Ways to run a Q# program.

Invocando o simulador de C #Invoking the simulator from C#

Crie uma instância da QuantumSimulator classe e, em seguida, passe-a para o Run método de uma operação quântica, juntamente com quaisquer parâmetros adicionais.Create an instance of the QuantumSimulator class and then pass it to the Run method of a quantum operation, along with any additional parameters.

    using (var sim = new QuantumSimulator())
    {
        var res = myOperation.Run(sim).Result;
        ///...
    }

Como a QuantumSimulator classe implementa a IDisposable interface, deve ligar para o método Dispose uma vez que já não precisa da instância do simulador.Because the QuantumSimulator class implements the IDisposable interface, you must call the Dispose method once you do not need the instance of the simulator anymore. A melhor maneira de o fazer é embrulhar a declaração e as operações do simulador dentro de uma declaração de utilização, que automaticamente chama o Dispose método.The best way to do this is to wrap the simulator declaration and operations within a using statement, which automatically calls the Dispose method.

Invocando o simulador de PythonInvoking the simulator from Python

Utilizar o método simulado da Q# biblioteca Python com a operação importada: Q#Use the simulate() method from the Q# Python library with the imported Q# operation:

qubit_result = myOperation.simulate()

Invocando o simulador da linha de comandoInvoking the simulator from the command line

Ao executar um Q# programa a partir da linha de comando, o simulador de estado completo é a máquina alvo predefinido.When running a Q# program from the command line, the full state simulator is the default target machine. Opcionalmente, pode utilizar o parâmetro --simulador (ou atalho -s para especificar a máquina-alvo desejada.Optionally, you can use the --simulator (or -s shortcut) parameter to specify the desired target machine. Ambos os comandos seguintes executam um programa utilizando o simulador de estado completo.Both of the following commands run a program using the full state simulator.

dotnet run
dotnet run -s QuantumSimulator

Invocando o simulador dos Cadernos JuptyerInvoking the simulator from Juptyer Notebooks

Use o comando mágico I Q# %simular para executar a Q# operação.Use the IQ# magic command %simulate to run the Q# operation.

%simulate myOperation

Semear o simuladorSeeding the simulator

Por predefinição, o simulador de estado completo utiliza um gerador de números aleatórios para simular aleatoriedade quântica.By default, the full state simulator uses a random number generator to simulate quantum randomness. Para efeitos de teste, por vezes é útil ter resultados determinísticos.For testing purposes, it is sometimes useful to have deterministic results. Num programa C# pode fazê-lo fornecendo uma semente para o gerador de números aleatórios no QuantumSimulator construtor através do randomNumberGeneratorSeed parâmetro.In a C# program, you can accomplish this by providing a seed for the random number generator in the QuantumSimulator constructor via the randomNumberGeneratorSeed parameter.

    using (var sim = new QuantumSimulator(randomNumberGeneratorSeed: 42))
    {
        var res = myOperationTest.Run(sim).Result;
        ///...
    }

Fios de configuraçãoConfiguring threads

O simulador de estado completo utiliza o OpenMP para paralelizar a álgebra linear necessária.The full state simulator uses OpenMP to parallelize the linear algebra required. Por padrão, o OpenMP utiliza todos os fios de hardware disponíveis, o que significa que os programas com um pequeno número de qubits muitas vezes funcionam lentamente porque a coordenação que é necessária anãs o trabalho real.By default, OpenMP uses all available hardware threads, which means that programs with small numbers of qubits often runs slowly because the coordination that is required dwarfs the actual work. Pode fixá-lo definindo a variável ambiente OMP_NUM_THREADS para um número pequeno.You can fix this by setting the environment variable OMP_NUM_THREADS to a small number. Como regra geral do polegar, configuure um fio para até quatro qubits, e, em seguida, um fio adicional por qubit.As a rule of thumb, configure one thread for up to four qubits, and then one additional thread per qubit. Pode ser necessário ajustar a variável dependendo do seu algoritmo.You might need to adjust the variable depending on your algorithm.

Consulte tambémSee also