[wasm] Managed Wide-Vector (256, 512) SIMD Fallbacks are Very Expensive in Size
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- csharp, wasm
- Área
- compilers, performance
Línea de trabajo
Start by examining the Wasm fallback for Vector512.FusedMultiplyAdd<float> and compare its generated code size with the x64 example described in the issue. The issue names no files or tests, so first trace the fallback and its nested vector operations in the runtime codebase. Done means identifying and addressing one of the listed causes of oversized Wasm output, with code size and performance checked.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
This is a broader issue that came up while investigating Wasm size outliers in System.Private.CoreLib as compared to x64 R2R codegen. Nearly all the statistical size outliers were in vector fallback code. For example, the fallback code for Vector512.FusedMultiplyAdd<float> is massive on Wasm; it's around 1.8 KB in size, as compared to only 47 bytes on x64. The comparison isn't fair necessarily because x64 has vector intrinsics that Wasm simply does not have, but this example exposes several things we might want to look into:
- We don't seem to decompose larger vector widths into
v128locals; i.e., accessing elements of a Vector512 struct will end up as many separate loads and stores ofv128. This could be complicated to improve but it is definitely a factor in the large code size and likely has significant negative perf impacts as well. - We null check addresses for loads of individual vector elements in stack allocated vectors which should be in bounds for the current stack frame;
- We aggressively inline nested managed fallbacks which leads to a very large code size expansion. In this example we have the inline tree of
Vector512.FusedMultiplyAdd -> 2*Vector256.FusedMultiplyAdd -> 2*Vector128.FusedMultiplyAdd -> 2*Vector64.FusedMultiplyAdd -> 2*Vector64.GetElementUnsafe
- Lenguaje dominante
- C#
- Estrellas
- 18.4k
- Forks
- 5.8k
- Merge medio
- 2 d 15 h
- PR fusionados (30 d)
- 596
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- 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 dotnet/runtime
-
FileSystemGlobbing: Matcher throws ArgumentOutOfRangeException when the rootDir is the same value as the filePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoarea-Extensions-FileSystem untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/runtime#136989 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Configuration binder source generator emits unqualified List<T> when binding arrays without implicit usingsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoarea-Extensions-Configuration bug source-generator untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/runtime#136972 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[wasi] .NET 10: WasmEnableSIMD with AOT fails because WasiApp.targets has -msimd128 commented outAbiertoarea-Build-mono untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
PropertyChangedEventArgs should have a nice DebuggerDisplayPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoarea-System.ComponentModel untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
dotnet/runtime#136608 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
MemoryMappedFile (Windows): failed MEM_COMMIT is ignored, accessor over reserved memory crashes the processPosiblemente ocupada @RutulPatel8 la tomó hace 4 días. Abiertoarea-System.IO bug untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/runtime#136599 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de dotnet/runtime
Issues similares
-
enhancement needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/microsoft-ui-reactor#1460 ·
Los mantenedores suelen responder en 1 día
-
t/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
dotnet/maui#39950 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
The server's default HttpClient fails on plain http and on HTTPS servers without HTTP/2Posiblemente ocupada @yasmoradi la tomó hoy. Abiertoarea / templates
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
bitfoundation/bitplatform#14659 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
CommunityToolkit/Datasync#600 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
NimblePros/deviq-hugo#121 ·
Los mantenedores suelen responder en 1 día