两个随机产生的float矩阵,在Win32平台上进行乘法操作,分别使用:
1. cublas Sgemm
2. eigen library
3. 自己写的cpu 的MATMUL code
3种方法所得结果均有细微差别,体现在内存上的差据大约是每个float的 32位(4个byte )中,负责小数位的后23位中的最后2~3位不同。
后又用相同随机数种子生成double矩阵,使用eigen和自己的code在CPU上运算,所得结果(只看前内存上小数位的前23位)又与前三种方法得到的结果不同。
想知道具体什么原因,是因为运算顺序不同还是其他原因。能否告知确切原因,最好有办法可以试验证明。如果有遇到相同问题的朋友,希望可以一起交流讨论。
谢谢。
|