【发布时间】:2018-11-05 23:28:49
【问题描述】:
我正在为 GPU 实现一个矩阵乘法代码,矩阵数据类型是浮点数并且大小非常大。因此,对于大尺寸的矩阵,我得到一个常数值 2,147,483,648,即 2^31。 我知道这是浮点数的最大范围,但是有什么方法可以增加输出范围以获得正确的矩阵乘法答案而不更改数据类型?
【问题讨论】:
-
好吧,我很惊讶 Nvidia 提供的 CUBLAS SGEMM 之类的 Api 如何通过采用单精度浮点输入并提供单精度浮点输出来在更大范围内执行矩阵乘法运算。
-
你能重新调整矩阵的单位,只牺牲精度吗?
-
2^31 不是 float32 类型的“最大范围”,它是 (2 − 2^−23) × 2^127。无论您的问题是什么,都与类型无关。
-
建议:不要实现自己的矩阵 mul,使用 cublas。为了表现这场比赛,你总是会输...
标签: matrix cuda floating-point matrix-multiplication