clock()CUDA中的时钟测量是什么clock64()?
根据CUDA 文档,时钟是“每多处理器计数器”。根据我的理解,这是指主 GPU 时钟(而不是着色器时钟)。
但是,当我测量时钟计数并使用主 GPU 时钟频率将其转换为时间值时,我得到的结果是实际值的两倍(我使用 cuda 事件使用主机代码的内核执行时间来测量实际值)。这表明clock()返回着色器时钟频率而不是主 GPU 时钟。
我该如何解决这个困惑?
编辑:我通过将从 cudaGetDeviceProperties 获得的时钟速率除以 2 来计算主 GPU 时钟频率。据我了解cudaGetDeviceProperties给出的值是着色器时钟频率。
CUDA 文档确实表示clock()并clock64()返回“每多处理器计数器”。但在费米架构中clock(),clock64()实际返回的是着色器时钟计数器。
cudaGetDeviceProperties返回clockRate的是着色器时钟频率。
因此,要计算时间,我们必须将时钟计数除以clock()从clock64()cudaGetDeviceProperties 获得的着色器时钟频率。
| 归档时间: |
|
| 查看次数: |
9706 次 |
| 最近记录: |