Skip to content

Commit 25139b9

Browse files
vouillonhhugo
authored andcommitted
Benchmark: bigarrays
1 parent ee5375f commit 25139b9

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
.PHONY: bench perform
2+
3+
export NAME=Others
4+
export SUBNAME=bigarrays
5+
6+
SHELL=/bin/bash -o pipefail
7+
8+
bench:
9+
@date -u +"%FT%TZ - $(NAME)/$(SUBNAME): starting"
10+
ocamlc bench.ml -o bench
11+
$(MAKE) perform COMPILER=js_of_ocaml SCRIPT=bench.js KIND=js
12+
$(MAKE) perform COMPILER=wasm_of_ocaml SCRIPT=bench.wasm.js KIND=wasm
13+
@date -u +"%FT%TZ - $(NAME)/$(SUBNAME): done"
14+
15+
perform:
16+
$(COMPILER) --opt 2 --pretty bench -o $(SCRIPT)
17+
/usr/bin/time -f '{"compiler": "$(COMPILER)", "time":"%E"}' node $(SCRIPT) 2>&1 | \
18+
sh ../../utils/format_metrics.sh exec | \
19+
sh ../../utils/aggregate.sh $(KIND)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
let pi = 4. *. atan 1.
2+
3+
let deltay = 40_000. /. 360. /. 3600. *. 1000.
4+
5+
let deltax = deltay *. cos (44. *. pi /. 180.)
6+
7+
let precompute tile_height tile_width tile =
8+
let normals =
9+
Bigarray.(Array3.create Int8_signed C_layout) (tile_height - 2) (tile_width - 2) 3
10+
in
11+
let heights =
12+
Bigarray.(Array2.create Float32 C_layout) (tile_height - 2) (tile_width - 2)
13+
in
14+
for y = 1 to tile_height - 2 do
15+
for x = 1 to tile_width - 2 do
16+
let nx = (tile.{y, x - 1} -. tile.{y, x + 1}) *. deltay in
17+
let ny = (tile.{y - 1, x} -. tile.{y + 1, x}) *. deltax in
18+
let nz = 2. *. deltax *. deltay in
19+
let n = 127. /. sqrt ((nx *. nx) +. (ny *. ny) +. (nz *. nz)) in
20+
normals.{tile_height - 2 - y, x - 1, 0} <- truncate (nx *. n);
21+
normals.{tile_height - 2 - y, x - 1, 1} <- truncate (ny *. n);
22+
normals.{tile_height - 2 - y, x - 1, 2} <- truncate (nz *. n);
23+
heights.{tile_height - 2 - y, x - 1} <- tile.{y, x}
24+
done
25+
done
26+
27+
let tile_height = 1024
28+
29+
let tile_width = 1024
30+
31+
let tile = Bigarray.(Array2.create Float32 C_layout) tile_height tile_width
32+
33+
let () =
34+
for _ = 1 to 30 do
35+
precompute tile_height tile_width tile
36+
done

0 commit comments

Comments
 (0)