由于每个值都不相同,如何确定我的卡是否进行16位,32位或64位操作?
在链接的页面上,表格顶部(每列)列出了计算功能。您的GPU具有计算能力。您可以使用deviceQuery
cuda示例应用程序确定其含义,或在此处查找。
例如,假设我有一个GTX 1060 GPU。如果deviceQuery
在其上运行,将报告计算能力的主版本6和次版本1,因此它是计算能力6.1 GPU。您也可以在这里看到。
现在,回到链接的表,这意味着标记为6.1的列是您感兴趣的列之一。看起来像这样:
Compute Capability
6.1
16-bit floating-point add, multiply, multiply-add 2 ops/SM/clock
32-bit floating-point add, multiply, multiply-add 128 ops/SM/clock
64-bit floating-point add, multiply, multiply-add 4 ops/SM/clock
...
Run Code Online (Sandbox Code Playgroud)
这意味着GTX 1060能够以3种不同的精度(16位,32位,64位)以不同的速率或吞吐量进行所有3种类型的操作(浮点乘法,乘加或加)。精确。对于表,这些数字是每个时钟和每个SM。
为了确定整个GPU的合计峰值理论吞吐量,我们必须将上述数字乘以GPU的时钟速率,再乘以GPU中的SM(流式多处理器)数量。CUDA deviceQuery
应用程序还可以告诉您此信息,或者您可以在线查找它。
此外,我还想为我的卡计算这些指令的延迟值。有什么办法吗?就我的研究而言,它们没有像吞吐量那样得到记录。
正如我在上一个问题中已经提到的那样,这些延迟值未发布或指定,实际上它们可能(并且确实)在GPU之间变化,从一种指令类型更改为另一种指令类型(例如,浮点乘法和浮点加法可能具有不同的延迟),对于某些通过一系列SASS指令模拟的操作类型,甚至可能从CUDA版本更改为CUDA版本。
为了发现延迟数据,有必要进行某种形式的微基准测试。此处经常引用一篇早期的论文,论证如何针对CUDA GPU做到这一点。没有针对GPU的延迟微基准数据的单一规范参考,也没有针对基准测试程序的规范参考。这是一项相当艰巨的任务。
为此有一些基准套件吗?
对于SO,这类问题显然是题外话。请在此处注明:
“问题要求我们推荐或找到书籍,工具,软件库,教程或其他非现场资源,这些都是Stack Overflow的主题...”
归档时间: |
|
查看次数: |
803 次 |
最近记录: |