boostorg / compute

A C++ GPU Computing Library for OpenCL
http://boostorg.github.io/compute/
Boost Software License 1.0
1.55k stars 333 forks source link

how to reduce "array of custom user structures" with custom function ? #858

Open itmanager85 opened 3 years ago

itmanager85 commented 3 years ago

for example needs something that,

` __declspec(align(16)) struct Box_aligned { float3 v0; float3 v1; }

boost::compute::vector<Box_aligned> boxes(10, context); // and do something with values of array "boxes"

Box_aligned bounds;

boost::compute::reduce(boxes.begin(), boxes.end(), &bounds, BoxUnion(), queue); `

where "some BinaryFunction" is somthing lika that,

struct BoxUnion { Box_aligned operator()(const Box_aligned b1, const Box_aligned b2) const { Box_aligned bounds; bounds.v0 = fmin(b1.v0, b2.v0); bounds.v1 = fmax(b1.v1, b2.v1); return bounds; } };

how to reduce such array of "Box_aligned" values ?