|
| 1 | +# Release Notes |
| 2 | + |
| 3 | +## nv-quantum-benchmarks v0.6.1 |
| 4 | + |
| 5 | +* New features & enhancements: |
| 6 | + |
| 7 | + * Enable `--reuse` flag (enabled by default) for cudaq. It will reuse the JIT-compiled circuit from warmup runs for benchmarking, so the JIT compilation time will not be measured as part of the execution time. Use the `--no-reuse` flag to disable this behavior. |
| 8 | + * Add a default seed for pauli string for `--compute-mode expectation`. |
| 9 | + |
| 10 | + |
| 11 | +## nv-quantum-benchmarks v0.6.0 |
| 12 | + |
| 13 | +* New features & enhancements: |
| 14 | + |
| 15 | + * Set default cudaq simulator to CPU (`qpp-cpu`). |
| 16 | + * Explicitly set default fuse sizes for cudaq to `None`, therefore cuquantum chooses the best fuse size based on the architecture. |
| 17 | + * Update the other backends than cudaq to auto select fuse size to the best of their ability. The only backend that can not do that right now is Qsim and the related family. |
| 18 | + * Installing the benchmarking repository inside the CUDA Quantum container is not as simple as `pip install .`, documenting it in the README as a point of reference. |
| 19 | + * Fix the code to also run on CPU-only containers. |
| 20 | + |
| 21 | +*Compatibility notes*: |
| 22 | + |
| 23 | +* Support Pennylane version 0.42.0. Fix ControlledQubitUnitary syntax for the new version. Remove the support of very old versions <0.33.0. Support MPI to run with multi-GPU for lightning-kokkos and lightning-gpu. |
| 24 | + |
| 25 | + |
| 26 | +## nv-quantum-benchmarks v0.5.0 |
| 27 | + |
| 28 | +* New features & enhancements: |
| 29 | + |
| 30 | + * Tool Renamed: The suite formerly known as `cuquantum-benchmarks` is now renamed to `nv-quantum-benchmarks`. |
| 31 | + |
| 32 | + * CUDA-Q (cudaq) Support: CUDA-Q (cudaq) is now available as both a frontend and backend. Newly supported frontend and backends include: |
| 33 | + |
| 34 | + - `--frontend`: cudaq |
| 35 | + - `--backend`: cudaq-cusv, cudaq-mgpu, cudaq-cpu |
| 36 | + |
| 37 | + * Expanded Compute Modes: The `--compute-mode` argument is now available for all backends. Modes include: |
| 38 | + |
| 39 | + - amplitude |
| 40 | + - statevector |
| 41 | + - sampling |
| 42 | + - expectation |
| 43 | + |
| 44 | + Note: Not all backends support every compute mode, and each backend has its own default. |
| 45 | + |
| 46 | + * Enhanced Pauli String Options: New arguments for customizing Pauli strings in your benchmarks: |
| 47 | + |
| 48 | + - `--pauli-string`: Directly specify the desired Pauli string. |
| 49 | + - `--pauli-seed`: Set a seed for generating random Pauli strings. |
| 50 | + - `--pauli-identity-fraction`: Control the fraction of identity operators when creating random Pauli strings. |
| 51 | + |
| 52 | + * QAOA Benchmark Update: The Quantum Approximate Optimization Algorithm (QAOA) benchmark now selects gammas and betas randomly for more diverse tests. |
| 53 | + |
| 54 | + * Internal Improvements: Extensive code refactoring and cleanup for better maintainability and extensibility. |
| 55 | + |
| 56 | + |
| 57 | +## cuquantum-benchmarks v0.4.0 |
| 58 | + |
| 59 | +* New features & enhancements: |
| 60 | + |
| 61 | + * Add `--compute-target` argument for cutn backend. |
| 62 | + * Make dependency on cuquantum-python optional. |
| 63 | + |
| 64 | +* Bugs fixed: |
| 65 | + |
| 66 | + * Fixes Pennylane kokkos > 0.33.0. |
| 67 | + * Fix the wrong implementation for Qiskit version number checking. |
| 68 | + |
| 69 | + |
| 70 | +## cuquantum-benchmarks v0.3.0 |
| 71 | + |
| 72 | +* New features & enhancements: |
| 73 | + |
| 74 | + * Add more API-level benchmarks. See `cuquantum-benchmarks api --help` and e.g. `cuquantum-benchmarks api --benchmark tensor_decompose --help` for more details. |
| 75 | + |
| 76 | + - `apply_generalized_permutation_matrix` |
| 77 | + - `cusv_sampler` |
| 78 | + - `tensor_decompose` |
| 79 | + |
| 80 | + * Improvements to the `cutn` backend: |
| 81 | + |
| 82 | + - Support `--nhypersamples` CLI option to control the number of hypersamples. |
| 83 | + - The contraction optimizer outcome is printed if the benchmark is run with the verbose mode (`-v`). |
| 84 | + |
| 85 | + * All benchmarks are now covered by the NVTX ranges for ease of profiling. |
| 86 | + |
| 87 | + - This requires the `nvtx` Python package, installable via `pip install nvtx` or `conda install -c conda-forge nvtx`. |
| 88 | + |
| 89 | + * The help messages for CLI options are now clearer. |
| 90 | + |
| 91 | + - As the benchmark suite grows, some CLI options are dynamically generated/recognized (based on the top-level inputs, such as "api"/"circuit"). Be sure to do the `--help` query for the selected benchmark and/or frontend-backend. |
| 92 | + |
| 93 | + * Internal code refactoring and cleanup. |
| 94 | + |
| 95 | +* Bugs fixed: |
| 96 | + |
| 97 | + * Fix a bug that the subdirectories in the cache dir might not be created correctly. |
| 98 | + * Fix a bug in our Qiskit circuit generator. |
| 99 | + * Various fixes for the `cusvaer` backend: |
| 100 | + |
| 101 | + - Fix an unexpected device index is set. |
| 102 | + - Fix unnecessary synchronization. |
| 103 | + |
| 104 | + |
| 105 | +## cuquantum-benchmarks v0.2.0 |
| 106 | + |
| 107 | +* Breaking changes: |
| 108 | + |
| 109 | + * To run the circuit-level benchmarks, a `circuit` subcommand needs to be added. For example, |
| 110 | + |
| 111 | + ```bash |
| 112 | + cuquantum-benchmarks --frontend cirq --backend qsim --benchmark qft --nqubits 16 # v0.1.0 |
| 113 | + ``` |
| 114 | + |
| 115 | + becomes |
| 116 | + |
| 117 | + ```bash |
| 118 | + cuquantum-benchmarks circuit --frontend cirq --backend qsim --benchmark qft --nqubits 16 # v0.2.0 |
| 119 | + ``` |
| 120 | + |
| 121 | +* New features & enhancements: |
| 122 | + |
| 123 | + * Introduce API-level benchmarks. Currently, `cuquantum.custatevec.apply_matrix()` is supported. See `cuquantum-benchmarks api --help` for more details. |
| 124 | +
|
| 125 | + - The existing circuit-level benchmarks should be run with the addition of the subcommand `circuit`, as shown above. |
| 126 | +
|
| 127 | + * Support for more simulator frontends & backends, including Pennylane and Qulacs. |
| 128 | + * Support single- and multi-process Slurm jobs. |
| 129 | + * Add more command line options to support the cusvaer backend. |
| 130 | + * Include more system & runtime information in the generated json logs. |
| 131 | + * Improve the internal timer implementation. |
| 132 | + * Improve the overall code quality, such as the logging system and the circuit generator. |
| 133 | +
|
| 134 | + - The cached circuit data in `/path/to/your/cachedir/circuit/` would be automatically invalidated. |
| 135 | +
|
| 136 | +* Bugs fixed: |
| 137 | +
|
| 138 | + * Work around a bug in cusvaer 22.11. |
| 139 | + * Fix potential circuit mismatches across multiple processes. |
| 140 | + * Fix potential random seed mismatches across multiple processes. |
| 141 | + * Fix the unexpected behavior of `--cachedir`. |
| 142 | +
|
| 143 | +
|
| 144 | +## cuquantum-benchmarks v0.1.0 |
| 145 | +
|
| 146 | +* Initial release |
| 147 | +
|
| 148 | +* New features & enhancements: |
| 149 | +
|
| 150 | + * Specify the target benchmark with `--benchmark` (9 benchmarks are offered as of v0.1.0; to be expanded in the future). |
| 151 | + * Create the circuit either with Qiskit or Cirq via `--frontend`. |
| 152 | + * Specify the target CPU or GPU backend (that is compatible with the frontend) via `--backend`. |
| 153 | + * Specify the backend-specific options, such as the number of CPU threads, number of GPUs, etc. |
| 154 | + * Run the benchmark to collect CPU/GPU elapsed time. |
| 155 | + * Store the generated circuit and the benchmark result (as json files) in disk. |
0 commit comments