如何确定我的卡是执行16或32位还是64位操作,因为每个卡的值不同?
在页面上 你联系了 ,列出了表顶部的计算功能(对于每列)。您的GPU具有计算能力。你可以使用 deviceQuery cuda示例应用程序找出它是什么,或查找它 这里 。
deviceQuery
例如,假设我有一台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 ...
这意味着GTX 1060能够以3种不同的精度(16位,32位,64位)进行所有3种类型的操作(浮点乘法或乘加或加法),每种操作的速率或吞吐量不同精确。关于表格,这些数字是 每个时钟 和 每SM 。
为了确定整个GPU的总峰值理论吞吐量,我们必须将上述数字乘以GPU的时钟速率和GPU中SM(流式多处理器)的数量。 CUDA deviceQuery 应用程序也可以告诉您这些信息,或者您可以在线查找。
此外,我还想计算我的卡的这些指令的延迟值。有办法吗?就我的研究而言,它们没有像吞吐量那样记录在案。
正如我已经提到的那样 上一个问题 ,这些延迟值未发布或指定,实际上它们可能(并且确实)从GPU更改为GPU,从一种指令类型更改为另一种指令类型(例如,浮点乘法和浮点数添加可能具有不同的延迟),甚至可能会更改从CUDA版本到CUDA版本,适用于通过一系列多个SASS指令模拟的某些操作类型。
因此,为了发现这种延迟数据,有必要进行某种形式的微基准测试。一篇早期和经常被引用的论文展示了如何为CUDA GPU做到这一点 这里 。对于GPU的延迟微基准数据,没有一个单一的规范参考,基准程序也没有单一的规范参考。这是一项相当困难的任务。
是否有一些基准套件用于此目的?
对于SO来说,这类问题明显偏离主题。请阅读 这里 它声明:
“要求我们推荐或找到书籍,工具,软件库,教程或其他非现场资源的问题都是Stack Overflow的主题......”