Simulating a quantum computer on a classical computer is a computationally hard problem. Each quantum register
in the Quantum Computing Language contains a number of basevectors, each with a corresponding amplitude. As the
qubits in the quantum register are superposed with each other, the number of basevectors increases exponentially.
For example, a quantum register of only size 10 qubits, has 1024 basevectors. Any operation which is applied to
a quantum state can be represented as a matrix. The matrix to be applied to any particular quantum state is a
square matrix of the same dimension as the number of basevectors. Applying a matrix to a large quantum state takes
a very long time on one computer.
Most serious scientific simulation now occurs on huge clusters of ordinary workstations, rather than supercomputers,
due to cost effectiveness and easy maintainability. Simulating a large quantum system on a parallel cluster has
never been fully achieved before, to my knowledge. The actual operation which is performed when applying an
operation to a quantum state, is simply a matrix-vector multiplication, where the operation is represented by a
matrix, and where the amplitudes of the basevectors of the quantum state is the vector. This part of the project
will rewrite the matrix-vector multiplication routines of the Quantum Computing Language to farm out computation
to the nodes of the Computer Applications 23-node Linux cluster.