Parallel processing 如何处理聚合中出现的浮点错误

Parallel processing 如何处理聚合中出现的浮点错误,parallel-processing,floating-accuracy,Parallel Processing,Floating Accuracy,我使用的是一个系统,它在两种模式下对大量数据进行操作。在第一种模式中,系统通过简单地对数字进行迭代并将其添加到运行总数中来聚合这些数字。在第二种模式中,系统并行处理这项工作,其结果是通过首先创建多个小计,然后将这些小计相加来计算相同的总数 这是系统的简化,但这是我问题的核心。由于小计汇总,最终结果有时会显示非常小的差异。我只能猜测这是因为浮点错误的累积 这两种模式的存在是因为不可能使用并行模式在该系统中运行所有“计算”,因此为了向后兼容,线性模式必须继续存在。如果可能的话,使用第二种模式应该会更

我使用的是一个系统,它在两种模式下对大量数据进行操作。在第一种模式中,系统通过简单地对数字进行迭代并将其添加到运行总数中来聚合这些数字。在第二种模式中,系统并行处理这项工作,其结果是通过首先创建多个小计,然后将这些小计相加来计算相同的总数

这是系统的简化,但这是我问题的核心。由于小计汇总,最终结果有时会显示非常小的差异。我只能猜测这是因为浮点错误的累积

这两种模式的存在是因为不可能使用并行模式在该系统中运行所有“计算”,因此为了向后兼容,线性模式必须继续存在。如果可能的话,使用第二种模式应该会更快,但是由于上述问题,用户可能会看到差异

我的问题是,这个问题是否只是固有的,必须接受还是拒绝整个解决方案,或者是否可以通过以不同的方式处理小计汇总问题来缓解这个问题


如果需要更多细节,请告诉我!谢谢您的时间。

有一种算法可以对一组浮点值进行精确求和,这是著名的。如果使用此算法计算线性模式和并行模式,这两种模式将显示完全相同的总数:它们都将计算值集的精确和

此算法需要动态分配,根据您的上下文可能不合适,但根据您提供的信息,这是我看到的唯一解决方案。如果降低精度是可以接受的,则可能采用其他方法(一个明显的方法是将所有值转换为定点,然后再将其包含到总和中。定点加法与浮点加法不同,是关联的)