Skip to content

Releases: QuTech-Delft/OpenQL

Release 0.12.2

09 Jan 17:11
Compare
Choose a tag to compare
  • Added:

    • Conan as package manager.
    • res folder for resources.
  • Changed:

    • Different upgrades: C++23, CMake 3.12, Python 3.8 to 3.12.
    • GitHub workflows and jobs.
    • File reorganization: docs, include, src, test.
  • Removed:

    • Git submodules.
    • CMake folder.

Release 0.11.1: fix wheel size on Linux/GCC

06 Jan 16:00
Compare
Choose a tag to compare

This release doesn't include much change, it just allows us to upload our wheels to PyPI, they were becoming too large.

Release 0.11.0

06 Jan 13:20
Compare
Choose a tag to compare

A long-waited release...

Added

  • CC backend:
    • support for cQASM 1.2 features through new IR
      • limitations
        • integer values must be non-negative
    • support for resource constrained scheduler
    • creates .map file reporting measurement statements present in input, to allow retrieving measurements downstream
  • support for Python up to 3.11

Changed

  • pass dec.Instructions: duration=0 in new-style decomposition rules now disables checking whether expansion fits, allowing automatic calculation of duration (and requiring scheduling after decomposition of such rules)
  • CC backend:
    • now uses new IR
    • no longer requires key "cc" to be present in instructions that define gate decompositions
    • key "readout_mode" no longer used
      • classification of gates as measurement - which is used for the resource constrained scheduler, and to output a map of measurements - now based on signal definition ("signal/type" equals "measure" and "signal/value" non-empty)
      • classification of gates as real-time measurement now based on signal definition ("signal/type" equals "measure" and "signal/value" empty)
    • absence of key "cc" now implies empty "signal", so "cc": { "signal": [] } is no longer necessary
  • passes and architectures self-register statically to their respective factories
  • initial placer uses new IR and new MIP solver called HiGHS

Removed

  • CC backend:
    • support for JSON key "pragma/break" for instruction definitions
    • macro expansion for JSON key instruction/signal/value (unused anyway)
  • support for sweep points in API and the WriteSweepPointsPass
  • support for Python up to and including 3.6

Fixed

  • pass dec.Instructions
    • corrected ordering of instruction decomposition (which reversed multi-statement decompositions)
    • decomposed instructions were silently made unconditional, we now copy instruction condition to decomposed instructions

0.11.0-alpha.2 Test release

07 Jul 12:59
4bcef1c
Compare
Choose a tag to compare
Pre-release

Test release to see if wheels for python 3.10 and recent manylinux versions are correctly created and pushed to pypi.

0.11.0-alpha.1 Test release

07 Jul 11:53
ce97828
Compare
Choose a tag to compare
Pre-release

Test release to see if wheels for python 3.10 and recent manylinux versions are correctly created and pushed to pypi.

Release 0.10.0: new internal representation with full cQASM 1.2 control-flow support

15 Jul 17:01
be0b1dd
Compare
Choose a tag to compare

Added

  • scalability options for coping with large multi-core systems, including a progress bar for the mapping process
  • initial implementation of the Diamond architecture developed for Fujitsu (lead by Stephan Wong)
  • full cQASM 1.2 read and write support, with options for different version levels and various language quirks
  • new internal representation that encompasses the entire cQASM 1.2 language, and has many new generalized platform features
  • lossless conversion functions between the two IR representations until all passes have been converted to the new representation
  • new pass-based decomposition logic that supports arbitrary cQASM 1.2 code for the expansion and doesn't clobber scheduling information
  • new pass for converting structured cQASM 1.2 control flow to basic block form
  • new list scheduler based on the new IR

Changed

  • all written cQASM files are now in 1.2 format by default
  • the cQASM reader no longer has a JSON configuration file for mapping cQASM gates to OpenQL gates; this translation is now part of OpenQL's platform data
  • the old scheduler is replaced with a new implementation for most option variations, that outputs slightly different schedules
  • statistics report output is also formatted slightly different, though information content is the same
  • CC backend:
    • scheduling is now done using resource constraints by default

Fixed

  • excessive memory usage and slow platform construction for large multi-core systems

Release 0.9.0: major internal improvements, architecture system, and pass management

27 May 20:39
fd70c71
Compare
Choose a tag to compare

Added

  • architecture system: platform and compilation strategy defaults are now built into OpenQL, preventing the need for users to copypaste configuration files from the tests directory
  • interface (C++ and Python) to compile cQASM 1.x
  • allow 'wait' and 'barrier' in JSON section 'gate_decomposition'
  • CC backend:
    • improved reporting on JSON semantic errors
    • added check for dimension of "instruments/qubits" against "instruments/ref_control_mode/control_bits"
    • added check for dimension of "instructions//cc/[signals,ref_signal]/value" against "instruments/ref_control_mode/control_bits"
    • added cross check of "instruments/ref_control_mode" against "instrument_definitions"
    • added support for "pragma/break" in JSON definition to define 'gate' that breaks out of loop
    • added support to distribute measurement results via DSM
    • added support for conditional gates
    • added compile option "--backend_cc_run_once"
    • added compile option "--backend_cc_verbose"

Changed

  • pass management: instead of a hardcoded compilation strategy, the strategy can be adjusted and fine-tuned manually
  • pass options: instead of doing everything with global options, global options were replaced with pass options as much as possible
  • most documentation is now generated from code and can be queried using API calls
  • scheduler resources are completely reworked to be made more generic
  • major internal refactoring and restructuring to facilitate the above two things
  • CC backend:
    • renamed JSON field "signal_ref" to "ref_signal"
    • renamed JSON field "ref_signals_type" to "signal_type"
    • changed JSON field "static_codeword_override" to be a vector with one element per qubit parameter. To edit a JSON file using Sublime, use Replace with Regular Expressions: find="static_codeword_override": ([0-9])+, replace="static_codeword_override": [\1]
    • adopted new module synchronization scheme ("seq_bar semantics", requires CC software >= v0.2.0, PycQED after commit 470df5b)
    • JSON field "instruction/type" no longer used by backend, use "instruction/cc/readout_mode" to flag measurement instructions
    • allow specification of 2 triggers in JSON field "control_modes/*/trigger_bits" to support dual-QWG
    • changed label in generated code from "mainLoop" to "mainLoop". Do not start kernel names with "" (this should be specified by the API)
    • removed initial 1 cycle (20 ns) delay at start of kernels (resulting from bundle start_cycle starting at 1)
    • correctly handle kernel names containing "_" in conjunction with looping (formerly duplicate labels could arise)
    • added "seq_out 0,1" to program start to allow tracing of actual program start

Removed

  • CC-light code generation, as the CC-light is being phased out in the lab, and its many passes were obstacles for pass management and refactoring
  • rotation optimization based on matrices; matrices in general were removed entirely because no one was using it
  • the commute variation pass, as it has been superseded by in-place commutations within the scheduler
  • the toffoli decomposition pass, as it wasn't really used; to decompose a toffoli gate, use generic platform-driven decomposition instead
  • the defunct fidelity estimation logic from metrics.cc; this may be added again later, but requires lots of cleanup and isn't currently in use
  • quantumsim and qsoverlay output; apparently this was no longer being used, and it was quite intertwined with the CC-light backend

Fixed

  • changed register used for FOR loop, so it doesn't clash with delay setting
  • fixed documentation for python setup and running tests
  • various miscellaneous bugs, dangling pointers, and memory leaks

Release 0.8.1.dev4: test release for CI pipeline

25 Aug 10:14
f6f6bb9
Compare
Choose a tag to compare
Merge pull request #345 from QE-Lab/fix-release-process

Fix release process

CC backend support and other fixes

31 Oct 10:06
Compare
Choose a tag to compare

Added

  • support for CC backend

Changed

Removed

Fixed

  • fixed issue with duplicate kernel names
  • updated json library to fix osx builds

Hotfix Release

02 Sep 08:22
Compare
Choose a tag to compare

Fixed

  • fixed issue with correct python library picking on tud win systems

Changed

  • re-factored folders