1
1
using BenchmarkTools
2
- import LinearAlgebra, RecursiveFactorization
2
+ using LinearAlgebra, RecursiveFactorization
3
3
4
4
BenchmarkTools. DEFAULT_PARAMETERS. seconds = 0.08
5
5
@@ -17,37 +17,39 @@ function luflop(m, n=m; innerflop=2)
17
17
end
18
18
19
19
bas_mflops = Float64[]
20
- rec8_mflops = Float64[]
21
- rec16_mflops = Float64[]
22
- rec32_mflops = Float64[]
20
+ rec_mflops = Float64[]
23
21
ref_mflops = Float64[]
24
- ns = 4 : 32 : 500
22
+ ns = 4 : 8 : 500
25
23
for n in ns
26
24
@info " $n × $n "
27
25
A = rand (n, n)
28
26
bt = @belapsed LinearAlgebra. lu! ($ (copy (A)))
29
27
push! (bas_mflops, luflop (n)/ bt/ 1e9 )
30
28
31
- rt8 = @belapsed RecursiveFactorization. lu! ($ (copy (A)); blocksize= 8 )
32
- push! (rec8_mflops, luflop (n)/ rt8/ 1e9 )
33
-
34
- rt16 = @belapsed RecursiveFactorization. lu! ($ (copy (A)); blocksize= 16 )
35
- push! (rec16_mflops, luflop (n)/ rt16/ 1e9 )
36
-
37
- rt32 = @belapsed RecursiveFactorization. lu! ($ (copy (A)); blocksize= 32 )
38
- push! (rec32_mflops, luflop (n)/ rt32/ 1e9 )
29
+ rt = @belapsed RecursiveFactorization. lu! ($ (copy (A)))
30
+ push! (rec_mflops, luflop (n)/ rt/ 1e9 )
39
31
40
32
ref = @belapsed LinearAlgebra. generic_lufact! ($ (copy (A)))
41
33
push! (ref_mflops, luflop (n)/ ref/ 1e9 )
42
34
end
43
35
44
- using Plots
45
- plt = plot (ns, bas_mflops, legend= :bottomright , lab= " OpenBLAS" , title= " LU Factorization Benchmark" , marker= :auto , dpi= 150 )
46
- plot! (plt, ns, rec8_mflops, lab= " RF8" , marker= :auto )
47
- plot! (plt, ns, rec16_mflops, lab= " RF16" , marker= :auto )
48
- plot! (plt, ns, rec32_mflops, lab= " RF32" , marker= :auto )
36
+ using DataFrames, VegaLite
37
+ df = DataFrame (Size = ns, RecursiveFactorization = rec_mflops, OpenBLAS = bas_mflops, Reference = ref_mflops)
38
+ df = stack (df, [:RecursiveFactorization , :OpenBLAS , :Reference ], variable_name = :Library , value_name = :GFLOPS )
39
+ plt = df |> @vlplot (
40
+ :line , color = :Library ,
41
+ x = {:Size }, y = {:GFLOPS },
42
+ width = 2400 , height = 600
43
+ )
44
+ save (joinpath (homedir (), " Pictures" , " lu_float64.png" ), plt)
45
+
46
+ #=
47
+ using Plot
48
+ plt = plot(ns, bas_mflops, legend=:bottomright, lab="OpenBLAS", title="LU Factorization Benchmark", marker=:auto, dpi=300)
49
+ plot!(plt, ns, rec_mflops, lab="RecursiveFactorization", marker=:auto)
49
50
plot!(plt, ns, ref_mflops, lab="Reference", marker=:auto)
50
51
xaxis!(plt, "size (N x N)")
51
52
yaxis!(plt, "GFLOPS")
52
53
savefig("lubench.png")
53
54
savefig("lubench.pdf")
55
+ =#
0 commit comments