同一个浮点运算,不同的CPU内核会给出不同的结果吗?

问题描述 投票:0回答:0

我的问题非常简单明了。

在一个正在运行的程序中,在同一个 CPU 上从一个内核切换到另一个内核,是否会导致编码相同浮点算术运算的同一组值和指令的不同结果?

我问这个是因为我有一个程序运行整数加倍固定计算,运行几秒钟后结果发生变化,新结果也保持几秒钟。结果的变化非常小,但我对此没有任何解释。

编辑:

  • 这是准确的代码。
  • 请记住,这是一个使用 winapi 的窗口应用程序。
  • HID输入读数测试项目
  • 测试的数据是BYTE winapi类型,只是一个unsigned char。
  • 在 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 的输入值。为什么他们有不同的读数我不知道。
multithreading floating-point core
© www.soinside.com 2019 - 2024. All rights reserved.