@@ -3,10 +3,7 @@ type t = { inverted : bool; times_per_domain : float array array; runs : int }
3
3
let record ~budgetf ~n_domains ?(ensure_multi_domain = true )
4
4
?(domain_local_await = `Busy_wait ) ?(n_warmups = 3 ) ?(n_runs_min = 7 )
5
5
?(before = Fun. id) ~init ~work ?(after = Fun. id) () =
6
- let barrier_before = Barrier. make n_domains in
7
- let barrier_init = Barrier. make n_domains in
8
- let barrier_work = Barrier. make n_domains in
9
- let barrier_after = Barrier. make n_domains in
6
+ let barrier = Barrier. make n_domains in
10
7
let results =
11
8
Array. init n_domains @@ fun _ ->
12
9
Stack. create () |> Multicore_magic. copy_as_padded
@@ -54,20 +51,20 @@ let record ~budgetf ~n_domains ?(ensure_multi_domain = true)
54
51
let main domain_i =
55
52
let benchmark () =
56
53
for _ = 1 to n_warmups do
57
- Barrier. await barrier_before ;
54
+ Barrier. await barrier ;
58
55
if domain_i = 0 then begin
59
56
before () ;
60
57
Gc. major ()
61
58
end ;
62
- Barrier. await barrier_init ;
59
+ Barrier. await barrier ;
63
60
let state = init domain_i in
64
- Barrier. await barrier_work ;
61
+ Barrier. await barrier ;
65
62
work domain_i state;
66
- Barrier. await barrier_after ;
63
+ Barrier. await barrier ;
67
64
if domain_i = 0 then after ()
68
65
done ;
69
66
while ! runs < n_runs_min || not ! budget_used do
70
- Barrier. await barrier_before ;
67
+ Barrier. await barrier ;
71
68
if domain_i = 0 then begin
72
69
Multicore_magic. fenceless_set start_earliest Mtime.Span. zero;
73
70
before () ;
@@ -83,9 +80,9 @@ let record ~budgetf ~n_domains ?(ensure_multi_domain = true)
83
80
incr runs;
84
81
Gc. major ()
85
82
end ;
86
- Barrier. await barrier_init ;
83
+ Barrier. await barrier ;
87
84
let state = init domain_i in
88
- Barrier. await barrier_work ;
85
+ Barrier. await barrier ;
89
86
if Multicore_magic. fenceless_get start_earliest == Mtime.Span. zero then begin
90
87
let start_current = Mtime_clock. elapsed () in
91
88
if Multicore_magic. fenceless_get start_earliest == Mtime.Span. zero
@@ -95,7 +92,7 @@ let record ~budgetf ~n_domains ?(ensure_multi_domain = true)
95
92
end ;
96
93
work domain_i state;
97
94
let stop_current = Mtime_clock. elapsed () in
98
- Barrier. await barrier_after ;
95
+ Barrier. await barrier ;
99
96
if domain_i = 0 then after () ;
100
97
Stack. push
101
98
(Mtime.Span. to_float_ns
0 commit comments