JuliaSIMD / JuliaSIMD/LoopVectorization.jl
@turbo with passmissing?
- Lenguaje dominante
- Julia
- Estrellas
- 789
- Forks
- 73
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
I've been using `FastBroadcast` and `@turbo` to speed up broadcasting operations in DataFrames. However, missing values are quite common when you work with a DataFrame, and `@turbo` throws an error in that case.
Is it possible to have something similar to `passmissing` for `@turbo`? This would be consistent with Base broadcast and as FastBroadcast works, which passes missing values when you broadcast.
```julia
using LoopVectorization, FastBroadcast
df = DataFrame(a = [1,missing,3])
@.. df.a .* df.a # this works
@turbo df.a .* df.a # this throws error
```
The error is:
```julia
ERROR: MethodError: no method matching vmaterialize!(::Vector{Union{Missing, Int64}},
::Base.Broadcast.Broadcasted{Base.Broadcast.DefaultArrayStyle{1}, Nothing, typeof(*),
Tuple{Vector{Union{Missing, Int64}}, Vector{Union{Missing, Int64}}}},
::Val{:Main}, ::Val{(true, 0, 0, 0, true, 0, 32, 15, 64, 0x0000000000000001, 1, true)}, ::Val{((true,), (true,))})
```
The problem persists if you create a view dropping missings, since the vector is still Union{Missing,T} and is not allowed.
Many thanks!!! Great package!!!
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comience con la ruta de broadcast de @turbo y el MethodError de vmaterialize! informado, utilizando como reproducción el ejemplo de Julia con un Vector{Union{Missing, Int64}}. Determine cómo debería funcionar un comportamiento similar a passmissing para @turbo y, a continuación, verifique que el ejemplo propaga los valores missing en lugar de lanzar una excepción, preservando al mismo tiempo el comportamiento existente de broadcast.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- julia
- Área
- performance
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100