CUDA backend: no fallback kernels for `nonzero` and `masked_select`
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 64/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- backend, machine-learning
Línea de trabajo
Empieza leyendo los shims de fallback de CUDA existentes y localiza dónde se registran aoti_torch_cuda_nonzero y aoti_torch_cuda_masked_select o dónde se informa de que faltan; el issue no indica esos archivos. Reproduce el problema con el ejemplo de exportación proporcionado y luego revisa las pruebas de fallback existentes del backend CUDA o añade cobertura para ambas llamadas directas. Se considera terminado cuando ambas llamadas se reducen a través del backend CUDA sin el error de kernel ausente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What happens
A program that calls torch.nonzero or torch.masked_select directly cannot be lowered with the CUDA backend. Export stops with:
RuntimeError: missing fallback kernels (1 total): - aoti_torch_cuda_nonzero Please add them to the AOTI backend.
and the same with aoti_torch_cuda_masked_select. It fails loudly, never with wrong results. Plain boolean-mask indexing (x[x > 0]) exports fine, so only the direct calls hit it. Tools that trace models into explicit ops emit these direct calls for data-dependent shapes.
Repro
import torch
from executorch.backends.cuda.cuda_backend import CudaBackend
from executorch.backends.cuda.cuda_partitioner import CudaPartitioner
from executorch.exir import EdgeCompileConfig, to_edge_transform_and_lower
class M(torch.nn.Module):
def forward(self, x):
return torch.nonzero(x > 0).sum() # or torch.masked_select(x, x > 0).sum()
x = torch.tensor([[1.0, -2.0, 3.0], [-4.0, 5.0, -6.0]], device="cuda")
ep = torch.export.export(M().eval().cuda(), (x,))
to_edge_transform_and_lower(
ep,
partitioner=[CudaPartitioner([CudaBackend.generate_method_name_compile_spec("forward")])],
compile_config=EdgeCompileConfig(_check_ir_validity=False),
).to_executorch()
Tested with executorch 1.6.0+cu132 and torch 2.15.0+cu132 on an H100.
Ask
Add aoti_torch_cuda_nonzero and aoti_torch_cuda_masked_select shims to the CUDA backend, like the existing fallback shims.
Related: #24684.
- Lenguaje dominante
- Python
- Estrellas
- 5.2k
- Forks
- 1.2k
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 700
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la 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 pytorch/executorch
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
pytorch/executorch#24434 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
pytorch/executorch#24410 ·
Los mantenedores suelen responder en 1 día
-
enhancement triaged
Dificultad 2/5 Medio día Aptitud para principiantes 68/100
pytorch/executorch#21640 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
pytorch/executorch#24766 ·
Los mantenedores suelen responder en 1 día
-
No safe way to set the CPU thread count from Python: _unsafe_reset_threadpool after load_method crashes or hangs XNNPACKPosiblemente ocupada @shoumikhin la tomó hoy. Abiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
pytorch/executorch#24765 ·
Los mantenedores suelen responder en 1 día
Todos los issues de pytorch/executorch
Issues similares
-
ChatBedrockConverse changes the keys of JSON tool results to camelCase (`order_id` becomes `orderId`)Posiblemente ocupada @geyazheng la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
langchain-ai/langchain-aws#1469 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
EESSI/docs#949 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
b4b usability
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
fix(schedule): align list_tasks since cursor filter boundary from strict > to >=Posiblemente ocupada @bfs2021 la tomó hoy. Abiertoagent-ready bug p2 schedule
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
allenporter/supernote#540 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
frazane/scoringrules#164 ·
Los mantenedores suelen responder en 1 día