Packages
Tensor library for Gleam/BEAM with a pure Gleam API, zero-copy views, and optional native acceleration
Retired package: Release invalid
Current section
Files
Jump to
Current section
Files
src/viva_tensor@benchmark.erl
-module(viva_tensor@benchmark).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/viva_tensor/benchmark.gleam").
-export([main/0]).
-file("src/viva_tensor/benchmark.gleam", 249).
-spec format_size(integer()) -> binary().
format_size(N) ->
case N of
_ when N >= 1000000 ->
<<(erlang:integer_to_binary(N div 1000000))/binary, "M"/utf8>>;
_ when N >= 1000 ->
<<(erlang:integer_to_binary(N div 1000))/binary, "K"/utf8>>;
_ ->
erlang:integer_to_binary(N)
end.
-file("src/viva_tensor/benchmark.gleam", 257).
-spec pad_right(binary(), integer()) -> binary().
pad_right(S, Width) ->
Len = string:length(S),
case Len < Width of
true ->
<<S/binary,
(gleam@string:repeat(<<" "/utf8>>, Width - Len))/binary>>;
false ->
S
end.
-file("src/viva_tensor/benchmark.gleam", 265).
-spec float_to_string_0(float()) -> binary().
float_to_string_0(F) ->
erlang:integer_to_binary(erlang:round(F)).
-file("src/viva_tensor/benchmark.gleam", 269).
-spec float_to_string_1(float()) -> binary().
float_to_string_1(F) ->
I = erlang:round(F * 10.0),
Whole = I div 10,
Frac = gleam@int:absolute_value(I) rem 10,
<<<<(erlang:integer_to_binary(Whole))/binary, "."/utf8>>/binary,
(erlang:integer_to_binary(Frac))/binary>>.
-file("src/viva_tensor/benchmark.gleam", 119).
-spec bench_lns(integer(), integer()) -> nil.
bench_lns(Size, Iterations) ->
T1@1 = case viva_tensor@core@ffi:nt_fill([Size], 2.0) of
{ok, T1} -> T1;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_lns"/utf8>>,
line => 121,
value => _assert_fail,
start => 3491,
'end' => 3535,
pattern_start => 3502,
pattern_end => 3508})
end,
T2@1 = case viva_tensor@core@ffi:nt_fill([Size], 3.0) of
{ok, T2} -> T2;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_lns"/utf8>>,
line => 122,
value => _assert_fail@1,
start => 3538,
'end' => 3582,
pattern_start => 3549,
pattern_end => 3555})
end,
Lns_a@1 = case viva_tensor@core@ffi:lns_from_f64(T1@1) of
{ok, Lns_a} -> Lns_a;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_lns"/utf8>>,
line => 123,
value => _assert_fail@2,
start => 3585,
'end' => 3628,
pattern_start => 3596,
pattern_end => 3605})
end,
Lns_b@1 = case viva_tensor@core@ffi:lns_from_f64(T2@1) of
{ok, Lns_b} -> Lns_b;
_assert_fail@3 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_lns"/utf8>>,
line => 124,
value => _assert_fail@3,
start => 3631,
'end' => 3674,
pattern_start => 3642,
pattern_end => 3651})
end,
case viva_tensor@core@ffi:lns_mul(Lns_a@1, Lns_b@1) of
{ok, _} -> nil;
_assert_fail@4 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_lns"/utf8>>,
line => 127,
value => _assert_fail@4,
start => 3690,
'end' => 3734,
pattern_start => 3701,
pattern_end => 3706})
end,
Start = viva_tensor@core@ffi:now_microseconds(),
_pipe = gleam@list:range(1, Iterations),
gleam@list:each(
_pipe,
fun(_) ->
case viva_tensor@core@ffi:lns_mul(Lns_a@1, Lns_b@1) of
{ok, _} -> nil;
_assert_fail@5 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_lns"/utf8>>,
line => 134,
value => _assert_fail@5,
start => 3852,
'end' => 3896,
pattern_start => 3863,
pattern_end => 3868})
end,
nil
end
),
End = viva_tensor@core@ffi:now_microseconds(),
Avg_us = case erlang:float(Iterations) of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator -> erlang:float(End - Start) / Gleam@denominator
end,
Ops = erlang:float(Size),
Gops = (case Avg_us of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator@1 -> Ops / Gleam@denominator@1
end) / 1000.0,
Size_str = format_size(Size),
Time_str = <<(float_to_string_1(Avg_us))/binary, " us"/utf8>>,
Gops_str = <<(float_to_string_1(Gops))/binary, " GIOP (IADD)"/utf8>>,
gleam_stdlib:println(
<<<<<<<<" LNS mul "/utf8, (pad_right(Size_str, 8))/binary>>/binary,
Time_str/binary>>/binary,
" "/utf8>>/binary,
Gops_str/binary>>
).
-file("src/viva_tensor/benchmark.gleam", 154).
-spec bench_horde(integer(), integer()) -> nil.
bench_horde(Entity_count, Iterations) ->
Horde@1 = case viva_tensor@core@ffi:horde_create(Entity_count, 2) of
{ok, Horde} -> Horde;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_horde"/utf8>>,
line => 156,
value => _assert_fail,
start => 4467,
'end' => 4523,
pattern_start => 4478,
pattern_end => 4487})
end,
Positions = begin
_pipe = gleam@list:range(0, Entity_count - 1),
gleam@list:flat_map(
_pipe,
fun(I) -> [erlang:float(I), erlang:float(I)] end
)
end,
Velocities = begin
_pipe@1 = gleam@list:range(0, Entity_count - 1),
gleam@list:flat_map(_pipe@1, fun(_) -> [1.0, 0.5] end)
end,
case viva_tensor@core@ffi:horde_set_positions(Horde@1, Positions) of
{ok, _} -> nil;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_horde"/utf8>>,
line => 167,
value => _assert_fail@1,
start => 4790,
'end' => 4850,
pattern_start => 4801,
pattern_end => 4806})
end,
case viva_tensor@core@ffi:horde_set_velocities(Horde@1, Velocities) of
{ok, _} -> nil;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_horde"/utf8>>,
line => 168,
value => _assert_fail@2,
start => 4853,
'end' => 4915,
pattern_start => 4864,
pattern_end => 4869})
end,
case viva_tensor@core@ffi:horde_integrate(Horde@1, 0.01667) of
{ok, _} -> nil;
_assert_fail@3 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_horde"/utf8>>,
line => 171,
value => _assert_fail@3,
start => 4931,
'end' => 4985,
pattern_start => 4942,
pattern_end => 4947})
end,
case viva_tensor@core@ffi:horde_dampen(Horde@1, 0.99) of
{ok, _} -> nil;
_assert_fail@4 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_horde"/utf8>>,
line => 172,
value => _assert_fail@4,
start => 4988,
'end' => 5036,
pattern_start => 4999,
pattern_end => 5004})
end,
Start = viva_tensor@core@ffi:now_microseconds(),
_pipe@2 = gleam@list:range(1, Iterations),
gleam@list:each(
_pipe@2,
fun(_) ->
case viva_tensor@core@ffi:horde_integrate(Horde@1, 0.01667) of
{ok, _} -> nil;
_assert_fail@5 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_horde"/utf8>>,
line => 179,
value => _assert_fail@5,
start => 5185,
'end' => 5239,
pattern_start => 5196,
pattern_end => 5201})
end,
case viva_tensor@core@ffi:horde_dampen(Horde@1, 0.99) of
{ok, _} -> nil;
_assert_fail@6 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_horde"/utf8>>,
line => 180,
value => _assert_fail@6,
start => 5244,
'end' => 5292,
pattern_start => 5255,
pattern_end => 5260})
end,
nil
end
),
End = viva_tensor@core@ffi:now_microseconds(),
Avg_us = case erlang:float(Iterations) of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator -> erlang:float(End - Start) / Gleam@denominator
end,
Fps_equiv = case Avg_us of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator@1 -> 1000000.0 / Gleam@denominator@1
end,
Size_str = format_size(Entity_count),
Time_str = <<(float_to_string_1(Avg_us))/binary, " us"/utf8>>,
Fps_str = <<(float_to_string_0(Fps_equiv))/binary, " fps"/utf8>>,
gleam_stdlib:println(
<<<<<<<<" Horde "/utf8, (pad_right(Size_str, 10))/binary>>/binary,
Time_str/binary>>/binary,
" "/utf8>>/binary,
Fps_str/binary>>
).
-file("src/viva_tensor/benchmark.gleam", 199).
-spec bench_hdc(integer(), integer()) -> nil.
bench_hdc(Dim, Iterations) ->
Vec_a@1 = case viva_tensor@core@ffi:hdc_random(Dim, 42) of
{ok, Vec_a} -> Vec_a;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_hdc"/utf8>>,
line => 201,
value => _assert_fail,
start => 5833,
'end' => 5879,
pattern_start => 5844,
pattern_end => 5853})
end,
Vec_b@1 = case viva_tensor@core@ffi:hdc_random(Dim, 43) of
{ok, Vec_b} -> Vec_b;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_hdc"/utf8>>,
line => 202,
value => _assert_fail@1,
start => 5882,
'end' => 5928,
pattern_start => 5893,
pattern_end => 5902})
end,
case viva_tensor@core@ffi:hdc_bind(Vec_a@1, Vec_b@1) of
{ok, _} -> nil;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_hdc"/utf8>>,
line => 205,
value => _assert_fail@2,
start => 5944,
'end' => 5989,
pattern_start => 5955,
pattern_end => 5960})
end,
case viva_tensor@core@ffi:hdc_similarity(Vec_a@1, Vec_b@1) of
{ok, _} -> nil;
_assert_fail@3 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_hdc"/utf8>>,
line => 206,
value => _assert_fail@3,
start => 5992,
'end' => 6043,
pattern_start => 6003,
pattern_end => 6008})
end,
Start1 = viva_tensor@core@ffi:now_microseconds(),
_pipe = gleam@list:range(1, Iterations),
gleam@list:each(
_pipe,
fun(_) ->
case viva_tensor@core@ffi:hdc_bind(Vec_a@1, Vec_b@1) of
{ok, _} -> nil;
_assert_fail@4 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_hdc"/utf8>>,
line => 212,
value => _assert_fail@4,
start => 6162,
'end' => 6207,
pattern_start => 6173,
pattern_end => 6178})
end,
nil
end
),
End1 = viva_tensor@core@ffi:now_microseconds(),
Bind_us = case erlang:float(Iterations) of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator -> erlang:float(End1 - Start1) / Gleam@denominator
end,
Start2 = viva_tensor@core@ffi:now_microseconds(),
_pipe@1 = gleam@list:range(1, Iterations),
gleam@list:each(
_pipe@1,
fun(_) ->
case viva_tensor@core@ffi:hdc_similarity(Vec_a@1, Vec_b@1) of
{ok, _} -> nil;
_assert_fail@5 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_hdc"/utf8>>,
line => 222,
value => _assert_fail@5,
start => 6449,
'end' => 6500,
pattern_start => 6460,
pattern_end => 6465})
end,
nil
end
),
End2 = viva_tensor@core@ffi:now_microseconds(),
Sim_us = case erlang:float(Iterations) of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator@1 -> erlang:float(End2 - Start2) / Gleam@denominator@1
end,
Bind_ops = case Bind_us of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator@2 -> 1000000.0 / Gleam@denominator@2
end,
Sim_ops = case Sim_us of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator@3 -> 1000000.0 / Gleam@denominator@3
end,
gleam_stdlib:println(
<<<<<<<<" HDC bind: "/utf8, (float_to_string_1(Bind_us))/binary>>/binary,
" us "/utf8>>/binary,
(float_to_string_0(Bind_ops))/binary>>/binary,
" ops/sec"/utf8>>
),
gleam_stdlib:println(
<<<<<<<<" HDC similarity: "/utf8, (float_to_string_1(Sim_us))/binary>>/binary,
" us "/utf8>>/binary,
(float_to_string_0(Sim_ops))/binary>>/binary,
" ops/sec"/utf8>>
).
-file("src/viva_tensor/benchmark.gleam", 276).
-spec float_to_string_2(float()) -> binary().
float_to_string_2(F) ->
I = erlang:round(F * 100.0),
Whole = I div 100,
Frac = gleam@int:absolute_value(I) rem 100,
Frac_str = case Frac < 10 of
true ->
<<"0"/utf8, (erlang:integer_to_binary(Frac))/binary>>;
false ->
erlang:integer_to_binary(Frac)
end,
<<<<(erlang:integer_to_binary(Whole))/binary, "."/utf8>>/binary,
Frac_str/binary>>.
-file("src/viva_tensor/benchmark.gleam", 85).
-spec bench_matmul(integer(), integer()) -> nil.
bench_matmul(N, Iterations) ->
Shape = [N, N],
A@1 = case viva_tensor@core@ffi:nt_ones(Shape) of
{ok, A} -> A;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_matmul"/utf8>>,
line => 88,
value => _assert_fail,
start => 2490,
'end' => 2527,
pattern_start => 2501,
pattern_end => 2506})
end,
B@1 = case viva_tensor@core@ffi:nt_ones(Shape) of
{ok, B} -> B;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_matmul"/utf8>>,
line => 89,
value => _assert_fail@1,
start => 2530,
'end' => 2567,
pattern_start => 2541,
pattern_end => 2546})
end,
case viva_tensor@core@ffi:nt_matmul(A@1, B@1, N, N, N) of
{ok, _} -> nil;
_assert_fail@2 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_matmul"/utf8>>,
line => 92,
value => _assert_fail@2,
start => 2583,
'end' => 2630,
pattern_start => 2594,
pattern_end => 2599})
end,
case viva_tensor@core@ffi:nt_matmul(A@1, B@1, N, N, N) of
{ok, _} -> nil;
_assert_fail@3 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_matmul"/utf8>>,
line => 93,
value => _assert_fail@3,
start => 2633,
'end' => 2680,
pattern_start => 2644,
pattern_end => 2649})
end,
case viva_tensor@core@ffi:nt_matmul(A@1, B@1, N, N, N) of
{ok, _} -> nil;
_assert_fail@4 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_matmul"/utf8>>,
line => 94,
value => _assert_fail@4,
start => 2683,
'end' => 2730,
pattern_start => 2694,
pattern_end => 2699})
end,
Start = viva_tensor@core@ffi:now_microseconds(),
_pipe = gleam@list:range(1, Iterations),
gleam@list:each(
_pipe,
fun(_) ->
case viva_tensor@core@ffi:nt_matmul(A@1, B@1, N, N, N) of
{ok, _} -> nil;
_assert_fail@5 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"viva_tensor/benchmark"/utf8>>,
function => <<"bench_matmul"/utf8>>,
line => 101,
value => _assert_fail@5,
start => 2840,
'end' => 2887,
pattern_start => 2851,
pattern_end => 2856})
end,
nil
end
),
End = viva_tensor@core@ffi:now_microseconds(),
Avg_us = case erlang:float(Iterations) of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator -> erlang:float(End - Start) / Gleam@denominator
end,
Flops = 2.0 * erlang:float((N * N) * N),
Gflops = (case Avg_us of
+0.0 -> +0.0;
-0.0 -> -0.0;
Gleam@denominator@1 -> Flops / Gleam@denominator@1
end) / 1000.0,
Size_str = <<<<(erlang:integer_to_binary(N))/binary, "x"/utf8>>/binary,
(erlang:integer_to_binary(N))/binary>>,
Time_str = <<(float_to_string_2(Avg_us / 1000.0))/binary, " ms"/utf8>>,
Gflops_str = <<(float_to_string_1(Gflops))/binary, " GFLOPS"/utf8>>,
gleam_stdlib:println(
<<<<<<<<" "/utf8, (pad_right(Size_str, 12))/binary>>/binary,
Time_str/binary>>/binary,
" "/utf8>>/binary,
Gflops_str/binary>>
).
-file("src/viva_tensor/benchmark.gleam", 13).
-spec main() -> nil.
main() ->
gleam_stdlib:println(
begin
_pipe = <<"="/utf8>>,
gleam@string:repeat(_pipe, 60)
end
),
gleam_stdlib:println(
<<" VIVA TENSOR BENCHMARK SUITE - Mad Scientist Edition"/utf8>>
),
gleam_stdlib:println(
begin
_pipe@1 = <<"="/utf8>>,
gleam@string:repeat(_pipe@1, 60)
end
),
gleam_stdlib:println(<<""/utf8>>),
Backend = viva_tensor@core@ffi:zig_backend_info(),
gleam_stdlib:println(<<"Backend: "/utf8, Backend/binary>>),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(<<">>> MATMUL BENCHMARKS (Goto GEMM, f64)"/utf8>>),
gleam_stdlib:println(
begin
_pipe@2 = <<"-"/utf8>>,
gleam@string:repeat(_pipe@2, 60)
end
),
Sizes = [100, 200, 500, 1000, 1500, 2000],
gleam@list:each(
Sizes,
fun(N) ->
Iterations = case N of
100 ->
100;
200 ->
50;
500 ->
20;
1000 ->
5;
1500 ->
3;
_ ->
2
end,
bench_matmul(N, Iterations)
end
),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(<<">>> LNS BENCHMARKS (IADD mul, f32)"/utf8>>),
gleam_stdlib:println(
begin
_pipe@3 = <<"-"/utf8>>,
gleam@string:repeat(_pipe@3, 60)
end
),
bench_lns(10000, 1000),
bench_lns(100000, 100),
bench_lns(1000000, 10),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(
<<">>> HORDE BENCHMARKS (SoA Physics, 60fps target)"/utf8>>
),
gleam_stdlib:println(
begin
_pipe@4 = <<"-"/utf8>>,
gleam@string:repeat(_pipe@4, 60)
end
),
bench_horde(1000, 1000),
bench_horde(10000, 100),
bench_horde(100000, 10),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(<<">>> HDC BENCHMARKS (10K-bit vectors)"/utf8>>),
gleam_stdlib:println(
begin
_pipe@5 = <<"-"/utf8>>,
gleam@string:repeat(_pipe@5, 60)
end
),
bench_hdc(10048, 10000),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(
begin
_pipe@6 = <<"="/utf8>>,
gleam@string:repeat(_pipe@6, 60)
end
),
gleam_stdlib:println(<<" BENCHMARK COMPLETE"/utf8>>),
gleam_stdlib:println(
begin
_pipe@7 = <<"="/utf8>>,
gleam@string:repeat(_pipe@7, 60)
end
).