$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] [compute] Review
From: Yiannis Papadopoulos (ipapadop_at_[hidden])
Date: 2014-12-30 23:14:25
Hi,
This is my review of Boost.Compute:
1. What is your evaluation of the design?
It seems logical to me. It is effectively a wrapper around OpenCL that 
provides implementations of higher-level algorithms, and allows 
interoperability with OpenCL and OpenGL.
The Boost.Compute name is a bit misleading, as Boost.Compute supports 
only OpenCL-enabled devices.
2. What is your evaluation of the implementation?
There is some code duplication (e.g. type traits) and various other bits 
and pieces that can be moved to existing Boost components. I think there 
should be some effort spent towards that.
It seems that performance is on par with Thrust. However, there are 
other libraries out there (e.g Bolt) and multiple devices, so there has 
to be a more extensive experimental evaluation to say decidedly that it 
is a good implementation.
3. What is your evaluation of the documentation?
Overall, it is pretty good. Given the complexity of the accelerator 
programming model, a few more elaborate examples in the tutorial would 
be welcome.
4. What is your evaluation of the potential usefulness of the library?
This is difficult to answer. A lot of work has been put in this library 
and it seems the way to go. The interfaces are clean, the code looks 
solid and the developer willing.
However, there is limited vendor support, there are not enough 
benchmarks and there are other alternatives that they have both. Given 
that Boost.Compute is targeted to users that know a thing or two about 
performance, I don't know how they can be convinced to consider using 
Boost.Compute against Bolt or Thrust.
5. Did you try to use the library? With what compiler? Did you have any
problems?
I did using an AMD 7850 on Linux with gcc 4.8. The few examples I tried, 
compiled and ran fine.
6. How much effort did you put into your evaluation? A glance? A quick
reading? In-depth study?
I went over the documentation, I glanced over the code and ran a few 
examples.
7. Are you knowledgeable about the problem domain?
I'm in the HPC field. I have extensive experience with MPI, OpenMP, 
pthreads, and less with TBB, CUDA and OpenCL.
8. Do you think the library should be accepted as a Boost library?
This will be a maybe. It is a well-written library with a few minor 
issues that can be resolved.
However, why would someone use Boost.Compute against what is out there? 
Average users can resort to Bolt or Thrust. Power users will probably 
always try to hand-tune their OpenCL or CUDA algorithm. How can we test 
it and prove its performance?
Regards,
Yiannis