Skip to content

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 if float64 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.

Merge request reports