Skip to content
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

v3.7.0 #387

Merged
merged 25 commits into from
Sep 22, 2023
Merged

v3.7.0 #387

merged 25 commits into from
Sep 22, 2023

Commits on Aug 17, 2023

  1. Configuration menu
    Copy the full SHA
    a23f518 View commit details
    Browse the repository at this point in the history

Commits on Aug 19, 2023

  1. Configuration menu
    Copy the full SHA
    9e2f3ce View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    40f936f View commit details
    Browse the repository at this point in the history
  3. setup automatic workspace memory

    Note that this forces our cuQuantum backend to require its users to have a stream-ordered memory pool compatible GPU (which seems fair enough)
    TysonRayJones committed Aug 19, 2023
    Configuration menu
    Copy the full SHA
    240d5ab View commit details
    Browse the repository at this point in the history
  4. added type adapters

    for converting between QuEST's interface and backend types (like Complex, ComplexMatrixN, and bitmasks) and cuQuantum's
    TysonRayJones committed Aug 19, 2023
    Configuration menu
    Copy the full SHA
    ec08912 View commit details
    Browse the repository at this point in the history
  5. added wrapped operators

    Added all operators (like unitaries, sub-diagonal gates) which can be directly mapped to a cuQuantum calls.
    
    The cuQuantum calls are:
    - custatevecApplyMatrix
    - custatevecApplyPauliRotation
    - custatevecSwapIndexBits
    - custatevecApplyGeneralizedPermutationMatrix
    
    It appears that the remainder of QuEST's operators (decoherence channels, full-state diagonals, and phase functions) will need bespoke kernels
    TysonRayJones committed Aug 19, 2023
    Configuration menu
    Copy the full SHA
    bb38e38 View commit details
    Browse the repository at this point in the history

Commits on Aug 20, 2023

  1. added Thrust

    TysonRayJones committed Aug 20, 2023
    Configuration menu
    Copy the full SHA
    7b7c197 View commit details
    Browse the repository at this point in the history

Commits on Aug 24, 2023

  1. added unit-test init-state check

    Before each unit test, the initial state of the registers (assumed to be in the result of initDebugState) is now explicitly checked.
    
    This prevents passing tests when initDebugState() itself is failing, and (for example) yielding an all-zero state which sneakily satisfies some unit tests.
    
    This will likely noticeably increase the total unit-tests runtime, but will gaurantee tests visibly, instantly fail when (for example) the GPU configuration is wrong and produces all-zero states
    TysonRayJones authored Aug 24, 2023
    Configuration menu
    Copy the full SHA
    f06aae3 View commit details
    Browse the repository at this point in the history
  2. removed obsolete doc folder

    since documentation is now generated by Github Actions and published on Github Pages without repo caching
    TysonRayJones committed Aug 24, 2023
    Configuration menu
    Copy the full SHA
    d34dc21 View commit details
    Browse the repository at this point in the history
  3. removed defunct debugging routines

    which were unavailable in the API, and were not used internally nor in tests. Furthermore, some of them (`initStateOfSingleQubit`) did something *very* different to what its comments suggested - and inefficiently!
    TysonRayJones authored Aug 24, 2023
    Configuration menu
    Copy the full SHA
    2c465c2 View commit details
    Browse the repository at this point in the history
  4. added state initialisers

    although we are missing imports to avoid git conflict:
    
    # include <thrust/sequence.h>
    # include <thrust/iterator/zip_iterator.h>
    # include <thrust/for_each.h>
    TysonRayJones authored Aug 24, 2023
    Configuration menu
    Copy the full SHA
    564851e View commit details
    Browse the repository at this point in the history
  5. added wrapped decoherence

    Added all decoherence channels which can be directly mapped (without unacceptable performance damage) to a cuQuantum call.
    
    The cuQuantum calls are:
    - custatevecApplyMatrix
    - custatevecApplyGeneralizedPermutationMatrix
    
    and are called with matrices (some, diagonal) describing the channel superoperators.
    
    The remaining decoherence channels require linearly combining device vectors (may use Thrust), bespoke GPU kernels, or a clever decomposition of the channel (e.g. 2 qubit depolarising) into a sequence of cuStateVec calls
    TysonRayJones committed Aug 24, 2023
    Configuration menu
    Copy the full SHA
    67153b9 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    d616481 View commit details
    Browse the repository at this point in the history
  7. optimised diagonal operators

    Changed several operators represented by diagonal matrices but previously effected as one-qubit general matrices, to instead be effected as diagonals (duh)
    TysonRayJones committed Aug 24, 2023
    Configuration menu
    Copy the full SHA
    b047972 View commit details
    Browse the repository at this point in the history

Commits on Sep 19, 2023

  1. added calculations

    TysonRayJones authored Sep 19, 2023
    Configuration menu
    Copy the full SHA
    14b0a59 View commit details
    Browse the repository at this point in the history

Commits on Sep 20, 2023

  1. added phase functions

    TysonRayJones authored Sep 20, 2023
    Configuration menu
    Copy the full SHA
    7e2362a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f7c6ee6 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c8d9d77 View commit details
    Browse the repository at this point in the history
  4. added cuQuantum to doc

    TysonRayJones committed Sep 20, 2023
    Configuration menu
    Copy the full SHA
    f7515b0 View commit details
    Browse the repository at this point in the history
  5. Merge pull request #386 from QuEST-Kit/cuquantum

    integrated a new cuQuantum and Thrust GPU backend
    TysonRayJones authored Sep 20, 2023
    Configuration menu
    Copy the full SHA
    c63a0f8 View commit details
    Browse the repository at this point in the history

Commits on Sep 21, 2023

  1. Made MPI calls in exchangeStateVectors non-blocking

    Jakub Adamski authored and TysonRayJones committed Sep 21, 2023
    Configuration menu
    Copy the full SHA
    aa5ccd1 View commit details
    Browse the repository at this point in the history
  2. added Jakub Adamski to authorlist

    for PR #380
    TysonRayJones committed Sep 21, 2023
    Configuration menu
    Copy the full SHA
    8415f64 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    d3022a6 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    3d8b6b7 View commit details
    Browse the repository at this point in the history
  5. improved unitarity & CPTP validation

    Previously, an ad-hoc measure of distance from unitarity (or CPTP) was used.
    
    Now, a unitarity U is deemed valid only if every element of U*dagger(U) has a Euclidean distance of at most REAL_EPS from the corresponding Identity matrix element.
    
    A similiar scheme for CPTP Kraus channels is used.
    
    This effectively loosens the precision required of unitaries and Kraus maps to functions like multiQubitUnitary and multiQubitKrausMap
    TysonRayJones committed Sep 21, 2023
    Configuration menu
    Copy the full SHA
    29824c7 View commit details
    Browse the repository at this point in the history