Runtime components for Q#
Перейти к файлу
César Zaragoza Cortés 41805fa43c
Update to credential factory (#1062)
Update to credential factory.
2022-07-18 11:49:33 -07:00
.devcontainer Migrate toolchain to LLVM 13 (#924) 2022-02-03 09:11:59 +00:00
.github Update codeowners (#1047) 2022-06-28 22:10:18 +00:00
AdvantageBenchmark Adopt .NET6 + VS2022 in Quantum Development Kit (#966) 2022-03-17 15:28:38 -07:00
build Add Sparse Sim to manifest, link against Spectre libs (#1054) 2022-07-09 02:55:43 +00:00
documentation New example notebook with conceptual overview of open quantum systems. (#750) 2021-06-23 19:14:54 +00:00
src Update to credential factory (#1062) 2022-07-18 11:49:33 -07:00
.gitattributes Implemented AssertMeasurement[Probability]() (#675) 2021-05-13 09:53:26 -07:00
.gitignore Support for continuous-angle rotations in Rust and C# layers of open systems simulator. (#1009) 2022-06-04 14:02:12 -07:00
.pre-commit-config.yaml Experimental simulators feature (#720) 2021-06-16 18:19:58 -07:00
CONTRIBUTING.md Fix broken documentation links (#584) 2021-03-25 02:12:35 +00:00
Cargo.toml Create Rust QIR Runtime Wrapper Library (#878) 2021-11-22 13:35:20 -08:00
LICENSE Initial commit 2019-06-06 10:20:50 -07:00
NOTICE.txt Add support for target packages (merge from feature/decomp) (#476) 2021-01-28 19:06:27 -08:00
NuGet.Config Revert "Update NuGet.Config (#546)" (#548) 2021-03-06 10:19:51 -08:00
README.md Updated the ReadMe for VS2022 spectre-mitigated libs and versions of other build tools (#1025) 2022-05-26 10:48:21 -07:00
Simulation.sln Adjustments to enable QIR targets (#1019) 2022-06-23 07:59:02 -07:00
bootstrap.ps1 Adopt .NET6 + VS2022 in Quantum Development Kit (#966) 2022-03-17 15:28:38 -07:00
cspell.json Support for continuous-angle rotations in Rust and C# layers of open systems simulator. (#1009) 2022-06-04 14:02:12 -07:00
global.json Updating packages to the latest release build (#1045) 2022-06-24 08:26:37 -07:00
omnisharp.json Support for continuous-angle rotations in Rust and C# layers of open systems simulator. (#1009) 2022-06-04 14:02:12 -07:00

README.md

Microsoft Quantum Development Kit: Q# runtime

Welcome to the Microsoft Quantum Development Kit!

This repository contains the runtime components for the Quantum Development Kit. It consists of the libraries and packages needed to create and simulate quantum applications using Q#.

  • Azure/: Source for client package to create and manage jobs in Azure Quantum.
  • Simulation/: Source for Q# simulation. Includes code generation, full-state and other simulators.
  • xUnit/: Source for the xUnit's Q# test-case discoverer.

New to Quantum?

See the introduction to quantum computing provided with the Quantum Development Kit.

Installing the Quantum Development Kit

If you're looking to use Q# to write quantum applications, please see the instructions on how to get started with using the Quantum Development Kit including the Q# compiler, language server, and development environment extensions.

Please see the installation guide for further information on how to get started using the Quantum Development Kit to develop quantum applications. You may also visit our Quantum repository, which offers a wide variety of samples on how to write quantum based programs.

Building from Source

Build Status

Note that when building from source, this repository is configured so that .NET will automatically look at the Quantum Development Kit prerelease feed in addition to any other feeds you may have configured.

Building QIR Runtime isn't enabled by default yet. Please see its readme for details.

Windows

To build on Windows:

  1. Install the pre-reqs:
    • Install CMake 3.20 or newer.
    • Install Visual Studio 2022. Make sure you install the following workloads:
      • Desktop development with C++
      • Spectre-mitigated libraries. Once Visual Studio has been installed, using the installer for the VS version of interest, click the"Modify" button, go to the "Individual Components" tab, search for "spectre", select the latest version of "MSVC v143 - VS 2022 C++ x64/x86 Spectre-mitigated libs", and click the "Modify" button to install the selected components
      • .NET 6.0 Runtime
  2. Run bootstrap.ps1 from PowerShell
    • pre-req (in PowerShell): Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    • The script might install additional tools (a specific compiler, build tools, etc)
    • Then it builds release flavor of the native (C++) full-state simulator and debug flavor of the Simulation solution.
    • You only need to run it once.
  3. Open and build the Simulation.sln solution in Visual Studio.

The Simulation.sln solution does not include the full-state quantum simulator. To change it, you can open the quantum-simulator.sln solution created during bootstrap in the src\Simulation\Native\build. To integrate your changes with the rest of the simulation components, you must manually build it.

macOS/Linux

To build on other platforms:

  1. Install the pre-reqs:
    • Install CMake 3.20 or newer
    • Install .NET 6.0 (version lower than 6.0.300 is recommended)
    • On WSL/Linux:
      • Install libomp needed for the native (C++) full-state simulator. sudo apt install libomp-13-dev. The possible result can be as in listing A below.
      • .NET 6.0: sudo apt install dotnet-sdk-6.0 dotnet-runtime-6.0. The possible result can be as in listing B below.

Listing A.

# In an empty directory:
dpkg -l *libomp*

# Desired=Unknown/Install/Remove/Purge/Hold
# | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
# |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
# ||/ Name             Version                                                         Architecture Description
# +++-================-===============================================================-============-=================================
# un  libomp-11-dev    <none>                                                          <none>       (no description available)
# ii  libomp-13-dev    1:13.0.1~++20220120110924+75e33f71c2da-1~exp1~20220120231001.58 amd64        LLVM OpenMP runtime - dev package
# un  libomp-13-doc    <none>                                                          <none>       (no description available)
# un  libomp-dev       <none>                                                          <none>       (no description available)
# un  libomp-x.y       <none>                                                          <none>       (no description available)
# un  libomp-x.y-dev   <none>                                                          <none>       (no description available)
# un  libomp5          <none>                                                          <none>       (no description available)
# ii  libomp5-13:amd64 1:13.0.1~++20220120110924+75e33f71c2da-1~exp1~20220120231001.58 amd64        LLVM OpenMP runtime

Listing B.

# In an empty directory:
dpkg -l *dotnet*

# Desired=Unknown/Install/Remove/Purge/Hold
# | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
# |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
# ||/ Name                      Version      Architecture Description
# +++-=========================-============-============-=======================================
# un  dotnet                    <none>       <none>       (no description available)
# ii  dotnet-apphost-pack-6.0   6.0.5-1      amd64        Microsoft.NETCore.App.Host 6.0.5
# ii  dotnet-host               6.0.5-1      amd64        Microsoft .NET Host - 6.0.5
# ii  dotnet-hostfxr-6.0        6.0.5-1      amd64        Microsoft .NET Host FX Resolver - 6.0.5
# un  dotnet-nightly            <none>       <none>       (no description available)
# ii  dotnet-runtime-6.0        6.0.5-1      amd64        Microsoft.NETCore.App.Runtime 6.0.5
# ii  dotnet-runtime-deps-6.0   6.0.5-1      amd64        dotnet-runtime-deps-debian 6.0.5
# ii  dotnet-sdk-6.0            6.0.300-1    amd64        Microsoft .NET SDK 6.0.300
# ii  dotnet-targeting-pack-6.0 6.0.5-1      amd64        Microsoft.NETCore.App.Ref 6.0.5
  1. Run bootstrap.ps1
    • The script might install additional tools (a specific compiler, build tools, etc)
    • Then it builds release flavor of the native (C++) full-state simulator and debug flavor of the Simulation solution.
    • You only need to run it once.
  2. From the command line, run:
    • dotnet build Simulation.sln

The Simulation.sln solution does not include the full-state simulator. To integrate any changes with the rest of the simulation components, you need to manually build it using make in the src\Simulation\Native\build folder.

Testing

All unit tests are part of the Simulation.sln solution. To run the tests:

  • From Visual Studio:
    • Open Test Explorer by choosing Test > Windows > Test Explorer from the top menu bar.
    • Run your unit tests by clicking Run All.
  • From the command line, run:
    • dotnet test Simulation.sln

Feedback

If you have feedback about the Q# simulators or any other runtime component, please let us know by filing a new issue! If you have feedback about some other part of the Microsoft Quantum Development Kit, please see the contribution guide for more information.

Reporting Security Issues

Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) at secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

For more details, please see CONTRIBUTING.md, or the contribution guide.