Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

lu_instance/qr_instance run a full factorization for FixedSizeArrays

Aperta Adatta ai principianti
#510 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

@devmotion ci sta già lavorando.

Dal 7/10/2026.

  • #511 di @devmotion — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
julia
Ambito
performance

Direzione di ricerca

Leggi i file esistenti ext/StaticArraysCoreExt.jl e ext/FillArraysExt.jl (o i loro equivalenti in ext/) come modello, poi aggiungi un FixedSizeArraysExt che definisca metodi a basso costo lu_instance / qr_instance ( e *_instance correlati) per FixedSizeMatrix. Conferma che il tipo di ogni instance corrisponda a ciò che lu(a; check=false) / qr(a) restituiscono realmente per un FixedSizeMatrix — ad esempio il pivot è una FixedSizeVector — eseguendo queste chiamate nella REPL. Con completamento si intende che ArrayInterface.lu_instance(F) è dell'ordine dei nanosecondi e che il benchmark dell'issue non mostra più un divario di 50×; controlla test/ per vedere dove vengono esercitati i metodi dell'estensione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

lu_instance and qr_instance only have cheap methods for Matrix. A FixedSizeMatrix from FixedSizeArrays.jl falls back to lu(a, check = false) / qr(a) and runs a full factorization. LinearSolve's init calls these, so building a cache costs about 50× more than for a Matrix of the same size:

using ArrayInterface, FixedSizeArrays, LinearSolve, Chairmarks
A = randn(64, 64); F = FixedSizeMatrix(A)
@b ArrayInterface.lu_instance(A)                           # 24 ns
@b ArrayInterface.lu_instance(F)                           # 19 μs
@b LinearSolve.init(LinearProblem(similar(A), similar(A))) # 3.1 μs
@b LinearSolve.init(LinearProblem(similar(F), similar(F))) # 168 μs

Suggested fix: add an FixedSizeArraysExt (like the existing StaticArraysCore and FillArrays extensions) with cheap *_instance methods for FixedSizeMatrix. The instances have to match the types the real factorizations return; for example, lu on a FixedSizeMatrix returns a FixedSizeVector pivot vector.

ArrayInterface 7.30.2, FixedSizeArrays 1.3.0, LinearSolve 5.18.2, Julia 1.13.1. Found via ExponentialUtilities.jl, where the default exponential! is about 4× slower on small FixedSizeMatrix inputs than on Matrix.

Lingua principale
Julia
Stelle
140
Fork
45
Merge medio
1m
PR unite (30g)
1

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di JuliaArrays/ArrayInterface.jl

Tutte le issue di JuliaArrays/ArrayInterface.jl

Issue simili

Altre issue su Julia

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.