You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now we have some code in the loader which parses ONEAPI_DEVICE_SELECTOR to exclude loading libraries based on the backend components of the filter strings. The intention of this is that you can pass ONEAPI_DEVICE_SELECTOR=opencl:* and the loader will only load the opencl adapter library, which is beneficial because some adapter libraries have side-effects when loaded due to how drivers are implemented.
This code also supports negative filter strings, where you prepend ! to make your filter an anti-pattern. This can cause some strange behaviour because the device type component of the filters is completely ignored. For example, the filter string !opencl:fpga should mean "give me any device that doesn't have the opencl backend and the fpga device type", but our implementation interprets it as !opencl:*, or "give me any device that doesn't have the opencl backend" - which results in the opencl adapter not being loaded and no opencl devices being reported. A worse example is device type only filters: something like !*:cpu should mean "exclude cpu devices", but since the device type is ignored it becomes !*:* - exclude all devices, which results in none of the adapter libraries being loaded.
The text was updated successfully, but these errors were encountered:
Right now we have some code in the loader which parses
ONEAPI_DEVICE_SELECTOR
to exclude loading libraries based on the backend components of the filter strings. The intention of this is that you can passONEAPI_DEVICE_SELECTOR=opencl:*
and the loader will only load the opencl adapter library, which is beneficial because some adapter libraries have side-effects when loaded due to how drivers are implemented.This code also supports negative filter strings, where you prepend
!
to make your filter an anti-pattern. This can cause some strange behaviour because the device type component of the filters is completely ignored. For example, the filter string!opencl:fpga
should mean "give me any device that doesn't have the opencl backend and the fpga device type", but our implementation interprets it as!opencl:*
, or "give me any device that doesn't have the opencl backend" - which results in the opencl adapter not being loaded and no opencl devices being reported. A worse example is device type only filters: something like!*:cpu
should mean "exclude cpu devices", but since the device type is ignored it becomes!*:*
- exclude all devices, which results in none of the adapter libraries being loaded.The text was updated successfully, but these errors were encountered: