Getting Started¶
Checking Out¶
Check out each of the major repositories into a project branch:
/ $ mkdir qc
/ $ cd qc
qc/ $ git clone https://github.com/vm6502q/qrack.git
qc/ $ git clone https://github.com/vm6502q/vm6502q.git
qc/ $ git clone https://github.com/vm6502q/examples.git
# Note: the cc65 repository changes live in the 6502q branch
qc/ $ git clone https://github.com/vm6502q/cc65.git -b 6502q
# Add a necessary symlink connecting the vm6502q project with qrack
qc/ $ cd vm6502q && ln -s ../qrack
# vm6502q expects the qrack buildfiles to exist in qrack/build
qc/ $ mkdir qrack/build
qc/ $ cd qrack/build && cmake ..
# OR if no OpenCL support is enabled
qc/ $ cd qrack/build && cmake -DUSE_OPENCL=OFF ..
Compiling¶
Note
The qrack
project supports two primary implementations: OpenCL-optimized and software-only. See Installing OpenCL for details on installing OpenCL on some platforms, or your appropriate OS documentation.
If you do not have OpenCL or do not wish to use it, supply the USE_OPENCL=OFF
environment to cmake
when building qrack the first time, and ENABLE_OPENCL=0
to make
when building vm6502q
.
Compile in the vm6502q
project. This will build both the vm6502q
emulator as well as the linked qrack
project:
vm6502q/ $ make
# OR if no OpenCL is available
vm6502q/ $ ENABLE_OPENCL=0 make
Testing¶
The qrack project has an extensive set of unittests for the various Qrack::QInterface
gates and simulator methods. This can be executed through running the test suite in the qrack
project:
qrack/build/ $ make test
This may take a few minutes to complete, depending on the strength of the system executing the tests.
Note
The unittests, by default, run against all supported engines. If only a specific engine type is desired, the --disable-opencl
or --disable-software
command line parameters may be supplied to the unittest
binary.
Embedding Qrack¶
The qrack
project produces a libqrack.a
archive, suitable for being linked into a larger binary. See the Qrack::QInterface
documentation for API references, as well as the examples present in the unit tests.
Performance¶
TBD.
Contributing¶
Pull requests and issues are happily welcome!
Please make sure make format
(depends on clang-format-5) has been executed against any PRs before being published.
Community¶
Qrack and VM6502Q have a development community on the Advanced Computing Topics discord server on channel #qrack. Come join us!