The Xilinx Runtime (XRT) library supports
the
OpenCL™
printf()
built-in function within kernels in all build
configurations: software emulation, hardware emulation, and during hardware
execution.
Tip: The
printf()
function is only supported in all build
configurations for OpenCL kernels. For C/C++
kernels, printf()
is only supported in software
emulation.The following is an example of using printf()
in the kernel, and the output when the kernel is executed with
global
size of 8:
__kernel __attribute__ ((reqd_work_group_size(1, 1, 1)))
void hello_world(__global int *a)
{
int idx = get_global_id(0);
printf("Hello world from work item %d\n", idx);
a[idx] = idx;
}
The output is as follows:
Hello world from work item 0
Hello world from work item 1
Hello world from work item 2
Hello world from work item 3
Hello world from work item 4
Hello world from work item 5
Hello world from work item 6
Hello world from work item 7
Important:
printf()
messages are buffered in the global memory and unloaded when
kernel execution is completed. If printf()
is used in
multiple kernels, the order of the messages from each kernel display on the host
terminal is not certain. Note, especially when running in hardware emulation and
hardware, the hardware buffer size might limit printf
output capturing.