How To Measure Register Use In OpenCL



我注意到英伟达CUDA的Visual Profiler打印了一行显示寄存器使用:

Register Ratio = 0.75  ( 24576 / 32768 ) [48 registers per thread] 

有可能在OpenCL中生成这样的行吗?

我还没有看到任何OpenCL方法来查询寄存器的数量或这些寄存器的使用情况。

正如DarkZeros所提到的,它是实现定义的。这是有充分理由的。

OpenCL不对体系结构进行假设,因此没有定义单个寄存器比率的通用方法,更不用说基于它进行任何预测了。例如,在AMD HW上,有两种寄存器。标量和矢量寄存器。从某种意义上说,它们是不相交的,它们独立地溢出等等。

在CPU中,情况再次完全不同,编译器甚至可以将不同的工作项组合到一个线程中。

要分析AMD硬件,您需要使用http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/以及随附的内核分析器,对于英特尔,您需要使用http://software.intel.com/en-us/vcsource/tools/opencl-sdk

最新更新