[cfe-dev] [RFC][OpenCL] Pass alignment of arguments in local addr space for device-side enqueued kernel to __enqueue_kernel functions
Liu, Yaxun (Sam) via cfe-dev
cfe-dev at lists.llvm.org
Fri Dec 1 11:45:46 PST 2017
OpenCL spec requires that a pointer should be aligned to at least the pointee type. Therefore, if a device-side enqueued kernel has a local int* argument, it should be aligned to 4 bytes.
Since these buffers in local addr space are allocated by __enqueue_kernel, it needs to know the alignment of these buffers, not just their sizes.
Although such information is not passed to the original OpenCL builtin function enqueue_kernel, it can be obtained by checking the prototype of the block invoke function at compile time.
I would like to create a patch to pass this information to __enqueue_kernel. Otherwise, __enqueue_kernel has to either allocate unaligned local buffer, which degrades performance, or allocates local buffer with extra alignment therefore wasted memory space.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 13488 bytes
Desc: not available
More information about the cfe-dev