Hi Kyle
> [1] http://stackoverflow.com/questions/20154179/differences-between-vexcl-thrust-and-boost-compute
> Good point. That FAQ entry was written before VexCL added its CUDA
> back-end (which occurred relatively recently). Boost.Compute and VexCL
> have different aims and scopes. Boost.Compute is more similar to the
> C++ STL while VexCL is more similar to a linear algebra library like
> Eigen. Also see this StackOverflow question [1] entitled "Differences
> between VexCL, Thrust, and Boost.Compute".
>
Thank you for the information.
Update: @gnzlbg commented that there is no support for C++ functors and lambdas in OpenCL-based libraries. And indeed, OpenCL is based on C99 and is compiled from sources stored in strings at runtime, so there is no easy way to fully interact with C++ classes. But to be fare, OpenCL-based libraries do support user-based functions and even lambdas to some extent.
Having said that, CUDA-based libraries (and may be C++ AMP) have an obvious advantage of actual compile-time compiler (can you even say that?), so the integration with user code can be much tighter.