Upon initialization, the host application needs to identify a platform composed of one or more AMD devices. The following code fragment shows a common method of identifying an AMD platform.
cl_platform_id platform_id; // platform id
err = clGetPlatformIDs(16, platforms, &platform_count);
// Find Xilinx Platform
for (unsigned int iplat=0; iplat<platform_count; iplat++) {
err = clGetPlatformInfo(platforms[iplat],
CL_PLATFORM_VENDOR,
1000,
(void *)cl_platform_vendor,
NULL);
if (strcmp(cl_platform_vendor, "Xilinx") == 0) {
// Xilinx Platform found
platform_id = platforms[iplat];
}
}
The OpenCL API call
clGetPlatformIDs
is used to
discover the set of available OpenCL platforms for a
given system. Then,
clGetPlatformInfo
is used to
identify AMD device based platforms by matching
cl_platform_vendor
with the string "Xilinx"
.
Recommended: Though it is not
explicitly shown in the preceding code, or in other host code examples used throughout
this chapter, it is always a good coding practice to use error checking after each of
the OpenCL API calls. This can help debugging and
improve productivity when you are debugging the host and kernel code in the emulation
flow, or during hardware execution. The following code fragment is an error checking
code example for the
clGetPlatformIDs
command.err = clGetPlatformIDs(16, platforms, &platform_count);
if (err != CL_SUCCESS) {
printf("Error: Failed to find an OpenCL platform!\n");
printf("Test failed\n");
exit(1);
}