-
Notifications
You must be signed in to change notification settings - Fork 90
Conversation
|
@cgranade, I think we need to discuss this in API review. |
|
I could use some help with how to package this as a NuGet package. |
|
@msoeken The compiler repo contains an example for how the package needs to look like: https://github.com/microsoft/qsharp-compiler/tree/main/examples/CompilerExtensions/ExtensionPackage |
|
@bettinaheim @swernli I incorporated the API changes from microsoft/QuantumLibraries#426 and also added packaging. This PR is ready for review now. Thanks. |
Lgtm, but I haven't looked at the PR in full detail (e.g. checking for sufficient test coverage etc). |
cgranade
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Had a few last comments and thoughts, but looks good to me!
| return false; | ||
| } | ||
|
|
||
| var qualifiedName = new QsQualifiedName(alternativeOperation.Substring(0, period), alternativeOperation.Substring(period + 1)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To clarify, does this restrict the substitution target and alternative operation to be in the same namespace? Can alternativeOperation contain . characters to indicate a subnamespace of that namespace?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They can be in different namespaces. Here, I am just splitting the string into namespace + operation name and construct a QsQualifiedName instance from the two parts.
* Update API docs with more examples. (#701) Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> * QIR runtime heap alloc and heap free functions removed (#703) * QIR runtime heap alloc and heap free functions removed * Implement Feedback Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> * Add QIR Runtime to bootstrap script (#706) * Increasing the CMAKE required version for QIR (#708) This updates the required version for CMAKE in the CMakeLists.txt files for QIR, since we are now using features not correctly supported on older versions. * Added first version of Qubit manager to QIR (#696) This is the first version of the native Qubit Manager for QIR. Initial unit tests are included. Qubit Manager supports * Allocation and release of qubits including arrays of qubits. * Reuse encouraged/discouraged. Extending capacity enabled/disabled. * Restricted reuse areas and segments to support low-depth circuits. Qubit manager builds and tests are run as part of the qir-runtime-unittests. It is used in the bridge to the full state simulator. Commits: * Added first draft version of Qubit manager to QIR * Review feedback. Rearranged functions, QubitIdType, consts, etc. * include cstring for memcpy * Renamed QubitManager * Adjustment after QubitManager rename * Moved QubitManager.h to public * Using QubitManager, adjusted defaults, minor fixes * Removed unused comment * CR feedback: fixes to types, failures, braces, etc. * CR feedback - updated types, unique_ptr, etc. * Auxilliary stuff is now nested in CQubitmanager * Initializer lists * Updated CRestrictedReuseAreaStack and used iterator. * int32_t, more checks, some refactoring * Refactoring: marking and counting is done in allocate/release qubit id * Deletion of qubit object, protected members for overrides, Is...Qubit renames * Moved allocated marking to listQubitListInSharedArray class * Added comments, mostly status array * Tests, refactoring, replaced IsFreeQubit with IsFreeQubitId Co-authored-by: Dmitry Vasilevsky <dmitryv@microsoft.com> * Added treating warnings as errors (#718) * Added "QIR Runtime API Design Guidelines" (#711) * Initial add of QIR-RT-API-Design-Guidelines.md * Use of exceptions recommendation (#719) * Co-authored-by: Mathias Soeken * Co-authored-by: DmitryVasilevsky * Auto emulation rewrite step (#514) * First proposal for auto emulation feature. * Deprecation. * Update to newer version. * Successful tests. * Compatibility checks. * Do not change this file. * Signature checking too restrictive. * Add integration test. * Update QDK version. * Incorporate microsoft/QuantumLibraries#426. * Rename emulation to substitution. * Rename projects and directories. * Packaging. * Fix line-feed problems. * Fix LF. * Adressing reviewer feedback. * Update Sdk version. * Fixes dependency error. Co-authored-by: Mathias Soeken <masoeken@microsoft.com> Co-authored-by: Chris Granade <chgranad@microsoft.com> Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> * Added compiler warning flags -Wall, -Wextra (#725) * Added -Wall, -Wextra * Add DelaySign.cs to AutoSubstitution project. (#729) * extra sln Co-authored-by: Chris Granade <chgranad@microsoft.com> Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> Co-authored-by: Pankaj Patil <pankaj.patil2099@hotmail.com> Co-authored-by: DmitryVasilevsky <60718360+DmitryVasilevsky@users.noreply.github.com> Co-authored-by: Dmitry Vasilevsky <dmitryv@microsoft.com> Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com> Co-authored-by: Mathias Soeken <mathias.soeken@microsoft.com> Co-authored-by: Mathias Soeken <masoeken@microsoft.com>
* Replace generated files in Quantum.Client with reference to the Azure.QuantumJobs package (#697) * Changes to enable Mocks for iq# and integrate with Live tests (#707) * Credentials parameter (#721) * Move to CredentialFactory. * Adding support for DeviceCode * Merge main (#731) * Update API docs with more examples. (#701) Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> * QIR runtime heap alloc and heap free functions removed (#703) * QIR runtime heap alloc and heap free functions removed * Implement Feedback Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> * Add QIR Runtime to bootstrap script (#706) * Increasing the CMAKE required version for QIR (#708) This updates the required version for CMAKE in the CMakeLists.txt files for QIR, since we are now using features not correctly supported on older versions. * Added first version of Qubit manager to QIR (#696) This is the first version of the native Qubit Manager for QIR. Initial unit tests are included. Qubit Manager supports * Allocation and release of qubits including arrays of qubits. * Reuse encouraged/discouraged. Extending capacity enabled/disabled. * Restricted reuse areas and segments to support low-depth circuits. Qubit manager builds and tests are run as part of the qir-runtime-unittests. It is used in the bridge to the full state simulator. Commits: * Added first draft version of Qubit manager to QIR * Review feedback. Rearranged functions, QubitIdType, consts, etc. * include cstring for memcpy * Renamed QubitManager * Adjustment after QubitManager rename * Moved QubitManager.h to public * Using QubitManager, adjusted defaults, minor fixes * Removed unused comment * CR feedback: fixes to types, failures, braces, etc. * CR feedback - updated types, unique_ptr, etc. * Auxilliary stuff is now nested in CQubitmanager * Initializer lists * Updated CRestrictedReuseAreaStack and used iterator. * int32_t, more checks, some refactoring * Refactoring: marking and counting is done in allocate/release qubit id * Deletion of qubit object, protected members for overrides, Is...Qubit renames * Moved allocated marking to listQubitListInSharedArray class * Added comments, mostly status array * Tests, refactoring, replaced IsFreeQubit with IsFreeQubitId Co-authored-by: Dmitry Vasilevsky <dmitryv@microsoft.com> * Added treating warnings as errors (#718) * Added "QIR Runtime API Design Guidelines" (#711) * Initial add of QIR-RT-API-Design-Guidelines.md * Use of exceptions recommendation (#719) * Co-authored-by: Mathias Soeken * Co-authored-by: DmitryVasilevsky * Auto emulation rewrite step (#514) * First proposal for auto emulation feature. * Deprecation. * Update to newer version. * Successful tests. * Compatibility checks. * Do not change this file. * Signature checking too restrictive. * Add integration test. * Update QDK version. * Incorporate microsoft/QuantumLibraries#426. * Rename emulation to substitution. * Rename projects and directories. * Packaging. * Fix line-feed problems. * Fix LF. * Adressing reviewer feedback. * Update Sdk version. * Fixes dependency error. Co-authored-by: Mathias Soeken <masoeken@microsoft.com> Co-authored-by: Chris Granade <chgranad@microsoft.com> Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> * Added compiler warning flags -Wall, -Wextra (#725) * Added -Wall, -Wextra * Add DelaySign.cs to AutoSubstitution project. (#729) * extra sln Co-authored-by: Chris Granade <chgranad@microsoft.com> Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> Co-authored-by: Pankaj Patil <pankaj.patil2099@hotmail.com> Co-authored-by: DmitryVasilevsky <60718360+DmitryVasilevsky@users.noreply.github.com> Co-authored-by: Dmitry Vasilevsky <dmitryv@microsoft.com> Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com> Co-authored-by: Mathias Soeken <mathias.soeken@microsoft.com> Co-authored-by: Mathias Soeken <masoeken@microsoft.com> * Apply suggestions from code review Co-authored-by: Chris Granade <chgranad@microsoft.com> * Incorporating feedback. * Build 0.17.2106.147878. Co-authored-by: Chris Granade <chgranad@microsoft.com> Co-authored-by: Stefan J. Wernli <swernli@microsoft.com> Co-authored-by: Pankaj Patil <pankaj.patil2099@hotmail.com> Co-authored-by: DmitryVasilevsky <60718360+DmitryVasilevsky@users.noreply.github.com> Co-authored-by: Dmitry Vasilevsky <dmitryv@microsoft.com> Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com> Co-authored-by: Mathias Soeken <mathias.soeken@microsoft.com> Co-authored-by: Mathias Soeken <masoeken@microsoft.com>
This PR implements a rewrite step that can link an operation
Opto a set of pairs of an alternative operationsAltOpand a simulatorSim, such thatAltOpis executed as a replacement forOpwhen being invoked inSim.For example, we could write:
to replace calls to
ApplyAndwithCCNOTwhen being called inToffoliSimulator.This PR can solve the issue raised in #24.
To be done: