Skip to content

Commit

Permalink
Update CONTRIBUTING.md
Browse files Browse the repository at this point in the history
  • Loading branch information
WrathfulSpatula authored Feb 6, 2022
1 parent e3dd0e6 commit 1956aab
Showing 1 changed file with 0 additions and 5 deletions.
5 changes: 0 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ This section and the next will be updated, as needs change. Even if you've never

- **Documentation proofreading and editing**: If something is grammatically incorrect in the Doxygen or [https://qrack.readthedocs.io](https://qrack.readthedocs.io/en/latest/), or just plain confusing, (Dan has a tendency to get carried away,) it'd help us greatly for you to suggest changes on them, and we could always benefit from fresh eyes that aren't set in a particular way of seeing things.

- **Normalizing method signatures**: Qrack is based on the "gate model" of quantum computation, but it provides single bit gates, length-wise parallel gates, and gates with arbitrary controls bits, each with one method signature. These signature templates were chosen as the need for them became apparent to us, and they're fairly consistent, but not 100% consistent and template-able. If you could fit all the `QInterface` API method signatures to a normal template, we'd be grateful, and we could review your convention. You might want to open a Github issue first, proposing your planned template, and Benn and Dan could help with suggestions and tips.

- **Qubit mapper layer**: By default, Qrack's qubit addressing is a like a 1 dimensional array of qubits, starting from index 0. This is simple, and it's proved fairly versatile. It would be good to have a layer on top of `QEngine` types that acts as an arbitrary dictionary for qubits, or perhaps a multidimensional array. See the implementation of `QUnit` and its "shards" for an idea of how that mechanism might be turned into a general and stand-alone layer.

- **Windows and Mac build testing**: The core developers intend to support all of Linux, Windows, and Mac, and have built on all of the above. We primarily develop and test on Linux machines, and cmake builds might develop bugs on other platforms as we go. If you could test on your system, particularly Windows or Mac, and figure out how to get the build working on your machine, we would be eternally grateful, and include you in the changelog notes when you open a pull request.
Expand All @@ -46,9 +44,6 @@ This section and the next will be updated, as needs change. Even if you've never
- **Embedding and wrapping in C#, F#, or Python**: Qrack tries to keep to the reasonably "low level" standard of C++ for portability and performance, but there's no reason not to give the Python and .NET developers some love. [We've looked at ProjectQ for Python wrapping and a quantum compiler](https://github.com/WrathfulSpatula/ProjectQ/tree/qrack_simulator), but this is still new territory for us.

- **Backport to C**: Be the legendary hero, and have Linus Torvalds personally fall at your feet with gratitude for bringing the quantum revolution to the Linux kernel, or something like that. Yeah, maybe that's grandiose, but a "straight C" language backport **might** open up such wild possibilities, with potentially better performance, all wrapped up on top with a Python-based quantum compiler. This would honestly be pretty godly.

- **Practical Multiprocessor Support**: Qrack has two experimental engine types for distributing work to multiple processors, the `QPager` type, which is more `QEngine` (and QHiPSTER) -like, and `QUnitOCLMulti`, which is `QUnit`-like and distributes separable subsystems across different processors. Limited multiprocessor use cases of either have achieved practical return, but if you can make either of these or a Qrack-based design of your own outperform `QEngineOCL` and/or `QUnit` on a PC, as the case may be, you've just earned yourself what could very well be world's fastest cluster-distributed quantum computer simulation, (at least with the help of a transparent OpenCL clustering framework like VirtualCL/SnuCL).

## Further Reading on Quantum Theory

For quantum computation, Nielsen and Chuang's **Quantum Computation and Quantum Information** has come to be considered a standard and complete text. It's divided into sections intended to be useful to both, and respectively, those coming from physics and those coming from computer science, to bring everyone onto the same page by the end of the book. Also, come visit us at the [Advanced Computing Topics](https://discordapp.com/invite/Gj3CHDy) server, and we might have more timely and targeted suggestions for you.

0 comments on commit 1956aab

Please sign in to comment.