Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Conversation

@swernli
Copy link
Collaborator

@swernli swernli commented Jun 15, 2020

This change adds support for AVX 512 to the simulator, based on changes present in https://github.com/microsoft/qsharp-runtime/tree/dbwz8/simDbg

Note: this also has changes to merge in master so that the feature branch is brought up to date.

bamarsha and others added 3 commits June 10, 2020 16:49
* Add EntryPointDriver to pack.ps1

* Rename Microsoft.Quantum.Simulation.Simulators to Microsoft.Quantum.Simulators

* Rename EntryPointDriver to Microsoft.Quantum.EntryPointDriver

* Rename Tests.EntryPointDriver to Microsoft.Quantum.EntryPointDriver.Tests

* Add package description for EntryPointDriver

* Remove EntryPointDriver from CsharpGeneration package

* Update namespace in EntryPointDriver

* Update namespace in EntryPointDriver.Tests

* Update simulator test project filename

* Update manifest.ps1

* Rename Microsoft.Quantum.EntryPointDriver.Tests to Tests.Microsoft.Quantum.EntryPointDriver

* Restore name of simulators assembly

* Add DelaySign.cs to EntryPointDriver

* Use same assembly name as package name again

* Update reference to simulators csproj

* Update simulators nuspec

* Update project reference to simulators

* Update namespace names in test

* Remove package reference to Q# compiler

* Use IImmutableList instead of IReadOnlyList

* Use ImmutableList.Create with params array

* Make DriverSettings immutable

* Make DriverSettings properties internal

* Add PackageId to EntryPointDriver.csproj
* Fix assembly vs nuget version in pack.ps1.

* Fix project vs package reference.

* Feedback from @bettinaheim.
@swernli swernli requested review from bettinaheim and dbwz8 June 15, 2020 21:17
Copy link
Contributor

@dbwz8 dbwz8 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Of the 43 files, almost none pertain to this change. Perhaps this should be 2 pull requests?
    • I'm not sure I want to approve something where I have no idea if most of the files are correct.
  • Of the files that pertain to the change:
    • foo.csv should be removed
    • the rest look fine (glad you caught that we need simulatorAVX512.cpp ;)

Copy link
Contributor

@dbwz8 dbwz8 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving the part of the pull request that are the changes I made

@swernli swernli force-pushed the swernli/avx512 branch 2 times, most recently from 8d745bf to 693abb7 Compare June 16, 2020 00:03
@swernli swernli merged commit 258bc3d into feature/simulator-enhancement Jun 16, 2020
@swernli swernli deleted the swernli/avx512 branch June 23, 2020 18:17
AniketDalvi pushed a commit that referenced this pull request Jul 1, 2020
* Create a separate package for the entry point driver (#225)

* Add EntryPointDriver to pack.ps1

* Rename Microsoft.Quantum.Simulation.Simulators to Microsoft.Quantum.Simulators

* Rename EntryPointDriver to Microsoft.Quantum.EntryPointDriver

* Rename Tests.EntryPointDriver to Microsoft.Quantum.EntryPointDriver.Tests

* Add package description for EntryPointDriver

* Remove EntryPointDriver from CsharpGeneration package

* Update namespace in EntryPointDriver

* Update namespace in EntryPointDriver.Tests

* Update simulator test project filename

* Update manifest.ps1

* Rename Microsoft.Quantum.EntryPointDriver.Tests to Tests.Microsoft.Quantum.EntryPointDriver

* Restore name of simulators assembly

* Add DelaySign.cs to EntryPointDriver

* Use same assembly name as package name again

* Update reference to simulators csproj

* Update simulators nuspec

* Update project reference to simulators

* Update namespace names in test

* Remove package reference to Q# compiler

* Use IImmutableList instead of IReadOnlyList

* Use ImmutableList.Create with params array

* Make DriverSettings immutable

* Make DriverSettings properties internal

* Add PackageId to EntryPointDriver.csproj

* Fix NUGET_VERSION issues (#251)

* Fix assembly vs nuget version in pack.ps1.

* Fix project vs package reference.

* Feedback from @bettinaheim.

* Added AVX512

* Add fma for AVX512

Co-authored-by: Sarah Marshall <33814365+samarsha@users.noreply.github.com>
Co-authored-by: Chris Granade <chgranad@microsoft.com>
Co-authored-by: Dave Wecker <wecker@microsoft.com>
swernli added a commit that referenced this pull request Aug 31, 2020
This pulls in work done by @AniketDalvi, @dbwz8, and @swernli to enhance the native simulator with gate scheduling and clustering, leading to significant performance increases (originally part of the feature/simulator-enhancement branch). It also includes new tests that verify the performance, and a folder with benchmark projects to help with future performance comparisons. In our benchmarking, this led to between a 4x and 6x improvement, and could be significantly more depending on the host environment or circuit composition.

* Merging dbw8/sim into Feature branch (#246)

* Initial simulator fixes

Includes generator scripts that create the kernels.

* Adding AVX512 to simulator (#255)

* Create a separate package for the entry point driver (#225)

* Add EntryPointDriver to pack.ps1

* Rename Microsoft.Quantum.Simulation.Simulators to Microsoft.Quantum.Simulators

* Rename EntryPointDriver to Microsoft.Quantum.EntryPointDriver

* Rename Tests.EntryPointDriver to Microsoft.Quantum.EntryPointDriver.Tests

* Add package description for EntryPointDriver

* Remove EntryPointDriver from CsharpGeneration package

* Update namespace in EntryPointDriver

* Update namespace in EntryPointDriver.Tests

* Update simulator test project filename

* Update manifest.ps1

* Rename Microsoft.Quantum.EntryPointDriver.Tests to Tests.Microsoft.Quantum.EntryPointDriver

* Restore name of simulators assembly

* Add DelaySign.cs to EntryPointDriver

* Use same assembly name as package name again

* Update reference to simulators csproj

* Update simulators nuspec

* Update project reference to simulators

* Update namespace names in test

* Remove package reference to Q# compiler

* Use IImmutableList instead of IReadOnlyList

* Use ImmutableList.Create with params array

* Make DriverSettings immutable

* Make DriverSettings properties internal

* Add PackageId to EntryPointDriver.csproj

* Fix NUGET_VERSION issues (#251)

* Fix assembly vs nuget version in pack.ps1.

* Fix project vs package reference.

* Feedback from @bettinaheim.

* Added AVX512

* Add fma for AVX512

Co-authored-by: Sarah Marshall <33814365+samarsha@users.noreply.github.com>
Co-authored-by: Chris Granade <chgranad@microsoft.com>
Co-authored-by: Dave Wecker <wecker@microsoft.com>

* Initial wfn permute changes

* changes to reorder to fix minor bugs

* rebase with clean sim branch

* Merging Linux simulator update from dbwz8/simDbg (#281)

* Merging Linux simulator update from dbwz8/simDbg

* Remove extra semicolon

* Reordering wfn to work with existing flush/fuse logic

* Added some comments

* Combining Dave's scheduling logic with reordering

* PR changes

* PR changes

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* Creating cleaner scheduler branch

* PR changes

* Commiting further merge changes

* New re-ordering routine in clean branch

* New re-ordering routine in clean branch

* PR change to avoid copying

* PR changes

* PR changes to undo character change in Haner

* cleaning branch for PR

* Adding heuristic for reorder

* Base branch with @@@dbg+ marking debugging lines

* .

* .

* Merged all 3 branches and got them working.

* Working on cluster code.

* Code appears to be working. Now starting on performance

* About to run benchmarks

* Linux vararg changes

* Setting up for benchmarks

* Optimizing scheduler

* Fixed scheduling ordering bugs

* .

* .

* reordered tests

* Doing tests

* more tests

* All benchmarks run. This is a frozen version

* Fixed problems with cluster ordering. Now passes all tests.

* Made a clean version via #define DBWDBG

* Sample local project

* Added 4x4 supremecy test

* Added top level benchmark (Sample) and tuned optimal number of threads/fuseSpan (6/6)

* Made dbw_test work in the real builds

* comment update

* Working on dbw_test from product testing

* .

* Got rid of checked in executable

* Added 5x6 test

* Trying to get one e2e sample to work

* e2e tests working on Linux

* Moved all the benchmark code into one place.

* Unifying supremacy tests

* Cleaning up tree

* .

* .

* Cleaning everything up

* Stable version

* Working on normalizing code

* git rid of editor file

* Adding environment variable controls

* Added runTest.sh

* More testing harness

* .

* Added Linux strlen for env vars

* .

* Herlper parseLog.py created

* Put in better defaults for env var values.

* Put in better env var defaults

* Testing

* Debugging

* Working version

* Put in limit on maxFusedSpan

* Deleted unreferenced variables

* Fixing qubit gate mapping and flush on release

* Minor cleanup

* Getting dbw_test to play nice with test.ps1

* Use backslash to support cross-platform filepath

* Remove DBWDBG and temp logs. Rename supremacy to advantage

* Updating files for pull request

* Renaming supremacy files

* Replaced supremXX with advantageXX

* rm unused log files. Fixed a few compiler warns

* Working on build problem

* Fixing build, cleaning up last DBG statements

* Fix wavefunction pop_back bug

* Removing unused wavefunction utilities

* Benchmark should not assume default 6

* Remove commented out Flush

* Show native test output

* Set failure thresholds for dbw_test benchmark

* Adding AdvantageBenchmark readme

Co-authored-by: Sarah Marshall <33814365+samarsha@users.noreply.github.com>
Co-authored-by: Chris Granade <chgranad@microsoft.com>
Co-authored-by: Dave Wecker <wecker@microsoft.com>
Co-authored-by: Aniket Dalvi <t-anikda@microsoft.com>
Co-authored-by: Bettina Heim <beheim@microsoft.com>
Co-authored-by: bettinaheim <34236215+bettinaheim@users.noreply.github.com>
Co-authored-by: Andres Paz <anpaz@microsoft.com>
Co-authored-by: Dave Wecker <dbwz8@hotmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants