Extremely slow BLAS muladd when α,β are Int
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- performance
Direzione di ricerca
Inizia eseguendo il benchmark riproducibile dell’issue ed esamina default_blasmul!, tiled_blasmul! e il wrapper MulAdd. Confronta il loro comportamento e i tempi di esecuzione con LinearAlgebra.mul! a cinque argomenti per α e β interi; il lavoro è completato quando il rallentamento segnalato è spiegato e le operazioni interessate hanno prestazioni comparabili o una limitazione documentata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi, perhaps I do not understand something about how ArrayLayouts are supposed to work and be used, but it seems that BLAS matrix multiplication (both default_blasmul! and tiled_blasmul!) is very slow in comparison to 5-argument LinearAlgebra.mul!.
Below is a reproducible example.
using LinearAlgebra
import ArrayLayouts: default_blasmul!, tiled_blasmul!, tile_size
A, B, C = (rand(1000, 1000) for _ in 1:3)
# mul! is fast
mul!(copy(C), A, B, 1, 1) ≈ A*B + C # true
@btime mul!(copy(C), A, B, 1, 1);
# 6.448 ms (4 allocations: 7.63 MiB)
# default_blasmul! is super slow!!
default_blasmul!(1, A, B, 1, copy(C)) ≈ A*B + C # true
@btime default_blasmul!(1, A, B, 1, copy(C));
# 852.139 ms (3 allocations: 7.63 MiB)
# tiled_blasmul! is also very slow!
ts = tile_size(eltype(A), eltype(B), eltype(C))
tiled_blasmul!(ts, 1, A, B, 1, copy(C)) ≈ A*B + C # true
@btime tiled_blasmul!(ts, 1, A, B, 1, copy(C));
# 402.555 ms (12 allocations: 7.66 MiB)
And this of course affects operations using MulAdd wrapper. What am I doing wrong? Or is it really a bug?
Version info
Julia Version 1.11.3
Commit d63adeda50d (2025-01-21 19:42 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 16 × AMD Ryzen 9 5900HX with Radeon Graphics
WORD_SIZE: 64
LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)
Environment:
JULIA_PROJECT = @.
JULIA_PKG_PRESERVE_TIERED_INSTALLED = true
JULIA_REVISE = manual
PKG status
[dce04be8] ArgCheck v2.4.0
[7d9fca2a] Arpack v0.5.4
[4c555306] ArrayLayouts v1.11.0
[86223c79] Graphs v1.12.0
⌃ [0b1a1467] KrylovKit v0.9.3
⌃ [5078a376] LazyArrays v2.4.0
[2ab3a3ac] LogExpFunctions v0.3.29
[5a0628fe] Supposition v0.3.5
[37e2e46d] LinearAlgebra v1.11.0
[2f01184e] SparseArrays v1.11.0
[f489334b] StyledStrings v1.11.0
[8dfed614] Test v1.11.0
- Lingua principale
- Julia
- Stelle
- 57
- Fork
- 10
- Merge medio
- 1g 9h
- PR unite (30g)
- 11
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaLinearAlgebra/ArrayLayouts.jl
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
JuliaLinearAlgebra/ArrayLayouts.jl#277 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
JuliaLinearAlgebra/ArrayLayouts.jl#243 ·
I maintainer di solito rispondono entro 1 giorno
-
Add RectDiagonalLayoutAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
JuliaLinearAlgebra/ArrayLayouts.jl#185 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
JuliaLinearAlgebra/ArrayLayouts.jl#157 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
overwrite `Base.maybeview`?Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
JuliaLinearAlgebra/ArrayLayouts.jl#155 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di JuliaLinearAlgebra/ArrayLayouts.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
rfordatascience/tidytuesday#1098 ·
-
`SplitRungeKutta` time steppers never call `update_lagrangian_particle_state!`, so particle `tracked_fields` are never updatedForse già presa @ali-ramadhan l’ha presa oggi. Apertabug 🐞
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
CliMA/Oceananigans.jl#6381 ·
I maintainer di solito rispondono entro 1 giorno
-
ci system:windows test
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Single-column TKE example: boundary-layer depth description doesn't match Han & Bretherton (2019)Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 82/100
NumericalEarth/Breeze.jl#1143 ·
I maintainer di solito rispondono entro 1 giorno
-
format-check (Runic) is red on master: formatter drift on ~200 filesForse già presa @ChrisRackauckas-Claude l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
SciML/ModelingToolkit.jl#5337 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni