如何度量OpenCL中寄存器的使用 我注意到,英伟达视觉分析器为CUDA打印了一个显示登记使用的行: Register Ratio = 0.75 ( 24576 / 32768 ) [48 registers per thread]

如何度量OpenCL中寄存器的使用 我注意到,英伟达视觉分析器为CUDA打印了一个显示登记使用的行: Register Ratio = 0.75 ( 24576 / 32768 ) [48 registers per thread],opencl,Opencl,有可能在OpenCL中生成这样的行吗 我还没有看到任何OpenCL方法来查询寄存器的数量或这些寄存器的使用。正如DarkZeros所提到的,它是实现定义的。有一个很好的理由 OpenCL没有对体系结构进行假设,因此没有定义单个寄存器比率的通用方法,更不用说基于它进行任何预测了。以AMD硬件为例,您有两种寄存器。标量寄存器和向量寄存器。从某种意义上说,它们是不相交的,它们是独立的 在CPU中,情况也完全不同,编译器甚至可以将不同的工作项组合到一个线程中 要分析AMD硬件,您需要使用和附带的内核分析

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


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

正如DarkZeros所提到的,它是实现定义的。有一个很好的理由

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

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


要分析AMD硬件,您需要使用和附带的内核分析器;对于Intel,您需要使用依赖于实现的

,因为OpenCL旨在尽可能多地从设备中提取用户。对于英伟达特定的情况,您可以在编译时使用<代码> -CL NV VBBOSE < /Cl>,以在每个线程的生成日志中提供登记使用。(然后您必须进行数学运算以查看寄存器的总使用量)