In Nvidia cuda, there is a stl like lib, thrust, which provides lots of useful functions, e.g. minmax and exclusive scan.
So, is there a similar lib for opencl?
Thanks!
ArrayFire OpenCL is an option.
vexcl is similar to thrust for opencl:
I've been working on a STL-like library for OpenCL called Boost.Compute. It has implementations of many standard C++ algorithms (along with a few extensions) including exclusive_scan() and minmax_element().
The source code is here: https://github.com/kylelutz/compute and the documentation is here: http://kylelutz.github.io/compute/. It's currently under active development but it still may be useful to you (or others).
Hi,
Have you checked AMD's Bolt library? http://developer.amd.com/tools/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/b...
Can you point out some features that boost.compute has, that are missing in BOLT. Anyways BOLT should also become open-source in near future
Yes, I have taken a look at Bolt. The largest difference is that Boost.Compute, like OpenCL, is cross-platform and does not depend on vendor-specific extensions (namely, AMD's C++ kernel language). This allows it to run on all OpenCL-enabled hardware platforms including CPUs, NVIDIA GPUs, and various other accelerator cards (e.g. Intel's Xeon Phi) in addition to AMD's GPUs.
Boost.Compute also provides a number of enhancements on top of the STL-like API including fancy iterators (e.g. transform_iterator, permutation_iterator), support for complex numbers, support for aggregate types (e.g. std::pair, std::tuple), and a lambda expression framework.
Having said that, I do look forward to Bolt's public release. Is there an ETA on that?
Cheers,
Kyle
kylelutz wrote:
Yes, I have taken a look at Bolt. The largest difference is that Boost.Compute, like OpenCL, is cross-platform and does not depend on vendor-specific extensions (namely, AMD's C++ kernel language). This allows it to run on all OpenCL-enabled hardware platforms including CPUs, NVIDIA GPUs, and various other accelerator cards (e.g. Intel's Xeon Phi) in addition to AMD's GPUs.
Boost.Compute also provides a number of enhancements on top of the STL-like API including fancy iterators (e.g. transform_iterator, permutation_iterator), support for complex numbers, support for aggregate types (e.g. std::pair, std::tuple), and a lambda expression framework.
Thanks for your feedback here.
Having said that, I do look forward to Bolt's public release. Is there an ETA on that?
Cheers,
Kyle
Although I cannot give any ETA for release, i am also hoping it will happen soon
Hey Kyle,
I checked out the git repo for your boost.compute library. Looks really cool. I was able to build and run examples and (most of the) tests after tweaking some the FindOpenCL cmake module. Do you accept contributions do this project?
Cheers,
Dominic
Hi Dominic,
Absolutely! I'm always looking for new contributors. You can either open a pull-request on GitHub or just e-mail me a patch and I'll get it merged. Also, if you open a bug on the issue tracker and include the output of the failing tests along with the information on the platform/device you're using I'll look into getting them fixed.
Thanks,
Kyle