Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Valued Contributor III
1,128 Views

Profiling OpenCL kernel code

Setting up profiling for standard applications is usually fairly trivial. For example, to generate C or C++ language code coverage analysis, it's a simple matter of adding "--coverage" to the gcc command line (for both compile and link flags). 

 

However, there is ZERO documentation about how to generate coverage information for code that gets compiled to OpenCL kernels.  

 

There seems to be no way to get "external" profiling data, and source code must be modified to include calls to clGetEventProfilingInfo wherever profiling data is desired. 

 

Apparently this is a failure in the OpenCL Specification, so Altera is not to blame, but, ignoring the lack of profiling support is a huge omission - I'd call it a "Schoolboy error".  

 

When will profiling support make it into the Specification, and be supported by Altera SDKs ?
0 Kudos
4 Replies
Highlighted
Valued Contributor III
16 Views

Profiling is supported in aoc: 

 

aoc --profile --board <board> <kernel file> 

 

Then use "aocl report <.aocx file> profile.mon" after running the kernel on the device to see the profile info. 

 

clGetEventProfilingInfo is on the host when you are using events. 

 

Are you looking for something different?
0 Kudos
Highlighted
Valued Contributor III
16 Views

There is a lot more than "ZERO" documentation: "Intel FPGA SDK for OpenCL Programming Guide, 1.11 Profiling Your OpenCL Kernel" and "Intel FPGA SDK for OpenCL Best Practices Guide, 1.5 Profile Your Kernel to Identify Performance Bottlenecks". The "Schoolboy error" is not bothering to read the documentation. 

 

Profiling is not supposed to be in the specification, it is supposed to be provided by the compiler, which is also provided by Altera's compiler in this case.
0 Kudos
Highlighted
Valued Contributor III
16 Views

SOrry, I shouldn't have used the word "profiling" when I really mean coverage analysis. 

 

How is coverage analysis performed, them ?
0 Kudos
Highlighted
Valued Contributor III
16 Views

What information are you specifically looking for? If you are using the single work-item programming model, in which the kernel is basically a piece of sequential C code, you can always use the kernel code as a standard C function, and use gcc's code coverage analysis. For NDRange kernels, there is probably nothing official, but you can also convert those to standard sequential C code and perform the analysis.

0 Kudos