-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Block System #11
Conversation
Pull Request Test Coverage Report for Build 83
💛 - Coveralls |
Codecov Report
@@ Coverage Diff @@
## master #11 +/- ##
===========================================
- Coverage 100% 36.62% -63.38%
===========================================
Files 3 8 +5
Lines 60 172 +112
===========================================
+ Hits 60 63 +3
- Misses 0 109 +109
Continue to review full report at Codecov.
|
Refactor composite blocksabstract type hierarchy: abstract type AbstractBlock{N} end
abstract type LeafBlock{N} <: AbstractBlock{N} end
abstract type AbstractGate{N} <: LeafBlock{N} end Do we still need a abstract block for unitaries? abstract type UnitaryBlock{N} <: AbstractBlock{N} end
ChainBlock <: UnitaryBlock # or AbstractBlock
KronBlock <: UnitaryBlock # or AbstractBlock ChainBlock
KronBlockCan MeasureMeasure will only be implemented as a method:
|
Another change, since the matrix form of |
|
Cache LevelAdd a new type parameter for each block types to specify its cache level. The block interface is extended to apply!(block, reg, cache_level=0) # do not cache by default
cache!(block, level) # requires level, force update all the cache
dispatchin!(block, params) # dispatch params in block |
* add two more helper functions: sprand_hermitian, sprand_unitary.
Updating the tutorials Part 1 to 4
* monor fix * seperate YaoExtensions * new H2 atoms * update docs * update Grover search
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Initial commit * Files generated by PkgTemplates PkgTemplates version: 0.7.5 * plots for ZX-diagrams * rename plot * plots for ZX-diagrams (#10) * plots for ZX-diagrams * rename plot * CompatHelper: add new compat entry for "Compose" at version "0.9" (#11) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * CompatHelper: add new compat entry for "LightGraphs" at version "1.3" (#12) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Rogerluo <rogerluo.rl18@gmail.com> * CompatHelper: add new compat entry for "GraphPlot" at version "0.4" (#13) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Rogerluo <rogerluo.rl18@gmail.com> * CompatHelper: add new compat entry for "ZXCalculus" at version "0.1" (#15) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Rogerluo <rogerluo.rl18@gmail.com> * CompatHelper: add new compat entry for "Colors" at version "0.12" (#14) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Rogerluo <rogerluo.rl18@gmail.com> * rm logs * fix compat * CompatHelper: bump compat for "Compose" to "0.9" (#16) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * update for new Multigraph backend * update zx * update project.toml * update project.toml * update compat * revert version bump due to an error occured in IonCLI * update compat * bump version to 0.2.1 * bump version to 0.3.0 * fix version conflict * fix version compat * Basic circuit vizualization (#22) * new circuit plot * fine tune * fine tune * rm 1.0 travis CI * make CNOT a CNOT * general update Co-authored-by: Rogerluo <rogerluo.rl18@gmail.com> * bump version to 0.4.0 * Update TagBot.yml * add compat * add compat * Polish code and fix #3 (#24) * polish code, make the implementation more general * cxx.png * bump version to 0.4.1 * use plot interface for circuits * nvm * add example for ZXCalculus * fix format * fix fig * add Multigraphs backend (#30) * add Multigraphs * up compat * CompatHelper: add new compat entry for "GraphPlot" at version "0.4" (#31) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix the plot for ZXGraph with phase gadgets (#27) * bump version to 0.5.0 * works * viz scale gate (unitary) * fix phase * fix tests * update viznet * CompatHelper: bump compat for "ZXCalculus" to "0.4" (#37) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * new measure (#39) * New multiqubit gate (#40) * new measure * new mutiple qubit gates * multi-gate labeling * allow changing line color * allow changing line color (#42) * Update Project.toml * Initial commit * Files generated by PkgTemplates PkgTemplates version: 0.7.23 * update * tests pass * update tests * CompatHelper: add new compat entry for OMEinsum at version 0.6, (keep existing compat) * CompatHelper: add new compat entry for Yao at version 0.6, (keep existing compat) * update docs * Update README.md * setup ci * update project.toml * Update README.md * bump OMEinsumContractionOrders version * Update Project.toml * Add vega plot backend (#43) * rework with Compose * fix tests * fix version * add Vega backend * add tests * resolve version * Revert "Add vega plot backend (#43)" (#44) This reverts commit f04e3f4. * fix tests, upgrade Graphs * bump version, add codecov * Update README.md * polish viz circuit (#47) * Update TagBot.yml * boundary condition specification * Update Project.toml * Add instructions for changing plot attributes (#49) * Add attribute instruction plots * Update README.md * Delete attr_circuit_1.svg * Update README.md * Fixed a tiny one letter typo (#50) Really sorry!!! 😬 * update yao * update deps (#51) * update circuit * fix readme example * bump version * bump version * Update README.md * Update Project.toml (#52) Just noticed that I wasn't able to upgrade to Yao 0.8 with YaoPlots. This should do it :D * Update Project.toml * Bump version of BitBasis in Project.toml (#53) Sorry! Forgot about this one 🥲 * Update Project.toml * update * better visualization of labeled multi-qubit circuits (#55) * update * update * update * to basic style * update * update vizcircuit * fix tests * fix tests * rm wg * Update Project.toml * fix multi-level * Update CI.yml * bump version * [WIP] Switch to Luxor backend (#56) * update luxor * fix line break * fix labelled example * fix margin * fix test * ... * more spacious * ... * seperate zx calculus * upgrad OMEinsum * update dpes * fix #58 (#59) * barrier for chain (#60) * Update README.md * add type TensorNetwork * update README * fix show * cuda extension * fix cuda ext * Plot bloch sphere (#62) * new bloch * update README * Update Project.toml * Update Project.toml * optimize projection gate * update * fix a dispatch * impove test * Update Project.toml * Update README.md * Update README.md * Subtree merged in lib/YaoToEinsum * complete YaoToEinsum merge * complete YaoPlots merge * clean up images --------- Co-authored-by: Roger-luo <rogerluo.rl18@gmail.com> Co-authored-by: Chen Zhao <zhaochen17@mails.ucas.ac.cn> Co-authored-by: Chen Zhao <50411747+ChenZhao44@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Chetan Vardhan <51269425+VarLad@users.noreply.github.com>
Interface of
AbstractBlock
Properties
nqubits
number of qubitscache_level
cache level of this blockfull
get this block's dense matrix formsparse
get this block's sparse matrix formMethods
apply!
apply this block to a registerupdate!
update parameters according to given sequencecache!
force cache all blocks that under given cache level