MLX compatibility: linalg functions
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- testing-qa, tooling
Línea de trabajo
Empieza ejecutando los nodos de prueba enumerados, incluidos test_cholesky, test_eigh, test_matmul, test_qr y test_vecdot, y agrupa sus fallos según correspondan a una API ausente o a un comportamiento incompatible. Usa la tabla de comparación como alcance; terminado significa que los fallos de compatibilidad de MLX indicados están resueltos y que las pruebas afectadas pasan.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Scroll ->
| Array API | MLX Analog | Status | Notes | Test Node | Result |
|---|---|---|---|---|---|
| linalg.cholesky(x, /, *, upper=False) | linalg.cholesky(a, /, *, upper: bool = False, stream=None) | incompatible | MLX rejects complex64 inputs and only supports float32 and float64, while the test generates supported complex inputs. |
test_cholesky | Failed |
| linalg.det(x, /) | linalg.det(a, /, *, stream=None) | incompatible | MLX does not support complex inputs; complex64 raises ValueError. |
test_det | Failed |
| linalg.diagonal(x, /, *, offset=0) | No MLX analog | missing | mlx.core.linalg has no diagonal attribute. |
test_diagonal | Failed |
| linalg.eigh(x, /) | linalg.eigh(a, /, *, stream=None) | incompatible | Multiple issues: MLX fails while generating some batched symmetric matrices due to broadcasting, rejects empty/non-square matrix cases expected by the tests, and returns a plain tuple instead of the required namedtuple with eigenvalues and eigenvectors. |
test_eigh | Failed |
| linalg.eigvalsh(x, /) | linalg.eigvalsh(a, /, *, stream=None) | incompatible | MLX fails for some batched symmetric matrices due to broadcasting and rejects empty/non-square matrix cases generated by the tests. | test_eigvalsh | Failed |
| linalg.eig(x, /) | linalg.eig(a, /, *, stream=None) | incompatible | MLX returns a plain tuple instead of the required namedtuple with eigenvalues and eigenvectors. |
test_eig | Failed |
| linalg.inv(x, /) | linalg.inv(a, /, *, stream=None) | incompatible | MLX rejects complex64 inputs and only supports float32 and float64. |
test_inv | Failed |
| linalg.matmul(x1, x2, /) | No mlx.core.linalg.matmul analog |
missing | mlx.core.linalg has no matmul attribute. |
test_linalg_matmul | Failed |
| matmul(x1, x2, /) | matmul(a, b, /, *, stream=None) | incompatible | MLX rejects integer inputs such as uint16, requiring inexact/floating-point result types. |
test_matmul | Failed |
| linalg.matrix_norm(x, /, *, keepdims=False, ord="fro") | No MLX analog | missing | mlx.core.linalg has no matrix_norm attribute. |
test_matrix_norm | Failed |
| linalg.matrix_power(x, n, /) | No MLX analog | missing | mlx.core.linalg has no matrix_power attribute. |
test_matrix_power | Failed |
| linalg.matrix_rank(x, /, *, rtol=None) | No MLX analog | missing | mlx.core.linalg has no matrix_rank attribute. |
test_matrix_rank | Failed |
| linalg.matrix_transpose(x, /) | No mlx.core.linalg.matrix_transpose analog |
missing | mlx.core.linalg has no matrix_transpose attribute. |
test_linalg_matrix_transpose | Failed |
| matrix_transpose(x, /) | matrix_transpose(a, /, *, stream=None) | incompatible | MLX produces an incorrect output shape for empty arrays with rank greater than two; (0, 1, 1) becomes (1, 1, 0) instead of swapping only the last two axes. |
test_matrix_transpose | Failed |
| linalg.outer(x1, x2, /) | No MLX analog | missing | mlx.core.linalg has no outer attribute. |
test_outer | Failed |
| linalg.pinv(x, /, *, rtol=None) | linalg.pinv(a, /, *, stream=None) | incompatible | MLX lacks the rtol keyword and also rejects complex64 inputs, supporting only float32 and float64. |
test_pinv | Failed |
| linalg.qr(x, /, *, mode="reduced") | linalg.qr(a, /, *, stream=None) | incompatible | MLX lacks the mode keyword, returns a plain tuple instead of a namedtuple with Q and R, and rejects complex64 inputs. |
test_qr | Failed |
| linalg.slogdet(x, /) | linalg.slogdet(a, /, *, stream=None) | incompatible | MLX returns a plain tuple instead of the required namedtuple with sign and logabsdet, and does not support complex inputs. |
test_slogdet | Failed |
| linalg.solve(x1, x2, /) | linalg.solve(a, b, /, *, stream=None) | incompatible | MLX fails on an empty-array case with a take_along_axis dimension mismatch. |
test_solve | Failed |
| linalg.svd(x, /, *, full_matrices=True) | linalg.svd(a, compute_uv: bool = True, *, stream=None) | incompatible | MLX exposes compute_uv instead of the Array API's full_matrices keyword and returns a plain tuple instead of a namedtuple with U, S, and Vh. |
test_svd | Failed |
| linalg.svdvals(x, /) | No MLX analog | missing | mlx.core.linalg has no svdvals attribute. |
test_svdvals | Failed |
| linalg.tensordot(x1, x2, /, *, axes=2) | No mlx.core.linalg.tensordot analog |
missing | mlx.core.linalg has no tensordot attribute. |
test_linalg_tensordot | Failed |
| tensordot(x1, x2, /, *, axes=2) | tensordot(a, b, /, *, axes=2, stream=None) | incompatible | MLX fails for integer inputs because its implementation reaches matmul, which only supports inexact/floating-point types. |
test_tensordot | Failed |
| linalg.trace(x, /, *, offset=0, dtype=None) | No MLX analog | missing | mlx.core.linalg has no trace attribute. |
test_trace | Failed |
| linalg.vecdot(x1, x2, /, *, axis=-1) | No mlx.core.linalg.vecdot analog |
missing | mlx.core.linalg has no vecdot attribute. |
test_linalg_vecdot | Failed |
| vecdot(x1, x2, /, *, axis=-1) | vecdot(a, b, /, *, axis=-1, stream=None) | incompatible | MLX produces an incorrect promoted dtype for mixed integer inputs: uint8 and uint16 produce uint32, while the expected dtype is uint16. |
test_vecdot | Failed |
| linalg.vecdot(x1, x2, /, *, axis=-1) | No mlx.core.linalg.vecdot analog |
missing | mlx.core.linalg.vecdot is missing, so the required conjugating vecdot behavior cannot be tested. |
test_vecdot_conj | Failed |
| linalg.vector_norm(x, /, *, axis=None, keepdims=False, ord=2) | No MLX analog | missing | mlx.core.linalg has no vector_norm attribute. |
test_vector_norm | Failed |
- Lenguaje dominante
- Python
- Estrellas
- 131
- Forks
- 49
- Merge medio
- 2 d 8 h
- PR fusionados (30 d)
- 6
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de data-apis/array-api-compat
-
blocked by upstream
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
data-apis/array-api-compat#439 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
data-apis/array-api-compat#395 · 2 comentarios ·
-
Release 1.16 Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
data-apis/array-api-compat#476 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
data-apis/array-api-compat#465 · 3 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
data-apis/array-api-compat#463 · 5 comentarios ·
Todos los issues de data-apis/array-api-compat
Issues similares
-
documentation help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
simonw/sqlite-utils#872 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100