This is to store any comments/progress/feedback related to the idea of a "built-in kernel registry" which would be an index of semantically well-defined built-in kernels. HW vendors can freely choose a subset of built-in kernels (BiKs) to implement and accelerate as fixed function "black box" functions. The clients can then pick up vendor-advertised BiKs that match their application's acceleration needs. The idea has been presented in OpenCL work-group meetings and received at least some lukewarm interest/curiosity.
The extension specification could be named cl_khr_defined_biks or similar and would simply add a sentence to the clGetDeviceInfo()'s CL_DEVICE_BUILT_IN_KERNELS which declares along the lines of
"The built-in kernels returned by the device of which names start with 'khr.' adhere to the defined semantics and behavior stored in the Khronos Built-in Kernel Registry located in http://.../KhronosGroup/BiK-Registry."
For the concept to make sense as a Khronos-entity and a cross-vendor portability feature, the built-in kernel abstraction should be used more extensively (hundreds of entries in the registry, not just a couple) and their semantics should be a bit more generic than very specific exact matches to the underlying single-vendor hardware. This is to create better chances of matching with the application level task graphs instead of becoming a collection of vendor-specific BiKs.
The "living" slide deck that tries to explain the concept and collects the open questions can be seen here.
All kind of feedback / comments appreciated!
This is to store any comments/progress/feedback related to the idea of a "built-in kernel registry" which would be an index of semantically well-defined built-in kernels. HW vendors can freely choose a subset of built-in kernels (BiKs) to implement and accelerate as fixed function "black box" functions. The clients can then pick up vendor-advertised BiKs that match their application's acceleration needs. The idea has been presented in OpenCL work-group meetings and received at least some lukewarm interest/curiosity.
The extension specification could be named
cl_khr_defined_biksor similar and would simply add a sentence to the clGetDeviceInfo()'sCL_DEVICE_BUILT_IN_KERNELSwhich declares along the lines of"The built-in kernels returned by the device of which names start with 'khr.' adhere to the defined semantics and behavior stored in the Khronos Built-in Kernel Registry located in http://.../KhronosGroup/BiK-Registry."
For the concept to make sense as a Khronos-entity and a cross-vendor portability feature, the built-in kernel abstraction should be used more extensively (hundreds of entries in the registry, not just a couple) and their semantics should be a bit more generic than very specific exact matches to the underlying single-vendor hardware. This is to create better chances of matching with the application level task graphs instead of becoming a collection of vendor-specific BiKs.
The "living" slide deck that tries to explain the concept and collects the open questions can be seen here.
All kind of feedback / comments appreciated!