From 44e3538d670bef8fb0013aad32a49ba06961135c Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Thu, 8 Jun 2023 16:39:02 -0400 Subject: [PATCH] tracy --- benchs/raytracer/dune | 2 +- benchs/raytracer/raytracer.ml | 11 +++++++++++ raytracer.sh | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/benchs/raytracer/dune b/benchs/raytracer/dune index 05c2948e..22e9ad14 100644 --- a/benchs/raytracer/dune +++ b/benchs/raytracer/dune @@ -2,4 +2,4 @@ (executable (name raytracer) - (libraries moonpool unix)) + (libraries moonpool unix tracy-client)) diff --git a/benchs/raytracer/raytracer.ml b/benchs/raytracer/raytracer.ml index 249d3413..9c9e67a9 100644 --- a/benchs/raytracer/raytracer.ml +++ b/benchs/raytracer/raytracer.ml @@ -265,15 +265,24 @@ let progress_thread (st : state) : Thread.t = in Moonpool.start_thread_on_some_domain run () +let tracy_plot st = + Tracy.plot "done" (float_of_int @@ Atomic.get st.n_done); + Tracy.plot "waiting" (float_of_int @@ Atomic.get st.n_waiting); + () + (** background thread that writes the results sequentially into the file *) let writer_thread (st : state) oc : Thread.t = let run () : unit = + let@ _sp = + Tracy.with_ ~line:__LINE__ ~file:__FILE__ ~name:"wait-next-res" () + in while not (Queue.is_empty st.results) do let r = Queue.pop st.results in match r with | Pixel r -> Atomic.incr st.n_done; Atomic.decr st.n_waiting; + tracy_plot st; let ir, ig, ib = Fut.wait_block_exn r in fpf oc "%d " ir; @@ -325,6 +334,7 @@ let run (config : config) = let rst = RS.split rst in let run () = + let@ _sp = Tracy.with_ ~line:__LINE__ ~file:__FILE__ ~name:"pixel" () in let color = ref { x = 0.; y = 0.; z = 0. } in for _step = 0 to config.ns - 1 do (* NOTE: Random.float is bounds __inclusive__ *) @@ -371,6 +381,7 @@ let run (config : config) = Thread.join t_writer let () = + Tracy.enable (); let nx = ref 400 in let ny = ref 200 in let ns = ref 150 in diff --git a/raytracer.sh b/raytracer.sh index 31975168..78a5d788 100755 --- a/raytracer.sh +++ b/raytracer.sh @@ -1,3 +1,3 @@ #!/bin/sh DUNE_OPTS="--profile=release --display=quiet" -exec dune exec $DUNE_OPTS benchs/raytracer/raytracer.exe -- $@ +sudo dune exec $DUNE_OPTS benchs/raytracer/raytracer.exe -- $@