Yes they both support one device, but not they won't necessarily have the same device.

One thing that should be done is to push the device capabilities test to the op.  Make the c_code conditional on a similar test and the perform will be used in other cases.

Also, I disagree with your OpenCL evaluation.  Then new backend fully supports OpenCL, but a lot of the ops don't because of the way they are implemented.