便携式 RNG 状态: 关于 Philox 吞吐量问题的测量结果,参见 #12485
作者: sinhaparth5创建于 2026年8月28日更新于 2026年8月28日
#12459 仍然处于开放状态。在 Linux 上训练的 Booster 无法在 Windows 上解析,因为 `Context::rng_` 是一个 `std::mt19937`,其序列化形式在标准库中是不可移植的。libstdc++ 写入 624 个原始单词以及一个位置;libc++ 和 MSVC STL 写入 624 个旋转单词,没有任何单词。Windows 在 Linux 检查点上失败,macOS 加载了一个结构上有效但旋转的状态,并默默失败。我为此打开了 #12485,并在审查后关闭了它。其中的三个点中,有两个显然是正确的:`SerializableRandomEngine` 包装器是不必要的,因为 Philox 的流运算符是明确定义的,并且在乘法中存在效率低下。第三个,"此处的性能是 mt 的 1/10", 我无法重现,并且由于该方法被放弃,我去了并正确地测量了它,而不是断言相反。原始数据和桥接器: https://GitHub.com/sinhaparth5/xgboost/tree/philox-multiply-probe/ci_probe
内容来源: dmlc/xgboost