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

Migrate asv benchmark suite from metapackage #10546

Closed
wants to merge 62 commits into from

Conversation

jakelishman
Copy link
Member

@jakelishman jakelishman commented Aug 1, 2023

Summary

This merge commit pulls in the history of the airspeed-velocity benchmark suite from its original location in the metapackage. The commits have been filtered to only include the history of the benchmark suite itself, and their messages rewritten to change GitHub issue and PR references to point to the renamed metapackage.

Details and comments

Merge commit e781aff is an unrelated-histories merge of a filtered history of the metapackage to contain only the benchmark suite with the issue numbers rewritten. The three commits that follow it are to bring the code up-to-date with CI protections within Terra, and adding a Terra-specific asv.conf.json file.

Other than those three commits, there are no changes to the benchmark suite in this PR, though I/we intend to modernise them in the next couple of weeks while the asv bot is catching up on the metapackage repo, before we swap the bot to targetting the Terra repo.

Fix Qiskit/qiskit-metapackage#1723.

mtreinish and others added 30 commits March 1, 2019 08:13
* Add asv benchmarks

This commit adds an asv benchmark suite to the tests include in this
repo. This will enable us to track the performance of the overall qiskit
project over time as we make commits.

* Remove H2 and LiH dirs

* Fix most, but not all, lint

* Remove commented unused code

* Add QV circuit benchmark and fix asv build and some lint

* Make lint pass

* Purity isn't in quantum_info in 0.7

* Add qft and random circuit benchmarks

* Fix issue caused by namespace package and aer sticking around

* Make depth an independent variable for qv benchmarks

* Simplify install and uninstall stage

The install stage was going off the rails trying failing to install the
built wheel in certain scenarios. When this happened the empty namespace
package from qiskit-aer was leftover and when benchmarks ran there was
nothing leftover. To avoid this and simplify the install (and by
extension uninstall) configuration to just rely on the default working
behavior this commit removes the dependence on the qiskit-aer package.
The aer package wasn't even used directly in the benchmarks since we're
not actually running simulations (for obvious time reasons). Instead Aer
was just being used as a backend for the transpiler. But, there is no
reason we have to use Aer for that, and BasicAer works just as well.

* Clear build artifacts before install

* Fix lint failures for new pylint

* Switch back to pip for wheel builds

* Fix another lint issue

* Fix hopefully the last lint issue
…tapackage#201)

This commit adds 2 new benchmarks that use the same random hex circuit
setup but instead of measuring the time it takes to transpile() it
tracks the depth of the output circuit. This will serve as an example
for how we can track other transpiler performance metrics over time in
terra (not just depth).
…tapackage#204)

* Remove randomness from random_hex_circuit_benchmark

The random_hex benchmark had one np.random.randomint() call that was
used to determine if the cnots in the circuit were for odd or even
numbered qubits. While not a big difference (and difficult to detect by
visual inspection) we want to eliminate any difference between runs for
benchmarking. These subtle differences can make the results unusable and
anomaly detection more difficult. To that end this commit just sets the
random value to be fixed so the generated circuit will always be the
same. Since this changes the results the version for the benchmark is
changed so that we'll treat new results different from the previous
results with the random number.

* Fix lint
…iskit/qiskit-metapackage#227)

* Bump released package versions and set meta package version to 0.9.0

This commit bumps the version numbers for the newly released versions of
terra, aer, and ignis. It also bumps the version of the package to
reflect this change per the versioning policy.

* Ibmq provider too

* Fix lint until test update
…age#276)

This PR updates all the benchmarks to work again with recent API changes made on Terra master. These were all things coming, but were neglected until the entire benchmark suite was broken. Once this lands we should continue getting published data from the periodic benchmark runs from the point in the git history when the breaking changes in terra landed.

Co-Authored-By: Matthew Treinish <mtreinish@kortar.org>
…#301)

In the previous update to the the quantum volume benchmarks the fake
melbourne class from the terra tests was used instead of hardcoding the
coupling map directly in the benchmark. However because this lives in
the terra tests python namespace it has a depedency on a bunch of test
requirements at import time (even though they're not used). This causes
the benchmarks to fail in a production environment because they do not
install the terra development/testing requirements in the venv used for
testing. To avoid this failure, this commit removes the fake backend
usage and switches to a hard coded coupling map which was just copied
from the backend code. [1]

[1] https://github.com/Qiskit/qiskit-terra/blob/master/qiskit/test/mock.py#L258-L260
…t/qiskit-metapackage#343)

Add two benchmarks timing construction of a simple circuit of one and two qubit gates at various widths and lengths, and another for composing the same circuit on top of an empty circuit.
Attempt to remove some of the randomness in the random_circuit_hex benchmark [1]
by seeding the random_unitary generation and the transpiler.

[1] https://qiskit.github.io/qiskit/#random_circuit_hex.BenchRandomCircuitHex.track_depth_ibmq_backend_transpile

* Remove deprecated function from random_circuit_hex benchmark.

* Remove some rmore randomness from random_circuit_hex benchmark.

* Bump random_circuit_hex benchmark version.
…apackage#358)

Makes two additional changes to random_circuit_hex to better support older
qiskit versions.

Re-orders import attempts for euler_angles_1q. At some point in time, trying to call
euler_angles_1q via qiskit.mapper would import successfully, but raise when called
with an error like qiskit.exceptions.QiskitError: 'euler_angles_1q functionality is now
accessible in qiskit.quantum_info.synthesis'. Change default order to always use the
newest version of euler_angles_1q that's available.

Falls back to setting seed_mapper for versions of qiskit earlier than seed_transpiler.
* Added benchmarks for isometries

* Some small fixes

* Track numerical value

* Simplify counts get logic

* Set a seed and skip faster

In an effort to reduce the noise in the measurements made by the
benchmark this commit sets a seed for all calls that take one;
transpile() and random_unitary(). It also moves the skip check to the
top of setup so we don't waste time trying to do anything if we're just
going to skip.
Qiskit#2761 removed some more of the deprecated qi modules
from terra that the state tomography benchmarks were previously relying
on. While we've been skipping these benchmarks since the tomography
module was removed from terra this caused an import error to be raised
when importing the test. To avoid the import error breaking asv runs until
we rewrite the benchmark to use ignis this commit handles an import
error and treats it as a skip condition.
…e#306)

* first version of benchmark/randomize_benchmarking.py

* fix lint error

* fixed a misprint

* updated benchmark test for RB

* fixed RB benchmark test following comment

* fix lint error

* Add qiskit-ignis to benchmark env

* removed nq from the parameters

* Correct setup() parameter order

* Only return circuits for transpilation

* nseeds = [1]

* Fix various issues with the benchmark

This commit fixes a number of issues with the benchmark. First it
removes single entry parameters from the parameter list, there's no
reason to make them parameters if we don't use multiple values. It also
fixes a small bug in the return from the build_rb_circuit() function
where we were only returning one sequence of circuits instead of the
whole set. It also adjusts how we use random values by properly setting
a seed for both circuit building and tranpile. The last thing it does is
for consistency it pins the ignis version to a single version and sets
the benchmark version number to match that. This way if/when we need to
bump the ignis version we use in the benchmarks we'll have to bump the
benchmark's version too to match. This way we can make sure we're
using the same ignis version for all benchmark results.

* Reduce the number of length vectors used to 1

This commit removes one of the two length vectors we were using for
constructing the RB circuits. This is done in the interest of time since
the RB benchmarking can be quite slow so this reduces the number of
input parameters we iterate over which decreases the total run time of
RB benchmarks. If in the future we improve the performance so that the
impact is minimal to the full asv run we can add back additional length
vectors for benchmarking.

* Update copyright header to use consistent format
…ckage#400)

* Update state tomography benchmarks to use ignis

The state tomography benchmarks have been skipped since terra deprecated
and then removed it's support for doing tomography. The new way to run
tomography is by using ignis. This commit does just that and rewrites
the tomography benchmarks to use ignis instead of terra so that we can
now run them on the current versions of terra.

* Fix lint

* Add a 6 qubit benchmark

* Fix lint again

* Remove setting timer it's already the default

* Increase timeout for state tomography benchmarks

The cat state tomography benchmark for 5 qubits typically takes about 55
seconds for my local desktop. However, sometimes it can take slightly
longer and with a default timeout of 60 seconds it doesn't give much of
a margin.

* Remove 6 qubit benchmark

The 6 qubit cat state tomography benchmark is a bit too slow to be
valuable. On my local desktop it's consistently more than the current
timeout of the state tomography benchmark which is 2min (the bell state
tomography does not have an duration issues, it's minimally slower with
6 qubits). We already have a ton of very slow benchmarks and the
additional value for running tomography with 6 qubits vs 5 is minimal.
So in the interest of time this commit removes the 6 qubit cases.

* Fix lint yet again
…kage#396)

* Add single-threaded versions of RB benchmarks.

* Unset QISKIT_IN_PARALLEL env variable after RB benchmarks.
)

* Add timing benchmark for `import qiskit`.

* Update import.py
…-metapackage#491)

This commit bumps the ignis version used in the randomized benchmarking
and state tomography asv benchmarks. These benchmarks use a pinned
version of ignis for consistent results since the benchmarks track
terra development. Now that ignis 0.2.0 has been released we should use
it to ensure that the benchmarks keep working moving forward.
…-metapackage#504)

Add a test case for tracking CNOT count after mapping to IBM Q 16 Melbourne
using isometry circuits so that we can track the quality of mappings by default
pass manager.

* Add a bench to track mapper's cnot count performance

* lint
…kage#603)

* Add benchmarks for different transpiler levels

This commit adds new benchmarks for testing different transpiler levels.
It runs 3 different circuits through both time and depth benchmarks,
quantum volume 50x20 with the rochester coupling map, 14x14 with
FakeMelbourne (mostly to include the properties snapshot after
Qiskit#3060 for level 3), and the large qasm example
with both a rochester coupling map and FakeMelbourne. Each benchmark is
run with optimization level 0, 1, 2, and 3 to have results with more
than just the default optimization level. By tracking depth we can also
compare the relative effectiveness of each level vs speed.

* Inline fake backend with noise from terra

This commit inlines the fake melbourne backend from qiskit-terra's test
module. We need a local copy of this in the benchmarks that's static for
consistency reasons. The fake provider in terra has different values
returned depending on where in the git history it is (if it exists at
all). This would cause noise in the benchmarks as we're trying to
measure the performance of the transpiler not the backends. So to avoid
those potential issues this commit adds a local copy that we can keep
static independent of terra. If we do need to change it for any reason
we can then also update the benchmark version to indicate it's different
results.
* Add benchmarks for converter functions

This commit adds benchmarks for the converter functions. The converter
functions are normally quick to execute but are commonly used as part of
other operations. For example circuit_to_dag and dag_to_circuit get
called under the covers during transpile() calls. Individually
benchmarking the performance of them is useful so we can isolate and
track their performance, even if it's normally only a small percentage
of a larger operation.

* Pivot to use random circuit

The benchmarks now use a randomly generated circuit (with a fixed
seed for consistency) of varying sizes to test different cases. In the future
we can add additional types of circuits to try and test additional worst
case edge cases.

* Fix lint

* Fix lint for real

* Add comment about skips
…tapackage#641)

Adds a peakmem tracking for transpiler_level benchmarks, and a
benchmark for assemble_circuits.

* Add peakmem versions of transpiler level benchmarks.

* Add assemble_circuit benchmark.

* Import assemble from qiskit.compile.
* Add benchmarks for mapping passes

This commit adds new benchmark methods for mapping passes. There are 2
benchmarks for each analysis pass that track the run time of the pass
and the memory consumption. Then for transformation passes a third
benchmark is added to track the depth after the pass is run. For swap
mappers a 4th benchmark also keeping track of how many swap gates are
in the circuit.

* Fix lint

The linter fails because two passes have not been released yet, this
commit disables this check for the file so we can run the benchmark for
these new passes.

* Add python-constraint to asv venv

The csp layout pass uses python-constraint which is an optional
dependency. This needs to be manually installed to make the csp layout
pass benchmarks work, this commit adds it to the list of dependencies
installed.
* Add benchmark for non-mapping passes

This commit adds new benchmark methods for each non-mapping pass. There
are 2 benchmarks for each analysis pass that track the run time of the
pass and the memory consumption, for tranformation passes a third
benchmark is added to track the depth after the pass is run. The next
stage here will be to add benchmarks for mapping passes.

* Fix lint
This commit reorganizes the passes benchmarks to better measure memory
consumption and decrease the amount of time spent in setup. There are
tests for 3 passes: ConsolidateBlocks, CommutativeCancellation, and
Optimize1qGates that depended on either an analysis pass or
tranformation pass to be run before they can work or are effective. To
isolate the benchmarking of these passes those prequesite passes were
run in setup and then could be accessed by the benchmark methods for
those passes. However this had a cost, it makes the setup for every
benchmark slower because we have to run these extra passes even if the
results are not used. This has a big impact for peakmem benchmarks
though, because the peakmem includes the setup() function there are
cases where the results of peakmem could be skewed by these passes. To
fix this this commit splits benchmarks into classes that run the extra
passes to isolate the setup cost to only those benchmarks which actually
need the extra passes.
…kage#837)

Right now the dedicated benchmark machine is spending too much time and
has a growing backlog of commits to benchmark. Part of this is the
introduction of the pass benchmarks which run over a wide sweep of
parameters which results in 18 different permustations of the
benchmark. This ends up being a large portion of the time spent
benchmarking. This commit decreases the number of parameters to be a
single circuit depth and only 3 qubit counts. This reduces the number of
permutations from 18 to 3.
* Add QuantumCircuit.copy() benchmark.

* Update test/benchmarks/circuit_construction.py
…it-metapackage#845)

The lookahead swap mapping passes timeout consistently and have generated no data (likely due to Qiskit#2171 ) but cost roughly an hour of benchmarking runtime per terra commit.

This commit disables these benchmarks while the problems are investigated.
…qiskit-metapackage#846)

* Add disassemble benchmarks and more permutations to assemble

This commit expands our coverage of the assemble benchmarks by adding
assembly cases with >1 circuit. At the same time this adds a second
benchmark class which adds coverage for qobj disassemble.

* Update test/benchmarks/assembler.py

Co-Authored-By: Kevin Krsulich <kevin@krsulich.net>

* Add new version to assembler benchmark

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>
Co-authored-by: Kevin Krsulich <kevin.krsulich@ibm.com>
Partially fixes Qiskit/qiskit-metapackage#794.

* first commit

* Fixed some typos

* More fixes

* Add benchmark to insert instruction from left to right

* Fix Lints

* Add hardcorded parametic pulse and sample pulse

* reduce params

* Fix lint

* review suggestions

* Instruction to schedule

* review suggestions

* Rename due to lint restrictions

number_of_unique_pulses -> unique_pulses and number_of_channels -> channels

* review suggestions

* Seperate inst_add and sched.union

* Remove unwanted imports

* lint

* Update code

* Fix lint

* separate instruction to sched conversion and union of sched

* uncomment code

* Lint

* move benchmark functions with similar setup.py to a different file

* lint

* Move time_union_of_schedules to schedule construction class

* Add Open Pulse backend in backends/

* lint

* Add Play

* Add Play

* Remove union

union is deprecated

* lint
jakelishman and others added 13 commits January 25, 2022 13:28
Add benchmarks to track the time performance of circuit scheduling

Add four tests, which benchmark TimeUnitConversion, ALAPSchedule,
ASAPSchedule and DynamicalDecoupling passes. It would be a good
time to start benchmarking those as rework on circuit scheduling
passes is about to start.

* Add benchmarks for scheduling passes

* lint

* Add one more bench for circuit scheduling

* Add overall transpilation time bench with scheduling

* Revert "Add overall transpilation time bench with scheduling"

This reverts commit fdba349999548ecd1fb4cc9a1e1a67802ecd9008.

* Remove wild-card import
…etapackage#1441)

Add a benchmark to track the overall time performance of circuit
scheduling, which would be near to that end users actually
experience when scheduling.

Follow-up PR of Qiskit/qiskit-metapackage#1421. As suggested in the original PR,
optimization level 0 and 1 are added so that it would not take so
much time while covering the places where people are doing
scheduling.

* Add overall transpilation time bench with scheduling

* Improve a bit
Originally the benchmark suite created its own fake backends to avoid
noise if Terra were to add new snapshots.  The current old backends
use `BaseBackend` and `BaseJob`, which is the legacy interface that has
just been removed from mainline Terra, causing the benchmark suite to
fail to import.

The three fake backends in use are all either decommissioned machines
that will have no further updates, or a dummy machine not based on real
hardware (and so should not need to be updated).  Since it's unlikely
that noise will come into the benchmarks from Terra now, it's suitable
just to use the Terra-provided ones.
…ackage#1488)

* Replace ignis benchmarks with qiskit-experiments

* Simplify tomography benchmark

* remove ignis from asv conf

* Remove whitespace

* Apply suggestions from code review

Co-authored-by: Matthew Treinish <mtreinish@kortar.org>

* Fix typo

Co-authored-by: Matthew Treinish <mtreinish@kortar.org>
- Add pulse defaults loading test. This mainly measures instmap construction.
- Add lowering test. This measures conversion of block -> schedule.
- Add ECR building tests with three major approaches.
- Add parameterized block test with parameter scan, assuming calibration
…-metapackage#1621)

When running the full benchmark suite the assembler benchmarks take a
disproportionately large amount of time to run, especially given the
relatively low current importance of the assemble() function. This was
primarily due to the number of permutations of the benchmark we ran. At
the time all those permutations were added to verify the scaling of the
function because it was a potential bottleneck, but this is no longer a
concern. This commit drops the parameter sweeps down so that we only run
2 combinations for assemble, basically a fixed sized circuit either by
itself or as a batch of 100. This should drastically decrease the
runtime cost of these benchmarks but still give us some data for the
function moving forward.
…metapackage#1622)

* Add benchmarks for Sabre on large QFT and QV circuits

Sabre is capable of handling these large benchmarks now, and it's of
interest for us to track our performance on large systems.  We don't
anticipate running on them yet, but we will want to know in the future
when further changes to routing and memory usage improve these
benchmarks.

* Fix lint

* Fix lint properly

* Precalculate trackers to avoid recomputation

The tracking benchmarks here naively require a recomputation of the
expensive swap-mapping, despite use wanting to just reuse things we
already calculated during the timing phase.  `asv` doesn't let us return
trackers from the timing benchmarks directly, but we can still reduce
one load of redundancy by pre-calculating all the tracker properties we
care about only once in the cached setup method, and then just feeding
that state into the actual benchmarks to retrieve the results they care
about.

This is rather hacky, but does successfully work around functionality we
would like in `asv` to reduce runtime.
This merge commit pulls in the history of the airspeed-velocity
benchmark suite from its original location in the metapackage.  The
commits have been filtered to only include the history of the benchmark
suite itself, and their messages rewritten to change GitHub issue and PR
references to point to the renamed metapackage.
This is not directly copied from the metapackage because several
components of it needed to changes as it came other, and it was mostly
autogenerated or out-of-date anyway.

We may want to tweak how requirements are managed and installed in the
future.
@jakelishman jakelishman requested review from eggerdj, wshanks and a team as code owners August 1, 2023 17:56
@qiskit-bot
Copy link
Collaborator

One or more of the the following people are requested to review this:

  • @Qiskit/terra-core
  • @ikkoham
  • @nkanazawa1989

@coveralls
Copy link

Pull Request Test Coverage Report for Build 5730206844

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • 4 unchanged lines in 1 file lost coverage.
  • Overall coverage increased (+0.02%) to 85.915%

Files with Coverage Reduction New Missed Lines %
crates/qasm2/src/lex.rs 4 91.65%
Totals Coverage Status
Change from base Build 5727764372: 0.02%
Covered Lines: 73080
Relevant Lines: 85061

💛 - Coveralls

@jakelishman
Copy link
Member Author

Superseded by #10611.

@jakelishman jakelishman deleted the benchmark-migration branch August 11, 2023 18:57
mtreinish added a commit that referenced this pull request Aug 11, 2023
### Summary

This cross-repository merge unifies the documentation, benchmarks and
code of conduct from the metapackage into Qiskit/Terra's build.

There are very non-trivial merge conflicts that have been resolved by
this commit. The summary is:

- `CODE_OF_CONDUCT.md`: taken directly from the metapackage's version.
- `docs/conf.py`: strongly unified, albeit without the translations
components that are added in a separate commit.
- `docs/index.rst`: taken almost verbatim from the metapackage. All the
API documentation RST files on Terra are moved to `docs/apidoc` (without
the trailing 's') to match the metapackage expectation, so the URLs of
built documentation will not change.
- `docs/release_notes.rst`: The metapackage's version is renamed to
`docs/legacy_release_notes.rst`, given a small introductory header, and
made an orphan linked only from a _new_ `docs/release_notes.rst` that
uses `reno`.
- `docs/tutorials.rst`: Mostly these were the same already. Updated to
include Qiskit/Terra's correction that it's not an orphan, and contain
the metapackage's extra intro tutorial.
- `docs/apidoc/terra.rst`: renamed to `docs/apidoc/index.rst` and
retitled to be correctly just "API Documentation".
- `requirements-dev.txt`: the version of the Sphinx theme is bumped to
1.14 to match the metapackage expectation.

Following merge commit ec5c9ca, there is a commit 66a5d9f that fixes
the ASV build for use in Terra, which is the rollup of the post-merge
commits of #10546, which this PR supersedes.


### Details and comments

This should probably be merged ASAP before `main` moves on.

Resolutions on the metapackage:
- Fix Qiskit/qiskit-metapackage#1723
- Fix Qiskit/qiskit-metapackage#1722
- Fix Qiskit/qiskit-metapackage#1746

After this has merged, #10610 should merge which will close the
remaining migration-related issues from the metapackage.

The metapackage was prepared for the migration using
[`git-filter-repo`](https://github.com/newren/git-filter-repo), with the
scripts and configuration files contained within
[metapackage_migration.zip](https://github.com/Qiskit/qiskit-terra/files/12324298/metapackage_migration.zip).
If you extract that zip, you need to activate a Python 3.11 `venv` then
run `metapackage_rewrite.bash` which will prepare the repo in the exact
state I merged to create this PR.

*edit*: In retrospect writing this, you might need to modify my script
so that it pulls only starting from commit
Qiskit/qiskit-metapackage@f131daf, which was the tip of `master` at the
time I ran this.

I tested the docs build locally and it looks as correct as I can tell.
There's still big cards pointing to experiments, dynamics etc on the
landing page, but I figured that enough's enough, and we can just fix
those last two things in Terra. This PR does not include
Qiskit/qiskit-metapackage#1791, which should be now cherry-picked onto
Terra.
mtreinish added a commit to mtreinish/qiskit-core that referenced this pull request Aug 15, 2023
This cross-repository merge unifies the documentation, benchmarks and
code of conduct from the metapackage into Qiskit/Terra's build.

There are very non-trivial merge conflicts that have been resolved by
this commit. The summary is:

- `CODE_OF_CONDUCT.md`: taken directly from the metapackage's version.
- `docs/conf.py`: strongly unified, albeit without the translations
components that are added in a separate commit.
- `docs/index.rst`: taken almost verbatim from the metapackage. All the
API documentation RST files on Terra are moved to `docs/apidoc` (without
the trailing 's') to match the metapackage expectation, so the URLs of
built documentation will not change.
- `docs/release_notes.rst`: The metapackage's version is renamed to
`docs/legacy_release_notes.rst`, given a small introductory header, and
made an orphan linked only from a _new_ `docs/release_notes.rst` that
uses `reno`.
- `docs/tutorials.rst`: Mostly these were the same already. Updated to
include Qiskit/Terra's correction that it's not an orphan, and contain
the metapackage's extra intro tutorial.
- `docs/apidoc/terra.rst`: renamed to `docs/apidoc/index.rst` and
retitled to be correctly just "API Documentation".
- `requirements-dev.txt`: the version of the Sphinx theme is bumped to
1.14 to match the metapackage expectation.

Following merge commit ec5c9ca, there is a commit 66a5d9f that fixes
the ASV build for use in Terra, which is the rollup of the post-merge
commits of Qiskit#10546, which this PR supersedes.

This should probably be merged ASAP before `main` moves on.

Resolutions on the metapackage:
- Fix Qiskit/qiskit-metapackage#1723
- Fix Qiskit/qiskit-metapackage#1722
- Fix Qiskit/qiskit-metapackage#1746

After this has merged, Qiskit#10610 should merge which will close the
remaining migration-related issues from the metapackage.

The metapackage was prepared for the migration using
[`git-filter-repo`](https://github.com/newren/git-filter-repo), with the
scripts and configuration files contained within
[metapackage_migration.zip](https://github.com/Qiskit/qiskit-terra/files/12324298/metapackage_migration.zip).
If you extract that zip, you need to activate a Python 3.11 `venv` then
run `metapackage_rewrite.bash` which will prepare the repo in the exact
state I merged to create this PR.

*edit*: In retrospect writing this, you might need to modify my script
so that it pulls only starting from commit
Qiskit/qiskit-metapackage@f131daf, which was the tip of `master` at the
time I ran this.

I tested the docs build locally and it looks as correct as I can tell.
There's still big cards pointing to experiments, dynamics etc on the
landing page, but I figured that enough's enough, and we can just fix
those last two things in Terra. This PR does not include
Qiskit/qiskit-metapackage#1791, which should be now cherry-picked onto
Terra.

(cherry picked from commit 965fd23)
github-merge-queue bot pushed a commit that referenced this pull request Aug 15, 2023
This cross-repository merge unifies the documentation, benchmarks and
code of conduct from the metapackage into Qiskit/Terra's build.

There are very non-trivial merge conflicts that have been resolved by
this commit. The summary is:

- `CODE_OF_CONDUCT.md`: taken directly from the metapackage's version.
- `docs/conf.py`: strongly unified, albeit without the translations
components that are added in a separate commit.
- `docs/index.rst`: taken almost verbatim from the metapackage. All the
API documentation RST files on Terra are moved to `docs/apidoc` (without
the trailing 's') to match the metapackage expectation, so the URLs of
built documentation will not change.
- `docs/release_notes.rst`: The metapackage's version is renamed to
`docs/legacy_release_notes.rst`, given a small introductory header, and
made an orphan linked only from a _new_ `docs/release_notes.rst` that
uses `reno`.
- `docs/tutorials.rst`: Mostly these were the same already. Updated to
include Qiskit/Terra's correction that it's not an orphan, and contain
the metapackage's extra intro tutorial.
- `docs/apidoc/terra.rst`: renamed to `docs/apidoc/index.rst` and
retitled to be correctly just "API Documentation".
- `requirements-dev.txt`: the version of the Sphinx theme is bumped to
1.14 to match the metapackage expectation.

Following merge commit ec5c9ca, there is a commit 66a5d9f that fixes
the ASV build for use in Terra, which is the rollup of the post-merge
commits of #10546, which this PR supersedes.

This should probably be merged ASAP before `main` moves on.

Resolutions on the metapackage:
- Fix Qiskit/qiskit-metapackage#1723
- Fix Qiskit/qiskit-metapackage#1722
- Fix Qiskit/qiskit-metapackage#1746

After this has merged, #10610 should merge which will close the
remaining migration-related issues from the metapackage.

The metapackage was prepared for the migration using
[`git-filter-repo`](https://github.com/newren/git-filter-repo), with the
scripts and configuration files contained within
[metapackage_migration.zip](https://github.com/Qiskit/qiskit-terra/files/12324298/metapackage_migration.zip).
If you extract that zip, you need to activate a Python 3.11 `venv` then
run `metapackage_rewrite.bash` which will prepare the repo in the exact
state I merged to create this PR.

*edit*: In retrospect writing this, you might need to modify my script
so that it pulls only starting from commit
Qiskit/qiskit-metapackage@f131daf, which was the tip of `master` at the
time I ran this.

I tested the docs build locally and it looks as correct as I can tell.
There's still big cards pointing to experiments, dynamics etc on the
landing page, but I figured that enough's enough, and we can just fix
those last two things in Terra. This PR does not include
Qiskit/qiskit-metapackage#1791, which should be now cherry-picked onto
Terra.

(cherry picked from commit 965fd23)
Eric-Arellano pushed a commit to Qiskit/documentation that referenced this pull request Oct 6, 2023
…10611)

### Summary

This cross-repository merge unifies the documentation, benchmarks and
code of conduct from the metapackage into Qiskit/Terra's build.

There are very non-trivial merge conflicts that have been resolved by
this commit. The summary is:

- `CODE_OF_CONDUCT.md`: taken directly from the metapackage's version.
- `docs/conf.py`: strongly unified, albeit without the translations
components that are added in a separate commit.
- `docs/index.rst`: taken almost verbatim from the metapackage. All the
API documentation RST files on Terra are moved to `docs/apidoc` (without
the trailing 's') to match the metapackage expectation, so the URLs of
built documentation will not change.
- `docs/release_notes.rst`: The metapackage's version is renamed to
`docs/legacy_release_notes.rst`, given a small introductory header, and
made an orphan linked only from a _new_ `docs/release_notes.rst` that
uses `reno`.
- `docs/tutorials.rst`: Mostly these were the same already. Updated to
include Qiskit/Terra's correction that it's not an orphan, and contain
the metapackage's extra intro tutorial.
- `docs/apidoc/terra.rst`: renamed to `docs/apidoc/index.rst` and
retitled to be correctly just "API Documentation".
- `requirements-dev.txt`: the version of the Sphinx theme is bumped to
1.14 to match the metapackage expectation.

Following merge commit 22a406c, there is a commit 66a5d9fe0 that fixes
the ASV build for use in Terra, which is the rollup of the post-merge
commits of Qiskit/qiskit#10546, which this PR supersedes.


### Details and comments

This should probably be merged ASAP before `main` moves on.

Resolutions on the metapackage:
- Fix Qiskit/qiskit-metapackage#1723
- Fix Qiskit/qiskit-metapackage#1722
- Fix Qiskit/qiskit-metapackage#1746

After this has merged, Qiskit/qiskit#10610 should merge which will close the
remaining migration-related issues from the metapackage.

The metapackage was prepared for the migration using
[`git-filter-repo`](https://github.com/newren/git-filter-repo), with the
scripts and configuration files contained within
[metapackage_migration.zip](https://github.com/Qiskit/qiskit-terra/files/12324298/metapackage_migration.zip).
If you extract that zip, you need to activate a Python 3.11 `venv` then
run `metapackage_rewrite.bash` which will prepare the repo in the exact
state I merged to create this PR.

*edit*: In retrospect writing this, you might need to modify my script
so that it pulls only starting from commit
Qiskit/qiskit-metapackage@f131daf, which was the tip of `master` at the
time I ran this.

I tested the docs build locally and it looks as correct as I can tell.
There's still big cards pointing to experiments, dynamics etc on the
landing page, but I figured that enough's enough, and we can just fix
those last two things in Terra. This PR does not include
Qiskit/qiskit-metapackage#1791, which should be now cherry-picked onto
Terra.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Epic - Move benchmark code out of metapackage