Defining 512-bit Interface in OpenCL C Kernel
OpenCL C specification defines vector data types that can have up to 16 elements of the same
basic C data type. Kernel arguments defined as int16
, uint16
,
and float16
are automatically packed by the SDAccel compiler as 512-bit
interfaces during synthesis.
Below is the code snippet from the Wide Memory Read/Write OpenCL C Example in kernel_to_gmem category on Xilinx On-boarding Example GitHub. It defines all global pointers in the
kernel argument list as uint16
. A 512-bit AXI4 memory mapped interface will be
generated for these global pointers after compilation.
kernel __attribute__ ((reqd_work_group_size(1, 1, 1)))
void vadd(
const __global uint16 *in1, // Read-Only Vector 1
const __global uint16 *in2, // Read-Only Vector 2
__global uint16 *out, // Output Result
int size // Size in integer
)
{
}