-
Notifications
You must be signed in to change notification settings - Fork 2
/
README
47 lines (36 loc) · 2.19 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Measurement Calculus Compiler
------------------------------
1. Introduction
---------------
Files included:
- graph.lisp : Common Lisp source code for the MC compiler
- cnc_generator.lisp : C++ code generator, using the Intel CnC library; used by graph.lisp
- cnc_model.lisp : Common Lisp abstractions to help build a CnC graph representation
- w3.mc : non-trivial example of a Measurement Calculus program producing a W3 entanglement state.
- qft/qft[2-22].mc : Quantum Fourier Transform examples, Measurement Calculus programs generated from the recursive quantum circuit definition.
- Makefile, *.sh, ... : setup and compilation scripts, see below
Any questions or comments can be sent to 'yvdriess at vub.ac.be'
2. Installation
---------------
Requires
- Intel Thread Building Blocks 3.0 or more
http://threadingbuildingblocks.org/
- Intel Concurrent Collections 0.8 or more
https://icnc.github.io/
- Steel Bank Common Lisp (sbcl) with quicklisp installed to bootstrap the compiler
- Make sure all the TBB and CnC environment variables are set
Quick start
'sh quickstart.sh' to bootstrap, compile and run a non-trivial program that should run in the order of single-digit seconds.
Bootstrapping
'sh bootstrap.sh' runs a save-lisp-and-die on the MCC program written in Common Lisp, this creates a binary called ./mcc which accepts valid Measurement Calculus programs.
Compiler
'./mcc < w3.mc' feeds a non-trivial (W3-entanglement creation) quantum computation to the compiler; producing C++ source and header files, respectively 'mccompiled.C' and 'mccompiled.h'
QFT examples for 2 to 22 qubits can be found in the qft/ directory.
Running the mccompiled program
run 'make' to build the generated C++ program and run the resulting './mccompiled'. You can control the number of threads with the -t argument, -s will make CnC report scheduler statistics and -d will output a CnC execution trace for debugging purposes.
./mccompiled [-t num_threads] [-s] [-d]
3. See Also
-------------
MCC compiles to a low-level 'quantum virtual machine' instruction set.
A fast stand-alone implementation of the low-level measurement calculus operations can be found on github as well:
https://github.com/yvdriess/qvm