Created
July 29, 2012 22:04
-
-
Save LFY/3202096 to your computer and use it in GitHub Desktop.
Ising on 10 variables, 100k iter - before/after tracing, dead code elimination and allocation removal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ;; Original program | |
| (letrec | |
| ([eq (factor (x y) (if (= x y) 0.0 (log 0.1)))] | |
| [xs (repeat 10 (lambda () (xrp+init randint-scorer randint randint-prop 0 0 1)))] | |
| [constr (map (lambda (xy) (eq (car xy) (car (cdr xy)))) (bigram xs))]) | |
| xs) | |
| ;; Performance of this model (100k total iterations, lag = 10k) | |
| ;; running stats for (run-shred samples lag prog ALL-OPTS): | |
| ;; 15 collections | |
| ;; 383 ms elapsed cpu time, including 13 ms collecting | |
| ;; 384 ms elapsed real time, including 13 ms collecting | |
| ;; 124513952 bytes allocated | |
| '((0 0 1 1 0 0 0 0 0 0) (1 1 1 1 1 1 1 1 1 1) | |
| (1 1 1 1 1 1 1 1 1 1) (0 0 0 0 0 0 0 1 1 1) | |
| (1 1 1 1 1 1 1 1 1 1) (1 1 1 1 1 1 1 1 1 1) | |
| (1 0 0 1 1 1 1 1 0 0) (1 1 1 1 1 1 1 1 1 1) | |
| (0 0 0 0 0 0 0 0 0 0) (0 0 0 0 1 1 1 1 0 0)) | |
| ;; Without incremental computation (running slices instead of the whole trace at a time): | |
| ;; running stats for (run-shred samples lag prog NO-INCR): | |
| ;; 44 collections | |
| ;; 767 ms elapsed cpu time, including 17 ms collecting | |
| ;; 770 ms elapsed real time, including 18 ms collecting | |
| ;; 374199536 bytes allocated | |
| '((1 1 1 1 1 1 1 1 1 1) (0 0 0 0 0 1 1 1 0 1) | |
| (1 0 0 0 0 1 1 1 1 0) (1 0 0 0 0 0 1 1 1 1) | |
| (0 0 0 0 0 0 0 0 0 0) (0 0 1 1 1 1 1 1 1 1) | |
| (1 1 0 0 0 1 1 1 1 1) (0 0 0 0 0 0 0 0 0 0) | |
| (0 0 0 0 0 0 0 0 0 1) (0 0 0 0 0 0 0 0 0 0)) | |
| large closure size=0x0000000000000598 | |
| large closure size=0x0000000000000598 | |
| large closure size=0x0000000000000598 | |
| ;; Without dead code elimination/allocation removal: | |
| ;; running stats for (run-shred samples lag prog NO-INCR+DCE+AR): | |
| ;; 60 collections | |
| ;; 1622 ms elapsed cpu time, including 47 ms collecting | |
| ;; 1653 ms elapsed real time, including 52 ms collecting | |
| ;; 502816400 bytes allocated | |
| '((1 1 1 1 1 1 1 1 1 1) (0 1 1 1 1 1 1 1 1 1) | |
| (1 1 0 0 0 0 0 0 0 0) (0 0 0 0 0 0 0 0 0 0) | |
| (0 0 0 0 0 1 1 1 1 1) (1 1 1 1 1 0 0 0 0 1) | |
| (0 0 0 0 1 0 0 0 0 0) (0 0 0 0 1 1 1 1 1 1) | |
| (1 1 1 1 0 0 1 1 0 0) (1 1 1 1 0 0 0 0 0 0)) | |
| ;; Using the addressing transform and recomputing xrp addresses every iteration: | |
| ;; running stats for (run-normal samples lag prog): | |
| ;; 1098 collections | |
| ;; 27420 ms elapsed cpu time, including 1294 ms collecting | |
| ;; 27511 ms elapsed real time, including 1306 ms collecting | |
| ;; 9194292336 bytes allocated | |
| '((0 0 0 0 0 0 0 0 0 0) (1 1 1 1 1 1 1 1 1 1) | |
| (1 1 1 1 1 0 0 0 0 0) (1 1 1 1 1 1 0 1 1 1) | |
| (1 1 1 1 1 0 0 0 0 0) (1 1 1 1 1 1 1 1 1 1) | |
| (1 1 1 1 1 1 1 1 0 0) (0 0 1 1 1 1 0 0 0 0) | |
| (0 0 0 0 0 0 0 0 0 0) (0 0 1 1 1 1 1 1 1 1)) | |
| ;; Appendix | |
| ;; Trace before dead code elimination and allocation removal | |
| (define V0 (xrp+score randint-scorer R0 0 1)) | |
| (define V1 (xrp+score randint-scorer R1 0 1)) | |
| (define V2 (xrp+score randint-scorer R2 0 1)) | |
| (define V3 (xrp+score randint-scorer R3 0 1)) | |
| (define V4 (xrp+score randint-scorer R4 0 1)) | |
| (define V5 (xrp+score randint-scorer R5 0 1)) | |
| (define V6 (xrp+score randint-scorer R6 0 1)) | |
| (define V7 (xrp+score randint-scorer R7 0 1)) | |
| (define V8 (xrp+score randint-scorer R8 0 1)) | |
| (define V9 (xrp+score randint-scorer R9 0 1)) | |
| (define V10 (cons V9 '())) (define V11 (cons V8 V10)) | |
| (define V12 (cons V7 V11)) (define V13 (cons V6 V12)) | |
| (define V14 (cons V5 V13)) (define V15 (cons V4 V14)) | |
| (define V16 (cons V3 V15)) (define V17 (cons V2 V16)) | |
| (define V18 (cons V1 V17)) (define V19 (cons V0 V18)) | |
| (define V20 (cdr V19)) (define V21 (null? V20)) | |
| (define V22 V21) (define V23 (car V19)) | |
| (define V24 (cdr V19)) (define V25 (car V24)) | |
| (define V26 (cons V25 '())) | |
| (define V27 (cons V23 V26)) (define V28 (cdr V19)) | |
| (define V29 (cdr V28)) (define V30 (null? V29)) | |
| (define V31 V30) (define V32 (car V28)) | |
| (define V33 (cdr V28)) (define V34 (car V33)) | |
| (define V35 (cons V34 '())) | |
| (define V36 (cons V32 V35)) (define V37 (cdr V28)) | |
| (define V38 (cdr V37)) (define V39 (null? V38)) | |
| (define V40 V39) (define V41 (car V37)) | |
| (define V42 (cdr V37)) (define V43 (car V42)) | |
| (define V44 (cons V43 '())) | |
| (define V45 (cons V41 V44)) (define V46 (cdr V37)) | |
| (define V47 (cdr V46)) (define V48 (null? V47)) | |
| (define V49 V48) (define V50 (car V46)) | |
| (define V51 (cdr V46)) (define V52 (car V51)) | |
| (define V53 (cons V52 '())) | |
| (define V54 (cons V50 V53)) (define V55 (cdr V46)) | |
| (define V56 (cdr V55)) (define V57 (null? V56)) | |
| (define V58 V57) (define V59 (car V55)) | |
| (define V60 (cdr V55)) (define V61 (car V60)) | |
| (define V62 (cons V61 '())) | |
| (define V63 (cons V59 V62)) (define V64 (cdr V55)) | |
| (define V65 (cdr V64)) (define V66 (null? V65)) | |
| (define V67 V66) (define V68 (car V64)) | |
| (define V69 (cdr V64)) (define V70 (car V69)) | |
| (define V71 (cons V70 '())) | |
| (define V72 (cons V68 V71)) (define V73 (cdr V64)) | |
| (define V74 (cdr V73)) (define V75 (null? V74)) | |
| (define V76 V75) (define V77 (car V73)) | |
| (define V78 (cdr V73)) (define V79 (car V78)) | |
| (define V80 (cons V79 '())) | |
| (define V81 (cons V77 V80)) (define V82 (cdr V73)) | |
| (define V83 (cdr V82)) (define V84 (null? V83)) | |
| (define V85 V84) (define V86 (car V82)) | |
| (define V87 (cdr V82)) (define V88 (car V87)) | |
| (define V89 (cons V88 '())) | |
| (define V90 (cons V86 V89)) (define V91 (cdr V82)) | |
| (define V92 (cdr V91)) (define V93 (null? V92)) | |
| (define V94 V93) (define V95 (car V91)) | |
| (define V96 (cdr V91)) (define V97 (car V96)) | |
| (define V98 (cons V97 '())) | |
| (define V99 (cons V95 V98)) (define V100 (cdr V91)) | |
| (define V101 (cdr V100)) (define V102 (null? V101)) | |
| (define V103 V102) (define V104 (cons V99 '())) | |
| (define V105 (cons V90 V104)) | |
| (define V106 (cons V81 V105)) | |
| (define V107 (cons V72 V106)) | |
| (define V108 (cons V63 V107)) | |
| (define V109 (cons V54 V108)) | |
| (define V110 (cons V45 V109)) | |
| (define V111 (cons V36 V110)) | |
| (define V112 (cons V27 V111)) | |
| (define V113 (null? V112)) (define V114 V113) | |
| (define V115 (car V112)) (define V116 (car V115)) | |
| (define V117 (cdr V115)) (define V118 (car V117)) | |
| (define V119 (eq 1.0 V116 V118)) | |
| (define V120 (cdr V112)) (define V121 (null? V120)) | |
| (define V122 V121) (define V123 (car V120)) | |
| (define V124 (car V123)) (define V125 (cdr V123)) | |
| (define V126 (car V125)) | |
| (define V127 (eq 1.0 V124 V126)) | |
| (define V128 (cdr V120)) (define V129 (null? V128)) | |
| (define V130 V129) (define V131 (car V128)) | |
| (define V132 (car V131)) (define V133 (cdr V131)) | |
| (define V134 (car V133)) | |
| (define V135 (eq 1.0 V132 V134)) | |
| (define V136 (cdr V128)) (define V137 (null? V136)) | |
| (define V138 V137) (define V139 (car V136)) | |
| (define V140 (car V139)) (define V141 (cdr V139)) | |
| (define V142 (car V141)) | |
| (define V143 (eq 1.0 V140 V142)) | |
| (define V144 (cdr V136)) (define V145 (null? V144)) | |
| (define V146 V145) (define V147 (car V144)) | |
| (define V148 (car V147)) (define V149 (cdr V147)) | |
| (define V150 (car V149)) | |
| (define V151 (eq 1.0 V148 V150)) | |
| (define V152 (cdr V144)) (define V153 (null? V152)) | |
| (define V154 V153) (define V155 (car V152)) | |
| (define V156 (car V155)) (define V157 (cdr V155)) | |
| (define V158 (car V157)) | |
| (define V159 (eq 1.0 V156 V158)) | |
| (define V160 (cdr V152)) (define V161 (null? V160)) | |
| (define V162 V161) (define V163 (car V160)) | |
| (define V164 (car V163)) (define V165 (cdr V163)) | |
| (define V166 (car V165)) | |
| (define V167 (eq 1.0 V164 V166)) | |
| (define V168 (cdr V160)) (define V169 (null? V168)) | |
| (define V170 V169) (define V171 (car V168)) | |
| (define V172 (car V171)) (define V173 (cdr V171)) | |
| (define V174 (car V173)) | |
| (define V175 (eq 1.0 V172 V174)) | |
| (define V176 (cdr V168)) (define V177 (null? V176)) | |
| (define V178 V177) (define V179 (car V176)) | |
| (define V180 (car V179)) (define V181 (cdr V179)) | |
| (define V182 (car V181)) | |
| (define V183 (eq 1.0 V180 V182)) | |
| (define V184 (cdr V176)) (define V185 (null? V184)) | |
| (define V186 V185) (define V187 (cons V183 '())) | |
| (define V188 (cons V175 V187)) | |
| (define V189 (cons V167 V188)) | |
| (define V190 (cons V159 V189)) | |
| (define V191 (cons V151 V190)) | |
| (define V192 (cons V143 V191)) | |
| (define V193 (cons V135 V192)) | |
| (define V194 (cons V127 V193)) | |
| (define V195 (cons V119 V194)) | |
| ;; After tracing, dead code elimination, and allocation removal | |
| (define X0 (xrp+score randint-scorer R0 0 1)) | |
| (define X1 (xrp+score randint-scorer R1 0 1)) | |
| (define X2 (xrp+score randint-scorer R2 0 1)) | |
| (define X3 (xrp+score randint-scorer R3 0 1)) | |
| (define X4 (xrp+score randint-scorer R4 0 1)) | |
| (define X5 (xrp+score randint-scorer R5 0 1)) | |
| (define X6 (xrp+score randint-scorer R6 0 1)) | |
| (define X7 (xrp+score randint-scorer R7 0 1)) | |
| (define X8 (xrp+score randint-scorer R8 0 1)) | |
| (define X9 (xrp+score randint-scorer R9 0 1)) | |
| (define X10 (eq 1.0 X0 X1)) | |
| (define X11 (eq 1.0 X1 X2)) | |
| (define X12 (eq 1.0 X2 X3)) | |
| (define X13 (eq 1.0 X3 X4)) | |
| (define X14 (eq 1.0 X4 X5)) | |
| (define X15 (eq 1.0 X5 X6)) | |
| (define X16 (eq 1.0 X6 X7)) | |
| (define X17 (eq 1.0 X7 X8)) | |
| (define X18 (eq 1.0 X8 X9)) (define L0 (cons X9 '())) | |
| (define L1 (cons X8 L0)) (define L2 (cons X7 L1)) | |
| (define L3 (cons X6 L2)) (define L4 (cons X5 L3)) | |
| (define L5 (cons X4 L4)) (define L6 (cons X3 L5)) | |
| (define L7 (cons X2 L6)) (define L8 (cons X1 L7)) | |
| (define L9 (cons X0 L8)) | |
| ;; Slices of that trace: | |
| (vector | |
| (lambda (R0) | |
| (begin | |
| (set! score 0.0) | |
| (set! X0 (xrp+score randint-scorer R0 0 1)) | |
| (set! X10 (eq 1.0 X0 X1)) | |
| (set! L9 (cons X0 L8)) | |
| score)) | |
| (lambda (R1) | |
| (begin | |
| (set! score 0.0) | |
| (set! X1 (xrp+score randint-scorer R1 0 1)) | |
| (set! X10 (eq 1.0 X0 X1)) | |
| (set! X11 (eq 1.0 X1 X2)) | |
| (set! L8 (cons X1 L7)) | |
| score)) | |
| (lambda (R2) | |
| (begin | |
| (set! score 0.0) | |
| (set! X2 (xrp+score randint-scorer R2 0 1)) | |
| (set! X11 (eq 1.0 X1 X2)) | |
| (set! X12 (eq 1.0 X2 X3)) | |
| (set! L7 (cons X2 L6)) | |
| score)) | |
| (lambda (R3) | |
| (begin | |
| (set! score 0.0) | |
| (set! X3 (xrp+score randint-scorer R3 0 1)) | |
| (set! X12 (eq 1.0 X2 X3)) | |
| (set! X13 (eq 1.0 X3 X4)) | |
| (set! L6 (cons X3 L5)) | |
| score)) | |
| (lambda (R4) | |
| (begin | |
| (set! score 0.0) | |
| (set! X4 (xrp+score randint-scorer R4 0 1)) | |
| (set! X13 (eq 1.0 X3 X4)) | |
| (set! X14 (eq 1.0 X4 X5)) | |
| (set! L5 (cons X4 L4)) | |
| score)) | |
| (lambda (R5) | |
| (begin | |
| (set! score 0.0) | |
| (set! X5 (xrp+score randint-scorer R5 0 1)) | |
| (set! X14 (eq 1.0 X4 X5)) | |
| (set! X15 (eq 1.0 X5 X6)) | |
| (set! L4 (cons X5 L3)) | |
| score)) | |
| (lambda (R6) | |
| (begin | |
| (set! score 0.0) | |
| (set! X6 (xrp+score randint-scorer R6 0 1)) | |
| (set! X15 (eq 1.0 X5 X6)) | |
| (set! X16 (eq 1.0 X6 X7)) | |
| (set! L3 (cons X6 L2)) | |
| score)) | |
| (lambda (R7) | |
| (begin | |
| (set! score 0.0) | |
| (set! X7 (xrp+score randint-scorer R7 0 1)) | |
| (set! X16 (eq 1.0 X6 X7)) | |
| (set! X17 (eq 1.0 X7 X8)) | |
| (set! L2 (cons X7 L1)) | |
| score)) | |
| (lambda (R8) | |
| (begin | |
| (set! score 0.0) | |
| (set! X8 (xrp+score randint-scorer R8 0 1)) | |
| (set! X17 (eq 1.0 X7 X8)) | |
| (set! X18 (eq 1.0 X8 X9)) | |
| (set! L1 (cons X8 L0)) | |
| score)) | |
| (lambda (R9) | |
| (begin | |
| (set! score 0.0) | |
| (set! X9 (xrp+score randint-scorer R9 0 1)) | |
| (set! X18 (eq 1.0 X8 X9)) | |
| (set! L0 (cons X9 '())) | |
| score))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment