JuliaLinearAlgebra / Octavian.jl

Multi-threaded BLAS-like library that provides pure Julia matrix multiplication
https://julialinearalgebra.github.io/Octavian.jl/stable/
Other
232 stars 18 forks source link

De-conflicting the names of functions for matrix multiplication #42

Closed DilumAluthge closed 3 years ago

DilumAluthge commented 3 years ago
Package Function exported?
Gaius.jl Gaius.mul! no
Octavian.jl matmul! yes
PaddedMatrices.jl matmul! yes
StrideArrays.jl matmul! yes

We should come up with some different names.

I think the implementation that is currently the fastest should get the name matmul!. IIRC, PaddedMatrices currently has the fastest implementation. So we should keep the name matmul! for PaddedMatrices, and come up with a different name for Octavian.jl. Maybe gemm!? Or matrix_mul!?


For reference, the LinearAlgebra standard library exports the following names, so we should not export any of them from our own packages:

DilumAluthge commented 3 years ago

@chriselrod After we merge https://github.com/JuliaLinearAlgebra/Octavian.jl/pull/41, are you still going to have a matrix multiplication function in StrideArrays? Or are you going to remove it from StrideArrays?

chriselrod commented 3 years ago

@chriselrod After we merge #41, are you still going to have a matrix multiplication function in StrideArrays? Or are you going to remove it from StrideArrays?

I'll remove it. And from PaddedMatrices too, but StrideArrays is its successor.

DilumAluthge commented 3 years ago

@chriselrod After we merge #41, are you still going to have a matrix multiplication function in StrideArrays? Or are you going to remove it from StrideArrays?

I'll remove it. And from PaddedMatrices too, but StrideArrays is its successor.

I've removed StrideArrays from the table.

So https://github.com/JuliaLinearAlgebra/Octavian.jl/pull/41 will move the StrideArrays matmul into Octavian.

If you're also removing the PaddedMatrices matmul, are you going to put that implementation somewhere else?

chriselrod commented 3 years ago

No, I'll delete it.

DilumAluthge commented 3 years ago

No, I'll delete it.

Oh, I see. Is the implementation in StrideArrays (soon to be Octavian) faster than the implementation in PaddedArrays?

chriselrod commented 3 years ago

Yes, especially at small sizes.

DilumAluthge commented 3 years ago

I've removed PaddedMatrices from the table, which means the issue basically resolved itself.

I'll leave it open until the surgeries on StrideArrays and PaddedMatrices are complete.