> hi,
>
> I am a developer of Intel's open source CL stack, which name is Beignet.
> We used to include all the CL built-ins in one huge header file and
> compile it as a PCH.
> We find some disadvantages of that manner and switched to the same
> manner as libclc recently. We now have a internal lib, which play the
> same role as the libclc, and we are attempting to apply the libclc to
> replace it in the near future.
> But I find some problems when I try to integrate the libclc:
> 1. There is no support for Image related functions in it now. Is that on
> your plan?
libclc only supports GPU targets and these targets require target-specific
implementations of the image functions, which is why there are no
generic image functions. If you were to use libclc for Intel GPUs, you
would need to implement your own target specific image functions.
OK, get it. The image module is really specific for each vendor and some
of them do not want to expose the HW details to the public.
> 2. I find it is not compatible with OpenCL1.2, which Beignet must
> support, are you going to implement it?
In what way is it not compatible? The goal is to implement everything,
but as far as I know no one has spent much time on OpenCL 1.2 features.
The beignet has declared the full support for 1.2, but if we use clc, we
have to fallback to 1.1, this seems weird.
So far as I know, there are really some changes for CL APIs between 1.1
and 1.2, but for the builtin functions and defines, the changes are not
so big. The major changes are: adding 1d image and sampler-less image
read functions, adding printf function, and adding extern and static
keyword support. And the image module is even not included in clc, so I
think this is not a big task to support 1.2, and I can do that job if
you do not mind.
> 3. Because beignet as a backend does not completely follow the PTX or
> NVPTX framework, it has a lot of internal implementations for the
> builtin functions. We may need to add a lot of files for it, is that
> acceptable?
Yes, if you are adding a new target with a lot of target specific
implementations, then it is not a problem if there are a lot of files.
OK, I will consider how to integrate our implementation and maximize the
use of the clc's code.