搜索

pdf文档 Cross-Platform Floating-Point Determinism Out of the Box

3.88 MB 31 页 0 下载 54 浏览 0 评论 0 收藏
所属分类: 后端开发 / C++
语言 格式 评分
英语
.pdf
3
摘要
The document explores the challenges and solutions for achieving cross-platform floating-point determinism in software development. It highlights the importance of deterministic floating-point behavior for applications like games and simulations, and discusses earlier attempts and failures in this domain. The authors propose a solution that allows mixing deterministic and non-deterministic code within a single executable, offering different performance vs. guarantees options. The document also provides performance benchmarks for various approaches and highlights the significant performance impact of enforcing determinism.
AI总结
### 文档总结 #### 1. **浮点数确定性的重要性** - **同一可执行文件的确定性**:确保程序在相同条件下运行时结果一致,用于测试和调试。 - **跨平台一致性**:支持分布式模拟、游戏(尤其是RTS)和网络同步。 - **算法正确性**:避免计算误差(如 catastrophic cancellations),确保算法可靠性。 #### 2. **研究背景** - 作者团队来自 Six Impossible Things Before Breakfast Limited,致力于实现跨平台浮点数确定性。 - 项目目标:提供“开箱即用”的解决方案,支持主流C++编译器(如GCC、MSVC、Apple Clang),兼容现代CPU架构(如x64、ARM64、RISC-V)。 - 核心挑战:解决CPU、编译器和数学库带来的非确定性问题。 #### 3. **技术实现** - 通过多种实现方式(如共享库、静态库、软浮点、内联汇编)实现确定性。 - 针对不同平台(如RISC-V)进行优化。 - 提供性能与确定性之间的灵活选项,允许混合使用确定性和非确定性代码。 #### 4. **性能测试** - 使用dmath和几何测试,对比不同实现方式的性能: - `ieee_float_soft`:性能最低,但保证确定性。 - `ieee_float_inline_asm`:性能接近原生,同时保证确定性。 - `ieee_float_shared_lib` 和 `ieee_float_static_lib`:性能介于两者之间。 - 测试结果显示,性能损失显著,但可以通过选择合适的实现方式平衡性能与确定性需求。 #### 5. **主要结论** - 浮点数确定性在跨平台应用中至关重要,但实现难度较高。 - 通过优化数学库和编译器行为,结合多种实现方式,可以在一定程度上实现跨平台确定性。 - 性能与确定性之间存在权衡,需根据具体需求选择合适的实现方案。 #### 6. **未来工作** - 进一步优化性能,减少确定性实现的性能损失。 - 探索更多平台和架构的支持。 - 提供更灵活的配置选项,满足不同场景的需求。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 19 页请下载阅读 -
文档评分
请文明评论,理性发言.