- 主题:最近用一个数值计算的库,Debug版和Release版本计算出的结果差
最开始怀疑是“Floating Point Model”的问题,但是发现Debug和Release版本都是"Precise (/fp:precise)"。
后来尝试把Release的优化关掉,结果就一致了,但是Release版本关掉优化并不是一个解决方案。
库是Eigen,一直把它当作黑盒子用,实现也比较复杂,没精力深入进去debug
--
FROM 223.70.159.*
第三方开源库是这样的,总是或多或少的埋着雷
--
FROM 222.129.131.*
float都提升精度到double试试?
【 在 iamrzd 的大作中提到: 】
: 最开始怀疑是“Floating Point Model”的问题,但是发现Debug和Release版 ...
--
FROM 117.128.4.*
浮点数不满足加减法的结合律,所以优化一下可能结果就不同了。
想要结果一致就需要上汇编。
EIGEN 这样的头文件的库就比较容易出这个问题。那种传统的库就没事。因为他们基本只提供release的版本。。。
即使你是debug版的程序也是要求你链接他们release模式的库。
【 在 iamrzd 的大作中提到: 】
: 最开始怀疑是“Floating Point Model”的问题,但是发现Debug和Release版本都是"Precise (/fp:precise)"。
: 后来尝试把Release的优化关掉,结果就一致了,但是Release版本关掉优化并不是一个解决方案。
: 库是Eigen,一直把它当作黑盒子用,实现也比较复杂,没精力深入进去debug
--
FROM 43.224.44.*
你是指一个编译选项?我用VS2015,没发现这个编译选项。
内部都是用double型在运算。
【 在 Akyrum 的大作中提到: 】
: float都提升精度到double试试?
--
FROM 223.72.43.*
这么庞大的库,学会怎么用已费劲了,还要进去debug,想想都头大
【 在 dormouseBHU 的大作中提到: 】
: 浮点数不满足加减法的结合律,所以优化一下可能结果就不同了。
: 想要结果一致就需要上汇编。
: EIGEN 这样的头文件的库就比较容易出这个问题。那种传统的库就没事。因为他们基本只提供release的版本。。。
: ...................
--
FROM 223.72.43.*
只要精度满足要求,rel和debug的结果不一样也没什么问题吧。。。
本来计算机算的就是个近似解,没必要要求必须完全相同
【 在 iamrzd 的大作中提到: 】
: 这么庞大的库,学会怎么用已费劲了,还要进去debug,想想都头大
:
--
FROM 123.113.229.*
结果差别很大。是L-M拟合算法,可能就是因为局部的微小差别引起的最终结果差别明显
【 在 dormouseBHU 的大作中提到: 】
: 只要精度满足要求,rel和debug的结果不一样也没什么问题吧。。。
: 本来计算机算的就是个近似解,没必要要求必须完全相同
: 【 在 iamrzd 的大作中提到: 】
: ...................
--来自微微水木3.5.14
--
FROM 223.72.43.*
哈,你也遇到了。。我这边虽然都用的release,不同电脑上的结果也会有些差别。。控制迭代收敛的误差窗跟浮点数误差搅一起了
【 在 iamrzd 的大作中提到: 】
: 结果差别很大。是L-M拟合算法,可能就是因为局部的微小差别引起的最终结果差别明显
:
: --来自微微水木3.5.14
发自「快看水母 于 22041216C」
--
FROM 101.93.40.*
对精度这么敏感,long double试试?就是慢多了
【 在 iamrzd 的大作中提到: 】
: 结果差别很大。是L-M拟合算法,可能就是因为局部的微小差别引起的最终结果差别明显
: --来自微微水木3.5.14
--
FROM 111.197.238.61