JuliaArrays / JuliaArrays/BlockArrays.jl
Multiplication of ComplexF64 and Float64 blocked matrices does not dispatch to BLAS
Open
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 254
- Forks
- 39
- PR merge metrics
- No merged PRs in 30d
Description
The following leads to extremely long execution times:
using BlockArrays
A = BlockedArray(rand(ComplexF64, 5000, 5000), [2000,2000,1000], [2000,2000,1000])
B = BlockedArray(rand(Float64, 5000, 2000), [2000,2000,1000], [2000])
C = complex(B)
@time A * B
@time A * C
The latter finishes in 1.7 seconds, whereas the first (mixed realness) takes more than 100 times longer.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the provided BlockedArray reproduction and compare the A * B and A * C timings. Trace the blocked matrix multiplication dispatch to identify why mixed ComplexF64 and Float64 inputs avoid BLAS; done when the mixed-realness case dispatches appropriately and no longer has the reported severe slowdown.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100