forked from quil-lang/qvm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
qvm.asd
100 lines (98 loc) · 3.98 KB
/
qvm.asd
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
;;;; qvm.asd
;;;;
;;;; Author: Robert Smith
#+(and sbcl x86-64)
#.(when (ignore-errors (sb-alien:extern-alien "avx2_supported" sb-alien:int))
(cl:push :qvm-avx2 cl:*features*)
(values))
(asdf:defsystem #:qvm
:description "An implementation of the Quantum Abstract Machine."
:author "Robert Smith <[email protected]>"
:license "Apache License 2.0 (See LICENSE.txt)"
:version (:read-file-form "VERSION.txt")
:defsystem-depends-on (#:cffi-grovel)
:depends-on (
;; General utilities
#:alexandria
;; Abstract classes
#:abstract-classes
;; IEEE-754 float parsing
#:ieee-floats
;; Parallelization utilities
#:lparallel
;; Matrix algebra
(:version #:magicl/core "0.9.0")
#:magicl/ext-lapack
;; weak hash tables
#:trivial-garbage
;; static globals
#:global-vars
;; C foreign function interface
#:cffi
;; Allocation of C vectors
(:version #:static-vectors "1.8.3")
;; Finalizers and portable GC calls
#:trivial-garbage
;; Quil parsing and analysis
(:version #:cl-quil/frontend "1.26.0")
;; Portable random number generator
#:mt19937
;; For allocation info.
#+sbcl #:sb-introspect
;; Portable *features*
#:trivial-features)
:in-order-to ((asdf:test-op (asdf:test-op #:qvm-tests)))
:around-compile (lambda (compile)
(let (#+sbcl (sb-ext:*derive-function-types* t))
(funcall compile)))
:pathname "src/"
:serial t
:components ((:file "package")
(:cffi-grovel-file "grovel-system-constants" :if-feature :unix)
(:cffi-grovel-file "grovel-shared-memory" :if-feature :unix)
(:file "config")
(:file "impl/allegro" :if-feature :allegro)
(:file "impl/clozure" :if-feature :clozure)
(:file "impl/sbcl" :if-feature :sbcl)
(:file "impl/sbcl-intrinsics" :if-feature (:and :sbcl :qvm-intrinsics))
(:file "impl/sbcl-avx-vops"
:if-feature (:and :sbcl :qvm-intrinsics :qvm-avx2))
(:file "impl/sbcl-x86-vops" :if-feature (:and :sbcl :qvm-intrinsics))
(:file "impl/linear-algebra-intrinsics" :if-feature :qvm-intrinsics)
(:file "impl/prefetch-intrinsics" :if-feature :qvm-intrinsics)
(:file "impl/lispworks" :if-feature :lispworks)
(:file "utilities")
(:file "floats")
(:file "allocator")
(:file "shm" :if-feature :unix)
(:file "linear-algebra")
(:file "qam")
(:file "classical-memory")
(:file "classical-memory-mixin")
(:file "serial-kernels")
(:file "wavefunction")
(:file "subsystem")
(:file "state-representation")
(:file "qvm")
(:file "compile-gate")
(:file "mixed-state-qvm")
(:file "apply-gate")
(:file "measurement")
(:file "transition")
(:file "transition-classical-instructions")
(:file "stabilizer-qvm")
(:file "execution")
(:file "path-simulate")
(:file "misc")
(:file "noise-models")
(:file "channel-qvm")
(:file "basic-noise-qvm")
(:file "density-qvm")
(:file "noisy-qvm")
(:file "depolarizing-noise")
(:file "unitary-qvm")
(:module "error"
:serial t
:components ((:file "package")
(:file "fowler-noise")
(:file "error-qvm")))))