大矩阵乘法大小的恒定输出
Constant output for large Matrix Multiplication sizes
我正在为 GPU 实现矩阵乘法代码,矩阵数据类型是浮点数,而且大小非常大。因此,对于大尺寸矩阵,我得到一个常数值 2,147,483,648,即 2^31。
我知道这是 float 的最大范围,但是有什么方法可以增加我的输出范围以获得正确的矩阵乘法答案而不更改数据类型?
所以,这是我犯的一个基本错误,它将输出矩阵的值限制为 2,147,483,648。
for(int i = 0; i < k; i++)
{
sum += A_gpu[row * k + i] * B_gpu[i * m + col];
}
C_gpu[row * m + col] = sum;
这是我的代码的一部分,问题是变量 sum 具有整数数据类型。
我正在为 GPU 实现矩阵乘法代码,矩阵数据类型是浮点数,而且大小非常大。因此,对于大尺寸矩阵,我得到一个常数值 2,147,483,648,即 2^31。 我知道这是 float 的最大范围,但是有什么方法可以增加我的输出范围以获得正确的矩阵乘法答案而不更改数据类型?
所以,这是我犯的一个基本错误,它将输出矩阵的值限制为 2,147,483,648。
for(int i = 0; i < k; i++)
{
sum += A_gpu[row * k + i] * B_gpu[i * m + col];
}
C_gpu[row * m + col] = sum;
这是我的代码的一部分,问题是变量 sum 具有整数数据类型。