Skip to content

v0.3.0 To-do List #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 of 4 tasks
xrq-phys opened this issue Jun 11, 2021 · 2 comments
Open
1 of 4 tasks

v0.3.0 To-do List #7

xrq-phys opened this issue Jun 11, 2021 · 2 comments

Comments

@xrq-phys
Copy link
Collaborator

xrq-phys commented Jun 11, 2021

  • Waiting for more Arm64 works in the upstream (by myself, though).
  • Introduce more tests (sizes, transpose, etc.)
  • Unsure Option to not override the LinearAlgebra module.
  • Mixed precision
@xrq-phys
Copy link
Collaborator Author

Just noticed that since 0.1.0, gemmt is introduced while upstream has ≥0.8.0 as requirement.
Hence I should tag the current HEAD as 0.2.0 and make this roadmap 0.3.0.

@xrq-phys xrq-phys changed the title v0.2.0 To-do List v0.3.0 To-do List Jun 11, 2021
@xrq-phys
Copy link
Collaborator Author

And another thing:

  • Overriding gemm! alone seems forwarding generic strides but not mixed precision. I'd be good to also override somehow mul!{A::Array{TA},B::Array{TB},C::Array{TC}}{TA≠TB≠TC} for mixed precision support.

cf. log:

# Generic striding is good:
julia> @benchmark view(A, 1:2:1000, :)*B setup=(A=rand(Float64, 1000, 1000); B=rand(Float64, 1000, 1000))
BenchmarkTools.Trial: 22 samples with 1 evaluation.
 Range (min … max):  228.803 ms … 233.134 ms  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     229.311 ms               ┊ GC (median):    0.00%
 Time  (mean ± σ):   229.954 ms ±   1.277 ms  ┊ GC (mean ± σ):  0.00% ± 0.00%

julia> using BLIS; @benchmark view(A, 1:2:1000, :)*B setup=(A=rand(Float64, 1000, 1000); B=rand(Float64, 1000, 1000))
BenchmarkTools.Trial: 213 samples with 1 evaluation.
 Range (min … max):  20.919 ms …  21.676 ms  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     21.161 ms               ┊ GC (median):    0.00%
 Time  (mean ± σ):   21.137 ms ± 109.760 μs  ┊ GC (mean ± σ):  0.00% ± 0.00%
# Mixed precision not reaching BLIS directly:
julia> A=rand(Float64, 1000, 1000); B=rand(Float32, 1000, 1000);
julia> using Cthulhu; @descend A*B
...
   %7  = invoke copyto_axcheck!(::Matrix{Float64},::Matrix{Float32})::Matrix{Float64}
   %8  = invoke gemm!(::Char,::Char,::Float64,::Matrix{Float64},::Matrix{Float64},::Float64,::Matrix{Float64})::Matrix{Float64}
 • ↩

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant