-
Notifications
You must be signed in to change notification settings - Fork 7
Conversation
Hi Jin-Guo, Thanks for the PR, that is an interesting interface. I like that it is extensible externally and I like the I suppose I was thinking about an interface similar to what we are using for TBLIS based on Is that overhead related to the dynamic construction of Note that in older versions of Julia, that kind of dynamic construction is very slow: JuliaLang/julia#36384. We could create a specialized @eval struct MatMulBackend{T}
(f::Type{<:MatMulBackend})() = $(Expr(:new, :f))
end
MatMulBackend(s) = MatMulBackend{Symbol(s)}()
macro MatMulBackend_str(s)
:(MatMulBackend{$(Expr(:quote, Symbol(s)))})
end That might be a nicer interface anyway. Also, I like the interface we have for Finally, we probably want a simpler interface for the if tA == 'T'
A = transpose(A)
end
if tB == 'T'
B = transpose(B)
end in every overload. We could also follow Finally, a small interface thing, it would be better to rename |
Agree, let's do it later.
Sounds good. Added.
Exactly.
Sounds good, I used GemmBackend to make the naming more consistent.
We can not avoid these lines if we call it gemm. To make it less terrifying, I made it look shorter.
We can do it whenever we need it. A deprecation warning will help people migrate. A general commentI feel |
My point with preferring Regarding overloading Anyway, we can merge this as is and I'm happy to clean it up, but I prefer to get the interface as good as possible the first time to avoid the annoyance of deprecations, when possible. |
Thanks, polishing the interface consistently definitely requires someone who understand the package very well. Sorry for not being able to help much. |
I'll merge this and treat it as an experimental feature for now. Interface is subject to change. |
For supporting different backends
A note on the benchmark results
Before using TropicalGEMM,
After using TropicalGEMM,
A note on the overheads