JuliaSIMD / JuliaSIMD/LoopVectorization.jl

Support for RGB colors

Đang mở
#67 9 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Julia
Star
789
Fork
73
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu với phần thảo luận của issue và tài liệu TiledIteration TileBuffer được liên kết, sau đó so sánh các biểu diễn RGB và SVector được đề xuất cho phép tích chập và tương quan. Cần quyết định biểu diễn nào sẽ được hỗ trợ và ảnh hưởng của nó đến việc unroll vòng lặp và đóng gói SIMD trước khi có thể xác định phạm vi triển khai.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
julia
Lĩnh vực
performance
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.