If you want to target GPU in some form to increase performance (open source standards that currently fill this niche are OpenCL for compute, OpenGL/Vulkan for graphics) but you want to use the same code for CPU and GPU there is a solution!
There's a new standard called SYCL.
Currently it is based on C++11 and there are implementations that target OpenGL and CUDA.
Indeed. I think it's fair to say that OpenCL is excellent for targeting a very wide range of devices, with the exception of most high performance GPUs.
If you want to target GPU in some form to increase performance (open source standards that currently fill this niche are OpenCL for compute, OpenGL/Vulkan for graphics) but you want to use the same code for CPU and GPU there is a solution!
There's a new standard called SYCL.
Currently it is based on C++11 and there are implementations that target OpenGL and CUDA.