JuliaSIMD / JuliaSIMD/LoopVectorization.jl
Support for RGB colors
- Langage dominant
- Julia
- Étoiles
- 789
- Forks
- 73
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Aside from #66, I think one of the last obstacles to using this in ImageFiltering is the handling of color array elements, for example `RGB(0.8f0, 0.3f0, 0.5f0)` (which is just a struct of 3 `Float32`s). Through TiledIteration it's possible to convert the data into a suitable format, for example `RGB{N0f8}` can be converted to `RGB{Float32}` because [`TileBuffer` takes an element type as an argument](https://github.com/JuliaArrays/TiledIteration.jl#allocating-and-managing-temporary-storage). (I note that's really old syntax, with modern Julia I should change it to `TileBuffer{T}(undef, tileaxs)`.) Consequently it will be converted before it is used; because convolution/correlation uses each element multiple times, this conversion is well worth doing if it gets us better performance and allows us to use this package. (Another benefit of copying is that we can guarantee stridedness.)
So the question is, what kind of format should I convert it to? Should we define explict support for RGB, or would it be better to convert to an `SVector{3}` or similar? I kind of favor the latter since it would presumably be more generic.
I suspect this will alter the loop unrolling/SIMD packing, once I understand what representation you'd like here.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Start with the issue discussion and the linked TiledIteration TileBuffer documentation, then compare the proposed RGB and SVector representations for convolution and correlation. A decision on the supported representation and its effect on loop unrolling and SIMD packing is needed before implementation can be scoped.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- julia
- Domaine
- performance
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100