2013-11-27 33 views
1

我注意到了CUDA Nvidia的視覺探查打印一行,顯示寄存器使用:如何衡量註冊使用OpenCL中

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

是否有可能產生像OpenCL中的一條線嗎?

我還沒有看到任何OpenCL的方式來查詢寄存器的數量,或使用這些寄存器。

+1

這是依賴於實現,因爲OpenCL的設計爲抽象的用戶儘可能多地從設備。對於nVIDIA的特定情況,您可以在編譯時使用'-cl-nv-verbose'來爲每個線程的生成日誌提供寄存器使用情況。 (然後你必須做數學才能看到總的註冊使用情況) – DarkZeros

回答

2

正如DarkZeros提到的那樣,它是實現定義的。並有一個很好的理由。

OpenCL沒有對架構做出假設,因此沒有定義單個寄存器比率的一般方法,更不用說根據它進行任何預測。作爲AMD硬件的例子,你有兩種寄存器。標量和矢量寄存器。它們在某種意義上是不相交的,即它們獨立溢出等。

在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