Skip to content

Commit 4088b7f

Browse files
committed
update scripts
1 parent 6e93d40 commit 4088b7f

File tree

3 files changed

+59
-50
lines changed

3 files changed

+59
-50
lines changed

growlibm/generate-candidates.rkt

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,59 @@
22

33
(require
44
"../src/api/sandbox.rkt"
5-
"../src/syntax/types.rkt"
65
"../src/core/points.rkt"
76
"../src/core/rules.rkt"
87
"../src/config.rkt"
98
"../src/core/batch.rkt"
109
"../src/core/egg-herbie.rkt"
11-
"../src/syntax/read.rkt"
1210
"../src/syntax/load-platform.rkt"
13-
"../src/syntax/types.rkt"
1411
"../src/core/points.rkt"
1512
"../src/core/rules.rkt"
1613
"../src/config.rkt"
1714
"../src/core/batch.rkt"
1815
"../src/core/egg-herbie.rkt"
19-
"../src/syntax/read.rkt"
2016
"../src/syntax/load-platform.rkt"
21-
"../src/syntax/platform.rkt"
2217
"../src/syntax/sugar.rkt"
2318
"../src/core/programs.rkt"
2419
"../src/syntax/syntax.rkt"
25-
"../src/reports/common.rkt"
2620
"../src/syntax/platform-language.rkt")
2721

2822
(activate-platform! "no-accelerators")
2923

24+
(define (strip-approx expr)
25+
(match expr
26+
[(? approx?) (strip-approx (approx-impl expr))]
27+
[(? hole?) (strip-approx (hole-spec expr))]
28+
[`(if ,c ,t ,f) `(if ,(strip-approx c)
29+
,(strip-approx t)
30+
,(strip-approx f))]
31+
[(list op args ...) (cons op (map strip-approx args))]
32+
[_ expr]))
33+
34+
(define (comparison-symbol? sym)
35+
(define name (symbol->string sym))
36+
(or (string-contains? name "=")
37+
(string-contains? name "<")
38+
(string-contains? name ">")))
39+
40+
(define (contains-comparison? expr)
41+
(match expr
42+
[(? symbol?) #f]
43+
[(? number?) #f]
44+
[(? literal?) #f]
45+
[`(if ,c ,t ,f) (or (contains-comparison? c)
46+
(contains-comparison? t)
47+
(contains-comparison? f))]
48+
[(list (? symbol? op) args ...)
49+
(or (comparison-symbol? op)
50+
(ormap contains-comparison? args))]
51+
[(list args ...)
52+
(ormap contains-comparison? args)]
53+
[_ #f]))
54+
55+
(define (sanitize expr)
56+
(strip-approx expr))
57+
3058
(define (get-error expr)
3159
(with-handlers ([exn? (lambda (exn) 0)])
3260
(define ctx (get-ctx expr))
@@ -94,13 +122,6 @@
94122

95123
ht)
96124

97-
(define (has-approx expr)
98-
(define str (format "~v" expr))
99-
(or (string-contains? str "approx")
100-
(string-contains? str "=")
101-
(string-contains? str ">")
102-
(string-contains? str "<")))
103-
104125
(define (to-fpcore-str pair)
105126
(define expr (car pair))
106127
(define vars (free-variables expr))
@@ -118,14 +139,17 @@
118139
(define lines (file->list (string-append report-dir "/expr_dump.txt")))
119140
(define unflattened-subexprs (map all-subexpressions lines))
120141

121-
(define subexprs (apply append unflattened-subexprs))
122-
(define filtered-subexprs (filter (lambda (n)
123-
(not (or (symbol? n) (literal? n) (approx? n) (has-approx n)))) subexprs))
142+
(define subexprs (map sanitize (apply append unflattened-subexprs)))
143+
(define filtered-subexprs
144+
(filter (lambda (n)
145+
(not (or (symbol? n)
146+
(literal? n)
147+
(number? n)
148+
(contains-comparison? n))))
149+
subexprs))
124150
(define filtered-again (filter (lambda (n)
125151
(and (> (length (free-variables n)) 0)
126152
(< (length (free-variables n)) 4))) filtered-subexprs))
127-
;;; (define filtered-again (filter (lambda (n)
128-
;;; (> (length (free-variables n)) 0)) filtered-subexprs))
129153

130154
(define renamed-subexprs (map rename-vars filtered-again))
131155
(define pairs (hash->list (count-frequencies renamed-subexprs)))
@@ -135,8 +159,8 @@
135159
(define sorted-pairs (sort deduplicated-pairs (lambda (p1 p2) (> (cdr p1) (cdr p2)))))
136160
(define first-2000 (take sorted-pairs (min (length sorted-pairs) 2000)))
137161

138-
;;; (define filtered (filter (lambda (p) (< 0.1 (get-error (car p)))) first-2000))
139-
(define filtered first-2000)
162+
(define filtered (filter (lambda (p) (< 0.1 (get-error (car p)))) first-2000))
163+
;;; (define filtered first-2000)
140164
(define first-500 (take filtered (min (length filtered) 500)))
141165
(define fpcores-out (map to-fpcore-str first-500))
142166
(define counts-out (map to-count-print first-500))
@@ -151,21 +175,6 @@
151175
(for-each displayln fpcores-out))
152176
#:exists 'replace)
153177

154-
;;; ;;; (print-lines sorted-triples)
155-
;;; ;;; (define cost-proc (platform-cost-proc (*active-platform*)))
156-
;;; ;;; (define quads (map (lambda (p1) (append p1 (list (cost-proc (first p1) (get-representation 'binary64))))) sorted-triples))
157-
;;; ;;; (print-lines quads)
158-
159-
;;; ;;; (define expr '(-.f64 #s(literal 1 binary64) (sqrt.f64 z0)))
160-
;;; ;;; (define spec (prog->spec expr))
161-
;;; ;;; (define ctx (context (free-variables expr) (get-representation 'binary64) (make-list (length (free-variables expr)) (get-representation 'binary64))))
162-
;;; ;;; (define error (get-spec-error expr spec ctx))
163-
;;; ;;; (displayln error)
164-
165-
;;; (module+ test
166-
;;; (require rackunit)
167-
;;; (check-equal? (rename-vars '(+ x y)) '(+ z0 z1)))
168-
169-
170-
;;; (define expr '(+ x0 x0))
171-
;;; (displayln (best-exprs (list (get-ctx expr)) (list expr)))
178+
(module+ test
179+
(require rackunit)
180+
(check-equal? (rename-vars '(+ x y)) '(+ z0 z1)))

growlibm/generate-html.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import json
2-
import html
1+
import json, html, sys
32

4-
START_REPORT_PATH = 'reports/start/results.json'
5-
END_REPORT_PATH = 'reports/end/results.json'
6-
ACCELERATORS_PATH = 'reports/accelerators.json'
7-
OUTPUT_FILE = 'reports/index.html'
8-
START_FOLDER = 'start'
9-
END_FOLDER = 'end'
10-
NUM_ITERATIONS = 10
3+
NUM_ITERATIONS = int(sys.argv[1])
4+
REPORTS_PATH = sys.argv[2]
5+
START_REPORT_PATH = REPORTS_PATH + "/start/results.json"
6+
END_REPORT_PATH = REPORTS_PATH + "/end/results.json"
7+
ACCELERATORS_PATH = REPORTS_PATH + "/accelerators.json"
8+
OUTPUT_PATH = REPORTS_PATH + "/index.html"
9+
START_FOLDER = "start"
10+
END_FOLDER = "end"
1111

1212
def calculate_end_accuracy(data):
1313
total_end = 0
@@ -107,5 +107,5 @@ def read_text(path):
107107
</html>
108108
"""
109109

110-
with open(OUTPUT_FILE, 'w') as f:
110+
with open(OUTPUT_PATH, 'w') as f:
111111
f.write(html_content)

infra/nightly.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export PATH="$PATH:$HOME/.cargo/bin/"
88

99
# Seed is fixed for the whole day; this way two branches run the same seed
1010
SEED=$(date "+%Y%j")
11-
BENCHDIR="bench/growlibm-falloff_hard.fpcore"
11+
BENCHDIR="bench/tutorial.fpcore"
1212
REPORTDIR="reports"
1313
NUMITERS=10
1414

@@ -55,4 +55,4 @@ racket -y "src/main.rkt" report \
5555
cat "src/platforms/grow.rkt" > "$REPORTDIR/grow_platform.txt"
5656

5757
# generate the html report page
58-
python3 growlibm/generate-html.py
58+
python3 growlibm/generate-html.py $NUMITERS $REPORTDIR

0 commit comments

Comments
 (0)