How does OpenCL work without the ICD bootloader extension?

AFAIK works with the ICD bootloader extension:

  • ICD (client driver installable) = proprietary OpenCL implementation = OpenCL runtime; You can find it in files like amdocl.so/dll or IntelOpenCL.so/dll
  • ICD loader (in OpenCL.dll / libOpenCL.so): to manage multiple ICDs on the same system
    • It is associated with the OpenCL application and acts as a placeholder for ICD.
    • The application calls the functions exported by the ICD loader library. However, the ICD loader simply decides which ICD to redirect depending on the OpenCL platform chosen.
    • The ICD loader mechanism is necessary because the vendor’s OpenCL implementation usually supports this vendor’s hardware, but you can use several devices from different vendors in the same OpenCL application.

Since the ICD loader is just an optional extension to OpenCL, I wonder how OpenCL works without the ICD loader. Of course, in this case you cannot simultaneously use the implementation of several vendors in one application, but what is used to link the application? If the developer associated it with a specific implementation, then the main goal of OpenCL, portability, could no longer be achieved.

Or do suppliers have to provide dynamic libraries that are compatible with each other? This means that if the developer associated with the dynamic library of provider A will also work at run time if the dynamic library of provider B is installed on the target system?

Is this a documented document?

+4
source share
1 answer

Windows OpenCL OpenCL.h( cl.h) OpenCL.lib, OpenCL.dll, Windows System32. , ICD . ICD, ( OpenCL) . ICD , , OpenCL API. ICD, 1.

0

All Articles