Skip to content
This repository has been archived by the owner on Jan 31, 2021. It is now read-only.

Benchmark of ArrayFire.jl LinearAlgebra #3

Open
GiggleLiu opened this issue Oct 19, 2018 · 0 comments
Open

Benchmark of ArrayFire.jl LinearAlgebra #3

GiggleLiu opened this issue Oct 19, 2018 · 0 comments

Comments

@GiggleLiu
Copy link
Member

GiggleLiu commented Oct 19, 2018

Platform:

ArrayFire v3.6.1 (OpenCL, 64-bit Linux, build 4fcd0dd)
[0] NVIDIA: GeForce 940MX, 2004 MB
Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz

Float32

julia> af = AFArray(randn(Float32, 500,500))
julia> a = Array(af)

SVD

julia> @benchmark svd($af)
BenchmarkTools.Trial: 
  memory estimate:  80 bytes
  allocs estimate:  4
  --------------
  minimum time:     296.944 ms (0.00% GC)
  median time:      300.621 ms (0.00% GC)
  mean time:        303.669 ms (0.00% GC)
  maximum time:     330.223 ms (0.00% GC)
  --------------
  samples:          17
  evals/sample:     1

julia> @benchmark svd($a)
BenchmarkTools.Trial: 
  memory estimate:  5.77 MiB
  allocs estimate:  13
  --------------
  minimum time:     62.204 ms (0.00% GC)
  median time:      64.247 ms (0.00% GC)
  mean time:        68.539 ms (3.09% GC)
  maximum time:     137.922 ms (51.95% GC)
  --------------
  samples:          73
  evals/sample:     1

QR

julia> @benchmark qr($af)
BenchmarkTools.Trial: 
  memory estimate:  128 bytes
  allocs estimate:  7
  --------------
  minimum time:     14.502 ms (0.00% GC)
  median time:      15.172 ms (0.00% GC)
  mean time:        17.543 ms (0.00% GC)
  maximum time:     35.281 ms (0.00% GC)
  --------------
  samples:          286
  evals/sample:     1

julia> @benchmark qr($a)
BenchmarkTools.Trial: 
  memory estimate:  1.09 MiB
  allocs estimate:  7
  --------------
  minimum time:     7.965 ms (0.00% GC)
  median time:      9.063 ms (0.00% GC)
  mean time:        9.462 ms (1.66% GC)
  maximum time:     70.883 ms (0.00% GC)
  --------------
  samples:          528
  evals/sample:     1

Cholesky

julia> @benchmark ArrayFire.chol($(af*af'))
BenchmarkTools.Trial: 
  memory estimate:  48 bytes
  allocs estimate:  2
  --------------
  minimum time:     11.736 ms (0.00% GC)
  median time:      12.092 ms (0.00% GC)
  mean time:        12.206 ms (0.00% GC)
  maximum time:     24.364 ms (0.00% GC)
  --------------
  samples:          410
  evals/sample:     1

julia> @benchmark cholesky($(a*a'))
BenchmarkTools.Trial: 
  memory estimate:  976.75 KiB
  allocs estimate:  6
  --------------
  minimum time:     2.357 ms (0.00% GC)
  median time:      2.631 ms (0.00% GC)
  mean time:        2.895 ms (2.58% GC)
  maximum time:     59.218 ms (95.45% GC)
  --------------
  samples:          1722
  evals/sample:     1

LU

julia> @benchmark lu($af)
BenchmarkTools.Trial: 
  memory estimate:  128 bytes
  allocs estimate:  7
  --------------
  minimum time:     14.446 ms (0.00% GC)
  median time:      19.002 ms (0.00% GC)
  mean time:        19.329 ms (0.00% GC)
  maximum time:     29.961 ms (0.00% GC)
  --------------
  samples:          259
  evals/sample:     1

julia> @benchmark lu($a)
BenchmarkTools.Trial: 
  memory estimate:  980.73 KiB
  allocs estimate:  4
  --------------
  minimum time:     3.456 ms (0.00% GC)
  median time:      3.774 ms (0.00% GC)
  mean time:        4.160 ms (2.25% GC)
  maximum time:     61.557 ms (91.93% GC)
  --------------
  samples:          1199
  evals/sample:     1

MATMUL

julia> @benchmark $af*$af seconds=0.2
BenchmarkTools.Trial: 
  memory estimate:  16 bytes
  allocs estimate:  1
  --------------
  minimum time:     46.298 μs (0.00% GC)
  median time:      49.602 μs (0.00% GC)
  mean time:        346.668 μs (0.00% GC)
  maximum time:     898.045 μs (0.00% GC)
  --------------
  samples:          574
  evals/sample:     1

julia> @benchmark $a*$a seconds=0.2
BenchmarkTools.Trial: 
  memory estimate:  976.64 KiB
  allocs estimate:  2
  --------------
  minimum time:     2.375 ms (0.00% GC)
  median time:      2.447 ms (0.00% GC)
  mean time:        4.538 ms (37.46% GC)
  maximum time:     71.897 ms (86.66% GC)
  --------------
  samples:          46
  evals/sample:     1

FFT

julia> @benchmark fft($af) seconds=0.1
BenchmarkTools.Trial: 
  memory estimate:  16 bytes
  allocs estimate:  1
  --------------
  minimum time:     34.301 μs (0.00% GC)
  median time:      42.102 μs (0.00% GC)
  mean time:        336.185 μs (0.00% GC)
  maximum time:     690.142 μs (0.00% GC)
  --------------
  samples:          297
  evals/sample:     1

julia> @benchmark fft($a) seconds=0.1
BenchmarkTools.Trial: 
  memory estimate:  3.82 MiB
  allocs estimate:  57
  --------------
  minimum time:     4.240 ms (0.00% GC)
  median time:      4.448 ms (0.00% GC)
  mean time:        9.759 ms (51.48% GC)
  maximum time:     50.947 ms (89.11% GC)
  --------------
  samples:          12
  evals/sample:     1

ComplexF64

julia> af = AFArray(randn(ComplexF64, 500,500))
julia> a = Array(af)

SVD

julia> @benchmark svd($af)
BenchmarkTools.Trial: 
  memory estimate:  80 bytes
  allocs estimate:  4
  --------------
  minimum time:     382.373 ms (0.00% GC)
  median time:      398.000 ms (0.00% GC)
  mean time:        399.630 ms (0.00% GC)
  maximum time:     428.247 ms (0.00% GC)
  --------------
  samples:          13
  evals/sample:     1

julia> @benchmark svd($a)
BenchmarkTools.Trial: 
  memory estimate:  21.55 MiB
  allocs estimate:  15
  --------------
  minimum time:     193.901 ms (0.26% GC)
  median time:      198.184 ms (0.25% GC)
  mean time:        205.327 ms (3.17% GC)
  maximum time:     270.578 ms (27.48% GC)
  --------------
  samples:          25
  evals/sample:     1

QR

julia> @benchmark qr($af)
BenchmarkTools.Trial: 
  memory estimate:  128 bytes
  allocs estimate:  7
  --------------
  minimum time:     122.182 ms (0.00% GC)
  median time:      123.148 ms (0.00% GC)
  mean time:        123.565 ms (0.00% GC)
  maximum time:     132.345 ms (0.00% GC)
  --------------
  samples:          41
  evals/sample:     1

julia> @benchmark qr($a)
BenchmarkTools.Trial: 
  memory estimate:  4.36 MiB
  allocs estimate:  7
  --------------
  minimum time:     25.726 ms (0.00% GC)
  median time:      27.115 ms (0.00% GC)
  mean time:        28.266 ms (1.82% GC)
  maximum time:     86.477 ms (67.93% GC)
  --------------
  samples:          177
  evals/sample:     1

Cholesky

julia> @benchmark ArrayFire.chol($(af*af'))
BenchmarkTools.Trial: 
  memory estimate:  48 bytes
  allocs estimate:  2
  --------------
  minimum time:     33.331 ms (0.00% GC)
  median time:      33.746 ms (0.00% GC)
  mean time:        33.882 ms (0.00% GC)
  maximum time:     42.734 ms (0.00% GC)
  --------------
  samples:          148
  evals/sample:     1

julia> @benchmark cholesky($(a*a'))
BenchmarkTools.Trial: 
  memory estimate:  3.81 MiB
  allocs estimate:  6
  --------------
  minimum time:     7.183 ms (0.00% GC)
  median time:      8.076 ms (0.00% GC)
  mean time:        9.903 ms (2.92% GC)
  maximum time:     90.004 ms (89.75% GC)
  --------------
  samples:          505
  evals/sample:     1

LU

julia> @benchmark lu($(af))
BenchmarkTools.Trial: 
  memory estimate:  128 bytes
  allocs estimate:  7
  --------------
  minimum time:     58.613 ms (0.00% GC)
  median time:      60.774 ms (0.00% GC)
  mean time:        62.853 ms (0.00% GC)
  maximum time:     100.175 ms (0.00% GC)
  --------------
  samples:          80
  evals/sample:     1

julia> @benchmark lu($(a))
BenchmarkTools.Trial: 
  memory estimate:  3.82 MiB
  allocs estimate:  4
  --------------
  minimum time:     10.219 ms (0.00% GC)
  median time:      11.180 ms (0.00% GC)
  mean time:        16.394 ms (2.11% GC)
  maximum time:     195.198 ms (0.30% GC)
  --------------
  samples:          305
  evals/sample:     1

MATMUL

julia> @benchmark $af * $af
BenchmarkTools.Trial: 
  memory estimate:  16 bytes
  allocs estimate:  1
  --------------
  minimum time:     58.479 ms (0.00% GC)
  median time:      58.717 ms (0.00% GC)
  mean time:        58.965 ms (0.00% GC)
  maximum time:     60.325 ms (0.00% GC)
  --------------
  samples:          85
  evals/sample:     1

julia> @benchmark $a * $a
BenchmarkTools.Trial: 
  memory estimate:  3.81 MiB
  allocs estimate:  2
  --------------
  minimum time:     16.061 ms (0.00% GC)
  median time:      16.370 ms (0.00% GC)
  mean time:        16.959 ms (2.13% GC)
  maximum time:     76.975 ms (78.45% GC)
  --------------
  samples:          295
  evals/sample:     1

FFT

julia> @benchmark fft($af) seconds=0.2
BenchmarkTools.Trial: 
  memory estimate:  16 bytes
  allocs estimate:  1
  --------------
  minimum time:     43.220 μs (0.00% GC)
  median time:      44.927 μs (0.00% GC)
  mean time:        1.086 ms (0.00% GC)
  maximum time:     3.089 ms (0.00% GC)
  --------------
  samples:          184
  evals/sample:     1

julia> @benchmark fft($a) seconds=0.2
BenchmarkTools.Trial: 
  memory estimate:  3.82 MiB
  allocs estimate:  55
  --------------
  minimum time:     4.186 ms (0.00% GC)
  median time:      4.362 ms (0.00% GC)
  mean time:        6.849 ms (30.34% GC)
  maximum time:     51.125 ms (89.29% GC)
  --------------
  samples:          30
  evals/sample:     1

NOTE!

ArrayFire.jl contains a lot of anoying bugs.

@GiggleLiu GiggleLiu changed the title Benchmarking ArrayFire.jl LinearAlgebra Benchmarking ArrayFire.jl LinearAlgebra Oct 19, 2018
@GiggleLiu GiggleLiu changed the title Benchmarking ArrayFire.jl LinearAlgebra Benchmark of ArrayFire.jl LinearAlgebra Oct 19, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant