I’m not sure if it’s possible. I want to study OpenCL in-depth, so I was wondering if there is a tool to disassemble an compiled OpenCL kernel.
For normal x86 executable, I can use objdump to get a disassembly view. Is there a similar tool for OpenCL kernel, yet?
If you’re using NVIDIA’s OpenCL implementation for their GPUs, you can do the followings to disassemble an OpenCL kernel:
Use
clGetEventProfilingInfo()to dump the ptx code to a file, sayptxfile.ptx. Please refer to the OpenCL specification to have more details on this function.Use nvcc to compile ptx to cubin file, for example:
nvcc -cubin -arch=sm_20 ptxfile.ptxwill compileptxfile.ptxonto a compute capability 2.0 device.Use
cuobjdumpto disassemble the cubin file into GPU instructions. For example:cuobjdump -sass ptxfile.cubinHope this helps.