Support for OpenCL devices where `double` is not available
For a while now I've known that my laptop, which just has some random laptop Intel GPU, nothing special, can't run the Bandicoot tests. I decided to finally step up and fix it...
The issue is that the OpenCL device does not support float64 (double
), which means that the backend had to be reworked to support devices where double
kernels weren't available and won't compile. So, the changes:
- The OpenCL backend now only conditionally compiles the
double
kernels iffloat64
support is detected. - The
coot_rt_t::is_supported_type<eT>()
function is available to check if a type is supported. - All of the tests have been refactored to use
coot_rt_t::is_supported_type<eT>()
... that took forever... - Minor
Makefile
changes for the tests to make it clear how to compile only with OpenCL support.
There are also a couple compilation issues I encountered when I tried to compile with clang.