Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

lu_instance/qr_instance run a full factorization for FixedSizeArrays

Abierto Apto para principiantes
#510 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@devmotion ya está trabajando en esto.

Desde el 7/10/2026.

  • #511 de @devmotion — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
julia
Área
performance

Línea de trabajo

Lee los existentes ext/StaticArraysCoreExt.jl y ext/FillArraysExt.jl (o sus equivalentes en ext/) como plantilla y luego añade un FixedSizeArraysExt que defina métodos baratos de lu_instance / qr_instance (y *_instance relacionados) para FixedSizeMatrix. Confirma que el tipo de cada instance coincide con lo que lu(a; check=false) / qr(a) devuelven realmente para un FixedSizeMatrix — p. ej. el pivot es una FixedSizeVector — ejecutando esas llamadas en la REPL. Hecho significa que ArrayInterface.lu_instance(F) está en escala de nanosegundos y que el benchmark del issue ya no muestra una brecha de 50×; consulta test/ para ver dónde se ejercitan los métodos de la extensión.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
Julia
Estrellas
140
Forks
45
Merge medio
1 min
PR fusionados (30 d)
1

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaArrays/ArrayInterface.jl

Todos los issues de JuliaArrays/ArrayInterface.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.