scripts: Added CsvFfrac type
A simple float variant of the CsvFrac type: - frac(1.5,2) => 1/2 (50.0%) - ffrac(1.5,2) => 1.5/2.0 (75.0%) Useful for `make bench-widths` (previously make bench-bus), where we want to find the average buffer utilization: probe readed progged erased b_rbyd+create 1.0/1.0 (100.0%) 13.8/256.0 (5.4%) ∞/4096.0 (∞%) b_rbyd+delete ∞/1.0 (∞%) ∞/256.0 (∞%) ∞/4096.0 (∞%) b_rbyd+fetch 1.0/1.0 (100.0%) ∞/256.0 (∞%) ∞/4096.0 (∞%) b_rbyd+lookup 1.0/1.0 (100.0%) ∞/256.0 (∞%) ∞/4096.0 (∞%) b_rbyd+usage ∞/1.0 (∞%) ∞/256.0 (∞%) ∞/4096.0 (∞%) b_wt_seq+w 1.0/1.0 (100.0%) 31.7/256.0 (12.4%) 4096.0/4096.0 (100.0%) b_wt_random+w 1.0/1.0 (100.0%) 15.3/256.0 (6.0%) 4096.0/4096.0 (100.0%) b_wt_logging+w 1.0/1.0 (100.0%) 15.4/256.0 (6.0%) 4096.0/4096.0 (100.0%) b_wt_many+w 1.0/1.0 (100.0%) 16.1/256.0 (6.3%) 4096.0/4096.0 (100.0%) TOTAL ∞/1.0 (∞%) ∞/256.0 (∞%) ∞/4096.0 (∞%) Now that we have 4 types, the cast matrix gets a bit complicated, but this is side-stepped a bit by a custom __frac__ hook. --- Some other tweaks to csv.py: - Added CsvFold.type to typecheck folds _after_ we know the expr's final type. - Adopted CsvFfrac as an output for most of the math functions/folds - Stopped early termination of typechecking if we change type! This was broken: int(float(1.5) + int(1))
This commit is contained in:
@@ -661,15 +661,30 @@ bench-ops: $(BENCH_CSV)
|
||||
$(SUMMARYFLAGS))
|
||||
|
||||
## Show average readed/progged/erased per width
|
||||
.PHONY: bench-bus
|
||||
bench-bus: SUMMARYFLAGS+=-Si
|
||||
bench-bus: $(BENCH_CSV)
|
||||
.PHONY: bench-widths
|
||||
bench-widths: SUMMARYFLAGS+=-Si
|
||||
bench-widths: $(BENCH_CSV)
|
||||
$(strip ./scripts/csv.py $^ \
|
||||
-bprobe='%(case)s+%(probe)s' \
|
||||
-Fi='min(enumerate())' \
|
||||
-freaded='avg(float(bench_readed)/float(bench_reads))' \
|
||||
-fprogged='avg(float(bench_progged)/float(bench_progs))' \
|
||||
-ferased='avg(float(bench_erased)/float(bench_erases))' \
|
||||
-freaded="avg(ffrac( \
|
||||
float(bench_readed)/float(bench_reads), \
|
||||
max(1, $$( \
|
||||
./scripts/bench.py -R$(BENCH_RUNNER) $(BENCHFLAGS) \
|
||||
--list-implicit-defines \
|
||||
| sed -n 's/^READ_WIDTH=\(.*\)/\1/p'))))" \
|
||||
-fprogged="avg(ffrac( \
|
||||
float(bench_progged)/float(bench_progs), \
|
||||
max(1, $$( \
|
||||
./scripts/bench.py -R$(BENCH_RUNNER) $(BENCHFLAGS) \
|
||||
--list-implicit-defines \
|
||||
| sed -n 's/^PROG_WIDTH=\(.*\)/\1/p'))))" \
|
||||
-ferased="avg(ffrac( \
|
||||
float(bench_erased)/float(bench_erases), \
|
||||
max(1, $$( \
|
||||
./scripts/bench.py -R$(BENCH_RUNNER) $(BENCHFLAGS) \
|
||||
--list-implicit-defines \
|
||||
| sed -n 's/^ERASE_WIDTH=\(.*\)/\1/p'))))" \
|
||||
$(SUMMARYFLAGS))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user