arrayfire / arrayfire-python

Python bindings for ArrayFire: A general purpose GPU library.
https://arrayfire.com
BSD 3-Clause "New" or "Revised" License
416 stars 65 forks source link

OpenCL interoperability does not work on CUDA machine #267

Open villekf opened 7 months ago

villekf commented 7 months ago

On (Linux) CUDA machine, the backend returned by af.get_backend() remains at unified even if the backend is correctly set as OpenCL. af.get_active_backend() correctly returns OpenCL as the backend, but since the interoperability functions use different way to check the backend, an error is output (see https://github.com/arrayfire/arrayfire-python/blob/master/arrayfire/opencl.py#L107). Commenting all those instances fixes the issue. The (commented) tests reproduce this error, i.e. https://github.com/arrayfire/arrayfire-python/blob/master/tests/simple/interop.py#L82

Note that this wasn't an issue on a (Windows) AMD machine, where OpenCL is the default backend.

TheFloatingBrain commented 1 month ago

I get it too

>>> af.get_active_backend()
'opencl'
>>> af.get_backend()
'unified'
>>> af.set_backend("opencl")
>>> af.get_backend()
'unified'