提问人:Physician 提问时间:3/5/2023 最后编辑:TylerHPhysician 更新时间:11/15/2023 访问量:125
不同的 CPU 内核是否会对相同的浮点运算给出不同的结果?
Could different CPU cores give different results of the same floating point operation?
问:
在正在运行的程序中,在同一 CPU 上从一个内核切换到另一个内核,是否会产生编码相同浮点算术运算的同一组值和指令的不同结果?
我之所以问这个问题,是因为我有一个程序,它运行的是整数到双倍的固定计算,结果在运行几秒钟后发生了变化,并将新结果保留了几秒钟。结果的变化非常小,但我对此没有任何解释。
- 这是确切的代码。
- 请记住,这是一个使用 winapi 的窗口应用程序。
- 这是一个 HID 输入读数的测试项目。
- 正在测试的数据是 BYTE winapi 类型,它只是一个无符号字符。
- 在向 Windows 的 RawInputAPI 注册后,它会定期从轮询 HID 接收值。
- 它取值从 0 到 255;
- 我所做的只是在 -1.0 到 1.0 范围内将其转换为双倍;
法典:
BYTE& InputValue = DIH_Data.bRawData[2];
int ivalue = 0;
double value = 0.0;
ivalue = InputValue - 128;
value = ((double)ivalue) / 128.0;
OutputDebugString(std::to_wstring(value).c_str());
OutputDebugString(L"\n");
结果:
- 所有读数都非常一致,符合预期;
- 但是,我有以下两个结果:
- 第一读数:0.648430
- 其他读数:0.648438
- 这些似乎都来自255个输入值中的83个。我不知道为什么他们有不同的读数。
答: 暂无答案
评论