You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implementation of the cudaq::apply_noise feature (#2635)
* Fine-grain kraus channel application in a kernel
* updates
* compile time checks for number of args
* better type safety on input args
* cleanup
* small fixes
* update to use integer key for registry
* remove old headers
* remove the name member
* [core] Support for apply_noise.
Add an apply_noise operator.
Teach the bridge to recognize cudaq::apply_noise and lower it.
Add a pass to erase apply_noise operations.
Modify QIR codegen to generate the C++ callback.
Make test for elimination more robust.
Arguments have to be passed by rvalue reference since some of them are
qubits, which cannot be copied. Thread the pointer through all the
places where there were floating-point types. Update tests.
Add a bit more smart to the cudaq::apply_noise stub. Automatically counts
the leading number of floating-point arguments, so the user doesn't have
to supply this information. Uses the applyNoiseImpl<> template as is.
Add some constraints to fine-tune the apply_noise overload selection.
Add std::vector<double> overload processing to the bridge.
* Make the key an i64 and verify it.
* Rope off the C++20 sections.
* Make the noise_func symbol optional.
* Add to the roundtrip test.
* Fix test.
* Fix signature.
* Add cc.call_vararg op.
* Add codegen test.
* Fix test.
* Enable C++17 in the headers.
* Add python support for apply_noise (#4)
* Start on Python apply_noise support
* add some docs
* Extend __quantum__qis__apply_kraus_channel_generalized() to support spans
as part of the variadic arguments.
* Fix typo.
* Content checks. * Do it again.* And again.
* Catch curious exception being thrown.
* More whining about formatting.
* Try to exclude register_channel to avoid the error.
* Take care of review comments.
* Address PR comments, checks on corner cases, warnings emitted
* Better noise model checking, handle cases with no context
* Rework the noise model header files to support float and double.
* clang-format
* Add enum to the apply_noise entry point to select the floating point type.
* Move template to lambda.
* Fix a bug and more unit tests.
* Add another test.
---------
Signed-off-by: Alex McCaskey <[email protected]>
Signed-off-by: Eric Schweitz <[email protected]>
Co-authored-by: Alex McCaskey <[email protected]>
0 commit comments