我在win32环境中运行C++优化程序。该程序使用FFTW和pthreads的预建DLL。非常大的浮点数会导致非确定性吗?
最近,程序改变的方式是它可能会遇到非常大的数字,并可能是无穷大。在这个变化之后,这个精简而健壮的系统开始产生奇怪的症状 - 最显着的是它在不同的运行中产生了不同的数值结果(在同一台计算机上,具有相同的二进制),甚至在这里和那里增加了printf或虚拟分配从根本上改变了行为。
我仔细检查了每个可能的缓冲区溢出,内存分配,线程问题(我现在将线程池大小减少到1),堆栈大小,但经过几周的搜索后,我什么也没找到。在改变之前,程序没有非确定性或稳定性问题,它经常运行好几天。
我不知道问题可能出在FFTW模块吗?或者这种浮点不稳定性可能源于大数?
只有当您使用大量数字时它才会发生这种行为,并且在以前范围中的数字提供时它仍然运行精益和健壮?或者确定性行为完全改变,无论你实际使用什么数字? – 2012-03-15 22:14:11