cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

fjhyb012
Adept I

Is there a lib including kernels like exclusive scan?

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!

0 Likes
8 Replies
melonakos
Adept I

ArrayFire OpenCL is an option.

0 Likes
dmeiser
Elite

vexcl is similar to thrust for opencl:

http://ddemidov.github.com/vexcl/index.html

0 Likes
kylelutz
Adept I

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).

0 Likes

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

0 Likes

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

0 Likes

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

0 Likes

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

0 Likes

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