在 Nvidia Tesla K20c 上使用 torch.float32 而不是 torch.float64 是否有好处(就计算时间而言)?

Is there a benefit (in terms of computation time) of using torch.float32 instead of torch.float64 on Nvidia Tesla K20c?

我在某处读到“除非你有 Tesla 卡,否则 float64 在 GeForce、Quadro 和 Titan 卡上比 float32 慢 32 倍(自 2014 年以来的 Maxwell 和 Pascal 如此)。”

所以我想知道在 tesla gpu 上 float32 的计算速度是否比 float64 更快,或者性能保持不变。我对两个向量相乘所花费的时间特别感兴趣。

当然,float32 比 float 64 占用更少的内存。但是对于我的应用程序内存不是问题。

So I am wondering would the computation be faster for float32 than float64 on Tesla GPU or the performance remains same.

32 位浮点在所有 NVIDIA GPU 上具有更高的理论最大吞吐量。 K20c 是一个计算能力为 3.5 的 GPU,您可以看到 here 与 float64 相比,float32 的每个 SM 每个时钟的最大 FMAD 指令吞吐量高出三倍。其他指令可能有更大的性能差异。

I am specially [sic] interested in time taken in multiplication of two vectors.

这将是特定于实现的,可能取决于 Pytorch 的内部工作方式。这与 CUDA 没有直接关系。

Ofcourse, float32 would take less memory than float 64. But for my application memory is no issue.

但内存带宽可能是,float64 的峰值内存吞吐量是 float32 的一半。 64 位类型还可能引入双向共享内存带冲突,其中 32 位类型具有 none.